info8995 님의 블로그

데이터 입출력 구현2 본문

TIL(Today I Learned)/정처기 실기

데이터 입출력 구현2

info8995 2025. 3. 25. 15:08

📌 트랜잭션 (Transaction)

정의: 논리적 기능을 수행하기 위한 작업 단위

🔹 트랜잭션의 4가지 특성 (ACID)

특성 설명
Atomicity (원자성) 모두 반영되거나 전혀 반영되지 않아야 함
Consistency (일관성) 트랜잭션 완료 후 일관성 있는 상태 유지
Isolation (고립성) 다른 트랜잭션의 간섭 없이 독립적으로 실행
Durability (지속성) 시스템 장애 후에도 결과가 영구적으로 보존

📌 CRUD 분석

  • CRUD: Create, Read, Update, Delete
  • 용도: 프로세스와 테이블 간 관계를 매트릭스로 구성하여 트랜잭션을 분석

📌 인덱스(Index)

정의: 데이터 검색 성능을 높이기 위한 구조 (키값 + 포인터)

🔹 인덱스 종류

  • 트리기반 인덱스 : 일반적으로 B-트리나 B+트리 구조를 사용하여 데이터를 정렬하고 검색 속도를 높이는 인덱스입니다. 범위 검색에 유리합니다.
  • 비트맵 인덱스 : 각 값에 대해 비트맵을 사용하여 데이터를 인덱싱합니다. 주로 카디널리티가 낮은 열에 사용되며, 복잡한 쿼리에서 성능을 향상시킬 수 있습니다.
  • 함수 기반 인덱스 : 특정 함수의 결과를 기반으로 인덱스를 생성합니다. 예를 들어, 특정 열의 값을 변환한 결과를 인덱싱하여 검색 성능을 높일 수 있습니다.
  • 비트맵 조인 인덱스 : 여러 테이블 간의 조인 결과를 비트맵으로 저장하여 조인 성능을 향상시키는 인덱스입니다. 주로 데이터 웨어하우스 환경에서 사용됩니다.
  • 도메인 인덱스 : 특정 데이터 유형이나 도메인에 특화된 인덱스입니다. 예를 들어, 텍스트 검색이나 공간 데이터에 최적화된 인덱스를 만들 수 있습니다.

📌 뷰(View)

정의: 기본 테이블로부터 유도된 가상 테이블

🔹 장점

  • 논리적 독립성 제공
  • 사용자 맞춤 데이터 제공
  • 보안 강화

🔹 단점

  • 인덱스 불가
  • 삽입, 갱신 제약
  • 정의 변경 불가

📌 클러스터 / 파티션

🔹 클러스터

  • 동일한 성격의 데이터를 같은 블록에 저장

🔹 파티션

  • 큰 테이블을 분할하여 저장
  • 장점: 성능 향상, 백업 속도 증가, 고가용성
  • 단점: 관리 복잡, 조인 비용 증가

🔹 파티션 종류

  • 범위 분할 (Range) : 데이터의 특정 범위에 따라 파티션을 나누는 방법입니다. 예를 들어, 날짜나 숫자 범위를 기준으로 데이터를 분할할 수 있습니다. 이렇게 하면 특정 범위의 데이터를 빠르게 검색할 수 있습니다.
  • 해시 분할 (Hash) : 해시 함수를 사용하여 데이터를 파티션에 분배하는 방법입니다. 특정 열의 값을 해시하여 그 결과에 따라 데이터를 여러 파티션에 분산시킵니다. 이 방법은 데이터가 고르게 분포되도록 도와줍니다.
  • 조합 분할 (Composite) : 범위 분할과 해시 분할을 결합한 방법입니다. 먼저 범위에 따라 데이터를 나눈 후, 각 범위 내에서 해시 분할을 적용합니다. 이 방식은 복잡한 데이터 분포를 효과적으로 관리할 수 있습니다.

📌 클러스터링

  • 고가용성 클러스터링: 장애 시 다른 서버가 처리
  • 병렬 처리 클러스터링: 작업을 여러 서버에 분산

📌 RTO / RPO

  • RTO (복구 시간 목표): 장애 복구까지 걸리는 시간
  • RPO (복구 시점 목표): 데이터 복구 시점

