'취준' 카테고리의 다른 글
금호타이어 SCM 시스템 개발 면접 후기 (0) | 2025.04.10 |
---|---|
SK 엠앤서비스 채용연계형 인턴십 합격 후기 (0) | 2025.03.21 |
SSAFY 11기 합격 후기(전공자) (4) | 2023.12.23 |
신한투자증권 프로 아카데미 3기 후기[합격] (0) | 2023.12.13 |
금호타이어 SCM 시스템 개발 면접 후기 (0) | 2025.04.10 |
---|---|
SK 엠앤서비스 채용연계형 인턴십 합격 후기 (0) | 2025.03.21 |
SSAFY 11기 합격 후기(전공자) (4) | 2023.12.23 |
신한투자증권 프로 아카데미 3기 후기[합격] (0) | 2023.12.13 |
추가 예정
BGF 리테일 1차 면접 후기 (0) | 2025.04.10 |
---|---|
SK 엠앤서비스 채용연계형 인턴십 합격 후기 (0) | 2025.03.21 |
SSAFY 11기 합격 후기(전공자) (4) | 2023.12.23 |
신한투자증권 프로 아카데미 3기 후기[합격] (0) | 2023.12.13 |
B-tree, B+tree (0) | 2025.04.10 |
---|---|
데이터베이스 설계 (0) | 2025.04.07 |
데이터베이스 정의 (0) | 2025.04.07 |
- 리프 노드들의 레벨 차이가 최대 1레벨까지만 나는 트리, 검색할 때 O(logN) 시간 복잡도 유지(균형이 깨지면 별도 로직을 통해 다시 균형 유지)
- B-tree 처음 생성 당시에는 균형 트리이지만, 테이블 갱신(INSERT, UPDATE, DELETE)의 반복을 통해 서서히 균형이 꺠지고, 성능도 약화된다.
- 어느 정도 자동으로 균형을 회복하는 기능이 있지만, 갱신 빈도가 높은 테이블에 작성되는 인덱스 같은 경우 인덱스 재구성을 해서 트리의 균형을 되찾는 작업이 필요하다.
- AVL 트리, 레드 블랙 트리, B-tree, B+tree 등에서 사용
- 데어베이스 인덱스, 파일 시스템, 파일 시스템 캐시 등에서 널리 사용되는 트리 자료구조
- 이진 트리의 확장, 하나의 노트에 자식 2개 이상
- 내부 노드에 key와 data를 담을 수 있다.
풀 스캔이 테이블 크키에 비례하는 형태로 실행 시간이 늘어가는 데에 비해 인덱스를 사용할 경우 실행 시간의 저하는 보통 원만한 곡선을 그리게 된다.
- B-tree를 개선
- 모든 리프 노드들은 Linked 리스트 형태로 이루어진다.
- 실제 데이터는 리프 노드에만 저장, 내부 노드들은 단지 키만 가지고 있고 올바른 리프 노드로 연결해주는 라우팅 기능을 한다.
- B+tree는 중복 키를 가진다. -> 내부 노드들이 데이터를 가지고 있기 때문에 리프 노드들이 키와 데이터를 모두 가지고 있음.
ex) InnoDB에서 사용된 B+tree
- 같은 레벨의 노드끼리는 Double LinkedList 사용
- 자식 노드로는 Single Linked List로 연결
- key의 범위마다 찾아가야할 페이지 넘버(포인터)가 있는데, 해당 페이지 넘버를 통해 곧바로 다음 노드로 넘어감.
- 리프 노드에서 디스크에 존재하는 데이터의 주소값을 구할 수 있고, Linked List를 통해 탐색도 가능
구분 | B-tree | B+tree |
주요 특징 | 모든 내부, 리프 노드들이 데이터를 가진다. | 단지 리프노드만 데이터를 가진다. |
검색 | 자주 access 되는 노드를 루트 노드 가까이 배치할 수 있고, 루트 노드에서 가까울경우, 브랜치 노드에도 데이터가 존재하기 때문에 빠름. | 리프 노드까지 가야 데이터 존재 |
키 중복 | 없음 | 있음 |
트리의 높이 | 높음 | 낮음(한 노드 당 key를 많이 담을 수 있음) |
풀 스캔시, 검색 속도 | 모든 노드 탐색(상대적으로 느림) | 리프 노드에서 선형 탐색(상대적으로 빠름) |
사용 | 데이터베이스, 검색엔진 | 멀티레벨 인덱스, DB 인덱스 |
참고: https://zorba91.tistory.com/293
[MySQL] B-tree, B+tree란? (인덱스와 연관지어서)
B-tree는 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 'B'는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 'Balanced'를 의미하는 'B'가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tr
zorba91.tistory.com
참고: https://github.com/wjdansrl7/2024_CS_STUDY/blob/master/DB/B-tree%2C%20B%2Btree.md
2024_CS_STUDY/DB/B-tree, B+tree.md at master · wjdansrl7/2024_CS_STUDY
SSAFY 11기 CS 스터디. Contribute to wjdansrl7/2024_CS_STUDY development by creating an account on GitHub.
github.com
- 릴레이션은 데이터들을 표(Table)의 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.
순수 관계 연산자
- 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상
- 삽입, 삭제, 갱신 이상
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블
- 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게 있는 것처럼 간주
- 데이터 보정작업, 처리고정 시험 등 임시적인 작업을 위한 용도
- 기본 테이블과 같은 형태의 구조를 가지며, 조작도 기본 테이블과 거의 같다.
- 가상 테이블이기 때문에, 물리적으로 구현되어 있지 않음.
- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고, 명령문이 간단해진다.
- 조인문의 사용을 최소화, 뷰를 통해서만 데이터에 접근할 수 있기에 뷰에 나타나지 않은 데이터를 안전하게 보호할 수 있음
- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능하다.
- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
- 하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 주요 데이터의 액세스를 상호 배타적으로 하는 것
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야 만 그 로킹 단위를 액세스할 수 있도록 하는 기법
로킹 단위
- 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위
- 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만, 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크의 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.
- 논리적으로 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스를 의미한다.
- 자료의 공유성 향상, 분산 제어가 가능, 시스템 성능 향상, 효용성과 융통성이 높음, 신뢰성 및 가용성이 높음
- DBMS가 수행할 기능이 복잡, 데이터베이스 설계가 어려움, 개발 비용이 증가, 처리 비용 증가, 잠재적 오류 발생 증가
이진 트리의 운행법
주요 정렬 알고리즘의 이해
- 탐색 효율이 좋고, 탐색 시간이 적게 소요된다.
- 전체 파일을 두 개의 서브 파일로 분리해 가면서 Key 레코드를 검색하기 때문에 검색회수를 거듭할 떄마다 검색 대상이 되는 데이터의 수가 절반으로 줄어듦.
- 찾고자 하는 Key 값을 파일의 중간 레코드 Key됴 값과 비교하면서 검색한다.
- 중간 레코드 번호 mid = (low + high) / 2
- Hash Table이라는 기억공간을 할당하고, 해시 함수를 이용하여 레코드 키에 대한 Hash Table 내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식
- 검색 속도가 가장 빠르지만, 기억 공간이 많이 요구됨.
- DAM(직접접근방법) 파일을 구성할 때, 해싱이 사용됨
- 삽입, 삭제 작업의 빈도가 많을 때, 유리한 방식
순차 파일 = 순서 파일 -> 자기 테이프(순차 접근)에서 많이 사용
- 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록
- 급여 관리 등과 같이 변동 사항이 크지 않고 기간별로 일괄 처리를 주로 하는 경우에 적합하다.
- 데이터 검색 시 순차 검색하므로 효율이 낮음.
- 새로운 레코드를 삽입, 삭제, 수정하는 경우 파일 전체를 복사해야 하므로 시간이 많이 소요된다.
색인 순차 파일 (Indexed Sequential File) -> 자기 디스크에서 많이 사용
색인 순차 파일의 구성
동시성 제어 (0) | 2025.04.10 |
---|---|
B-tree, B+tree (0) | 2025.04.10 |
데이터베이스 정의 (0) | 2025.04.07 |