행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스. SQL이라는 언어를 사용하여 조작.
(ex. MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등)
관계형 데이터베이스는 표준 SQL을 지키지만 각각의 제품에 특화시킨 SQL 사용.
(오라클 → PL/SQL, SQL Server → T-SQ, MySQL → SQL 사용)
대부분의 운영체제와 호환. 현재 가장 많이 사용하는 데이터베이스. C, C++로 만들어져 B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스 제공.
대용량 데이터베이스를 위해 설계됨. 롤백, 커밋, 이중 암호 지원 보안 등의 기능 제공하며 많은 서비스에서 사용.
MySQL 다음으로 개발자들이 선호하는 데이터베이스.
디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACCUM이 특징. SQL 뿐만 아니라 JSON을 이용해 데이터 접근 가능. 지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등 가능.
Not Only SQL이란 슬로근에서 생격난 데이터베이스. SQL 사용하지 않는 데이터베이스. (ex. MongoDB, redis)
데이터를 빠르게 찾을 수 있는 하나의 장치. 책으로치면 마지막 장 찾아보기 페이지 같은 기능. '항목'을 통해 원하는 내용을 빠르게 찾을 수 있음. 이처럼 인덱스를 설정하여 테이블에서 찾고자하는 데이터를 빠르게 찾을 수 있음.
인덱스는 보통 B-트리라는 자료 구조로 형성됨.
루트 노드(아래 그림의 7, 16), 리프 노드(1,2,5,6), 브랜치 노드(루트 노드와 리프 노드 사이의 노드)로 나뉨.
전산학에서 B-트리(B-tree)는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다.
방대한 양의 저장된 자료를 검색해야 하는 경우 검색어와 자료를 일일이 비교하는 방식은 비효율적이다. B-트리는 자료를 정렬된 상태로 보관하고, 삽입 및 삭제를 대수 시간으로 할 수 있다.
https://ko.wikipedia.org/wiki/B_%ED%8A%B8%EB%A6%AC
효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문.
대수확장성
: 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 의미.
기본적으로 인덱스가 한 깊이씩 증가할 때마다 최대 인덱스 하목의 수는 4배씩 증가.
[MySQL]
클러스터형 인덱스와 세컨더리 인덱스가 있음. 클러스터형 인덱스는 테이블당 하나를 설정 가능. 프라이머리 키 옵션으로 기본키로 만들면 클러스터형 인덱스를 생성 가능. 기본키로 만들지 않고 unique not null 옵션으로 클러스터형 인덱스 만들 수 있음.
[MongoDB]
문서를 만들면 자동으로 ObjectID가 형성됨. 해당 키가 기본키로 설정되며, 세컨더리키도 부가적으로 설정해서 기본키와 세컨더리키를 같이 쓰는 복합 인덱스 설정 가능.
면접을 위한 cs 전공지식 노트 (주홍철 지음, 출판사 길벗)
https://songsunkite.tistory.com/211