Tech Log

[DataBase] 데이터베이스의 종류 본문

Computer Science/DataBase

[DataBase] 데이터베이스의 종류

yuhee kim 2023. 2. 25. 07:56

데이터베이스에는 여러 종류가 있다.

관계형 데이터베이스와 NoSQL 데이터베이스로 나뉜다.

먼저 우리가 익히 알고있는 관계형 데이터베이스에 대해서 다뤄보자.

 

관계형 데이터베이스(RDBMS)

행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 말한다.

SQL이라는 언어를 써서 조작한다.

 

MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있다.

 

표준 SQL을 지키기는 하지만, 각각의 제품에 특화시킨 SQL을 사용한다.

예를 들어 오라클의 경우 PL/SQL이라고 하는 SQL을 사용하고

SQL Server에서는 T-SQL,

MySQL은 SQL을 사용한다.

 

MySQL

대부분의 운영체제와 호환되며 가장 많이 사용하는 데이터베이스이다.

메타, 트위터 등 많은 기업에서 사용하고 있다.

 

C,C++로 만들어졌다.

MyISAM 인덱스 압축 기술을 사용한다.

*MyISAM 압축 기술 : 테이블의 각 열들을 따로 압축하는 기술. 자세한 내용은 여기서 읽을 수 있다(MySQL 공식 문서)

 

B-트리 기반의 인덱스를 사용하며

스레드 기반의 메모리 할당 시스템을 사용한다.

매우 빠른 조인 속도를 가진다.

최대 64개의 인덱스를 제공한다.

대용량 데이터베이스를 위해 설계돼 있고 

롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공한다.

 

출처 : 면접을 위한 CS 전공지식 노트(2022)

MySQL의 스토리지 엔진 아키텍처는 위 그림과 같다.

데이터베이스의 심장과도 같은 역할을 하는 곳이 스토리지 엔진이다.

*스토리지 엔진(storage engine) : 서버 엔진이 필요한 데이터를 물리적인 장치에서 가져오는 역할

*서버 엔진 : 클라이언트의 요청을 받고 SQL문들을 처리하는 DB 자체의 기능 역할

 

모듈식 아키텍처로 쉽게 스토리지 엔진을 바꿀 수 있다.

데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점을 두고 있다.

*데이터 웨어하우스 : 사용자 의사결정에 필요한 데이터가 들어가 있는 데이터베이스

 

스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호작용을 할 수 있다.

 

MySQL은 쿼리 캐시를 지원해서 입력된 쿼리 문에 대한 전체 결과 집합을 저장한다.

*쿼리 캐시 : 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석 최적화 및 실행을 건너뛰고 캐시의 출력만 표시한다.

 

PostgreSQL

디스크 조작이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징이다.

최대 테이블의 크기는 32TB이며

SQL뿐만 아니라 JSON을 사용하여 데이터에 접근할 수 있다.

 

지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등을 할 수 있다.

 

NoSQL 데이터베이스

NoSQL(Not only SQL)이라는 말에서 생겨난 데이터베이스이다.

SQL을 사용하지 않는 데이터베이스를 말한다.

 

대표적으로 MongoDB와 redis가 있다.

 

MongoDB

JSON을 통해 데이터에 접근할 수 있다.

Binary JSON(BSON) 형태로 데이터가 저장된다.

와이어드타이거 엔진이 기본 스토리지 엔진으로 장착되었으며

키-값 데이터 모델에서 확장된 도큐먼트 기반의 데이터베이스이다.

 

확장성이 뛰어나며 빅데이터를 저장할 때 성능이 좋다.

고가용성과 샤딩, 레플리카셋을 지원한다.

*샤딩 : 데이터를 분산하여 저장하는 개념

*레플리카셋 : 여러 개의 동일한 데이터베이스를 만들어서 데이터를 백업해두는 방식. 여러 서버에서 데이터베이스 서버를 분산하고 관리하는 구조.

 

스키마를 정해놓지 않고 데이터를 삽입할 수 있다.

따라서 다양한 도메인의 데이터베이스를 기반으로 분석하거나 로깅 등을 구현할 때 강점을 보인다.

 

출처 : 면접을 위한 CS 전공지식 노트(2022)

도큐먼트를 생성할 때마다 다른 컬렉션에서 중복된 값을 지니기 힘든 유니크한 값인 ObjectID가 생성된다.

ObjectID는 기본키로 유닉스 시간 기반의 타임스탬프(4바이트), 랜덤 값(5바이트), 카운터(3바이트)로 이루어져있다.

 

redis

인메모리 데이터베이스.

키 - 값 데이터 모델 기반의 데이터베이스이다.

 

기본적인 데이터 타입은 문자열(string)이다.

이외에도 set, hash 등을 지원한다.

최대 512MB까지 저장할 수 있다.

 

특징

  • 채팅 시스템 : pub/sub 기능을 이용한 채팅 시스템 구현이 가능하다.
    • publish(발행)/subscribe(구독) 방식이란, 특정한 topic에 대하여 이를 구독한 모두에게 메시지를 발행하는 통신 방법이다. 하나의 Client가 메시지를 publish하면 이 topic에 연결되어 있는 다수의 Client가 메시지를 받을 수 있다.
  • 캐싱 계층 : 다른 데이터베이스 앞단에 두어 사용한다.
  • 세션 정보 관리 : 단순한 키 - 값으로 세션 정보 관리가 가능하다.
  • 실시간 순위표 서비스 : 정렬된 셋(sorted set) 자료 구조를 랭킹 기능 구현에 사용할 수 있다.
    • sorted set을 사용하면 값을 비교하여 정렬을 해주어 랭킹 기능을 구현할 수 있다.

 

참조

 

'Computer Science > DataBase' 카테고리의 다른 글

[DataBase] 조인(join)  (0) 2023.03.03
[DataBase] 인덱스  (0) 2023.02.25
[DataBase] 트랜잭션  (0) 2023.02.18
[DataBase] 정규화(Normalization)  (0) 2023.02.18
[DataBase] ERD(Entity Relationship Diagram)  (0) 2023.02.17
Comments