이번에는 데이터베이스의 종류에 대해서 정리해보고자 한다.
1. 관계형 데이터베이스
2. NoSQL 데이터베이스
1. 관계형 데이터베이스(RDBMS)
- 행과 열을 가지는 표 형식 데이터를 저장
- SQL이라는 언어를 써서 조작
- MySQL(SQL 사용), PostgreSQL, Oracle(PL/SQL 사용), SQL Server(T-SQL 사용), MSSQL 등
- 운영체제와 호환여부를 판단해야 함.
PostgreSQL
- VACCUM(디스크 조작이 차지하는 영역을 회수 가능)
- 최대 테이블 312TB
- JSON으로 쿼리처리 허용
- 지정 시간에 복구하는 기능
- 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등의 기능을 제공
MySQL
특징
- 대부분의 운영체제와 호환
- C, C++ 기반
- MyISAM 인덱스 압축 기술
- B-트리 기반의 인덱스
- 스레드 기반의 메모리 할당 시스템
- 매우 빠른 조인
- 최대 64개의 인덱스 제공
- 대용량 데이터를 위해 설계
- 롤백, 커밋, 이중 암호 지원 보안 제공
- 쿼리 캐시를 지원, 입력된 커리 문에 대한 전체 결과 집한을 저장하여 속도 향상 (구문분석, 최적화, 실행 생략)
아키텍쳐
- MySQL Connectors : 어플리케이션과의 연결 (JDBC(Spring), Node.js, C++, Python, PHP, Ruby 등)
- MySQL Shell
- MySQL Server Process
- NoSQL
- SQL Interface
- Parser
- Optimizer
- Cahces and Buffers : Global and Storage Engines and Buffers
- Storage Engines : 모듈식 아키텍쳐로 쉽게 스토리지 엔진을 바꿀 수 있으며 데이터 웨어하우싱, 트랜잭션 처리, 고가용성 처리
- InnoDB
- MyISAM
- NDB Cluster
- Memory
- File System : Files and Logs
2. NOSQL
- SQL을 사용하지 않음
- MongoDB, Redis 등
MongoDB
특징
- 기본적으로 하드디스크에 저장
- JSON을 통해 데이터에 접근 가능
- Binary JSON(BJSON) 형태로 데이터가 저장
- 와이어드 타이거 엔진이 기본 스토리지 엔진으로 장착된 키-값 데이터 모델에서 확정한 도큐먼트 기반의 데이터베이스
- 확장성이 뛰어남
- 빅데이터를 저장할 때 성능이 좋다.
- 고가용성과 샤딩, 레플리카셋을 지원
- 스키마를 정해놓지 않고 데이터를 삽입할 수 있기에 다양한 도메인의 데이터베이스를 기반으로 분석, 로깅 구현 가능
- 도큐먼트 생성마다 다른 컬렉션에서 중복된 값을 지니기 힘든 유니크한 값인 ObjectID 생성
ObjectID
- 타임스탬프(4바이트) + 랜덤 값(5바이트) + 카운터(3바이트)
Redis
특징
- 인메모리 데이터베이스(하드디스크가 아닌 주메모리(RAM)에 저장하고 종료시 손실)
- 키-값 데이터 모델 기반의 데이터베이스
- 기본 데이터 타입 : String, 최대 512MB
- 셋, 해시 지원
사용
- pub/sub 기능을 통해 채팅 시스템에 사용
- 다른 데이터베이스 앞단에 두어 사용하는 캐싱 계층에 사용
- 단순한 키-값이 필요한 세션 정보 관리에 사용
- 정렬된 셋 자료 구조를 이용한 실시간 순위표 서비스에 사용 가능
'CS Knowledge > DataBase' 카테고리의 다른 글
DataBase - Join (0) | 2023.04.27 |
---|---|
DataBase - Index (0) | 2023.04.26 |
DataBase - Transaction and Integrity (0) | 2023.04.25 |
DataBase - ERD, 정규화 (0) | 2023.04.05 |
DataBase - Basic (0) | 2023.04.02 |