📌 암호화

  • 개념: 평문을 암호문으로 변환
  • 방식:
    • 개인키 방식 (대칭키)
    • 공개키 방식 (비대칭키)

1. 개인키 방식 (대칭키 암호화)

  • 정의: 암호화와 복호화에 동일한 키 사용
  • 사용 예: AES, DES, 3DES 등

🔹 장점

  • 속도가 빠름
  • 구현이 간단함

🔸 단점

  • 키 전달 시 보안 위험 존재
  • 키가 유출되면 전체 보안 무력화
  • 키 관리 어려움 (특히 사용자 많을수록 복잡)

2. 공개키 방식 (비대칭키 암호화)

  • 정의: 공개키와 개인키라는 서로 다른 두 키 사용
    • 공개키: 누구나 알 수 있음
    • 개인키: 소유자만 보관
  • 사용 예: RSA, ECC 등

🔹 장점

  • 키를 안전하게 공유 가능
  • 보안성이 높음 (개인키만 잘 관리하면 안전)

🔸 단점

  • 속도가 느림
  • 연산이 복잡 (자원 많이 소모)

🔁 요약 비교표

구분 개인키 방식 (대칭키) 공개키 방식 (비대칭키)
키 종류 1개 (같은 키) 2개 (공개키 + 개인키)
속도 빠름 느림
구현 간단 복잡
키 공유 위험 안전
대표 알고리즘 AES, DES RSA, ECC

📌 접근 통제

정보 흐름 제한을 통해 보안을 확보

🔹 접근 통제 유형

  • DAC: 사용자 중심, 소유자 설정
  • MAC: 시스템 중심, 등급 기준
  • RBAC: 역할 기반 접근 제어

🔹 보안 모델

  • 기밀성 모델: 군사용, 정보 보호 중심
  • 무결성 모델: 정보 변경 방지
  • 접근 통제 모델: 접근 행렬 등 사용

📌 데이터베이스 백업과 복구

🔹 로그 파일

  • 모든 변경 내용 시간순 기록

🔹 복구 알고리즘

방식 설명
No-UNDO/REDO 비동기 갱신 시 사용
UNDO/No-REDO 동기 갱신, 롤백만 필요
UNDO/REDO 변경 내용 롤백 & 재실행
No-UNDO/No-REDO 실시간 기록된 경우

📌 스토리지 구조

종류 설명
DAS 서버와 저장장치를 직접 연결
NAS 네트워크 통해 공유 저장
SAN 전용 네트워크 구성 (DAS + NAS 장점 조합)

📌 자료구조

🔹 선형 구조

  • 배열, 스택, 큐, 데크, 선형 리스트

🔹 비선형 구조

  • 트리, 그래프

🔹 연결 리스트

  • 데이터 + 포인터로 구성
  • 기억 공간 효율 낮음

📌 기초 자료구조 설명


구조 설명
스택 후입선출 (LIFO), 오버플로/언더플로 존재
선입선출 (FIFO)
트리 계층 구조, 사이클 없음
그래프 정점 + 간선
  • 방향그래프 최대 간선 수: N(N-1)
  • 무방향: N(N-1)/2

📌 정렬 알고리즘


 

정렬 설명
삽입 정렬 현재 값을 알맞은 위치에 삽입
선택 정렬 가장 작은 값을 선택해 앞으로 이동
버블 정렬 인접한 두 값 비교 후 교환
쉘 정렬 간격을 두고 정렬 후 점차 좁힘
힙 정렬 힙 자료구조 활용
2-Way 합병 정렬 두 그룹 나눈 후 병합
기수 정렬 자릿수 기준으로 정렬 (비교 연산 없음)

※ 본 내용은 starrykss님의 Tistory 글을 참고하여 정리한 것입니다.

'TIL(Today I Learned) > 정처기 실기' 카테고리의 다른 글

정처기 실기 코딩문  (0) 2025.05.20
서버프로그램 구현2  (0) 2025.03.28
서버프로그램 구현  (0) 2025.03.27
정처기 통합구현  (0) 2025.03.26
데이터 입출력 구현1  (0) 2025.03.24