데이터베이스 종류와 인덱스

임찬형·2022년 7월 11일
0

CS 공부

목록 보기
14/19

관계형 데이터베이스

행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스.
SQL 언어를 이용해 조작함.
MySQL, PostgreSQL, 오라클 등

  • MySQL
    가장 많이 사용하는 데이터베이스.
    C, C++로 만들어졌으며 B-트리 기반 인덱스, 스레드 기반 메모리 할당, 빠른 조인 속도, 최대 64개의 인덱스 등.

NoSQL 데이터베이스

SQL을 사용하지 않는 데이터베이스.
MongoDB, redis 등

  • MongoDB
    Json을 통해 데이터에 접근, BSON (Binary Json) 형태로 데이터를 저장.
    확장성이 뛰어나며 빅데이터 저장할 때 성능 좋고, 스키마 없이 삽입 가능해 분석 및 로깅에 장점.

  • redis
    문자열을 기본 데이터 타입으로 지정(최대 512MB)하며 Set, Hash 등 지원.

인덱스

데이터를 빠르게 찾을 수 있는 하나의 장치.

B-트리

루트 노드, 리프 노드, 그리고 루트와 리프 사이의 브랜치 노드로 구성.
정렬된 값을 기반으로 트리 탐색.

탐색하고 싶은 데이터가 들어오면 맨 위 루트 노드부터 탐색이 일어나고 브랜치 노드를 거쳐 리프 노드까지 도착.

+) B+ 트리와의 차이점
B- 트리는 브랜치 노드에 Key와 데이터를 모두 넣을 수 있다.
B+ 트리는 브랜치 노드에는 Key만 있고 리프 노드에만 데이터가 존재한다. 또한 리프 노드의 데이터는 LinkedList로 연결되어 있다.

B+ 트리의 장점: 브랜치 노드에는 데이터가 없으므로 Key를 담을 메모리를 더욱 확보할 수 있다. 또한 리프 노드만 선형탐색 하므로 풀 스캔 시 더 빠르다. (검색 속도는 약간 느릴 수 있음)

인덱스의 장점

대수확장성: 트리 깊이가 리프 노드의 수에 비해 매우 느리게 성장. 트리의 깊이가 한 깊이씩 증가하면 최대 인덱스 항목의 수는 4배씩 늘어남.

인덱스 최적화 기법

  1. 인덱스 비용
    • 인덱스는 인덱스 리스트, 컬렉션 순으로 2회 탐색함.
    • 컬렉션이 수정된 경우 인덱스도 수정되어야 함.
    • 트리 높이를 조절하고 데이터를 분산시키는 비용
  2. 테스팅 비용
  3. 복합 인덱스 생성
    • 여러 필드 기반 조회 시 생성 순서
    • == 또는 equal 연산 > 정렬 > 다중 값 > 카디널리티(유니크 정도)

0개의 댓글