데이터베이스의 종류

Ryu·2023년 5월 11일
0

관계형 데이터베이스

관계형 데이터베이스(RDBMS)는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킵니다.
SQL이라는 언어를 써서 조작하며 MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있습니다.

MySQL

MySQL은 대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 오픈 소스 데이터베이스 입니다. C, C++로 만들어졌으며 C, C++ 외에도 JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공합니다.
MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스를 제공합니다. 대용량 데이터베이스를 위해 설계되어있고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공합니다.

MySQL 구조

스토리지 엔진

스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 읽어오는 부분을 담당합니다. 데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점을 두고있습니다.
스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호작용할 수 있습니다.

또한 MySQL은 쿼리 캐시를 지원해서 입력된 쿼리문에 대한 전체 결과 집합을 저장하기 때문에 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석, 최적화 및 실행을 건너뛰고 캐시의 출력만 표시합니다.

장점

  1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.
  2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.
  3. 크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리할 수 있습니다.
  4. 널리 알려진 표준 SQL 형식을 사용합니다.
  5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있습니다.

PostgreSQL

PostgreSQL은 MySQL 다음으로 개발자들이 선호하는 데이터베이스 기술입니다.

디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징입니다. 최대 테이블의 크기는 32TB이며 SQL뿐만 아니라 JSON을 이용해서 데이터에 접근할 수 있습니다.
지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등을 할 수 있습니다.

NoSQL 데이터베이스

NoSQL(Not only SQL)이라는 슬로건에서 생겨난 데이터베이스입니다.
SQL을 사용하지 않는 데이터베이스를 말하며, 대표적으로 MongoDB와 redis 등이 있습니다.

MongoDB

MongoDB는 오픈소스 비관계형 데이터베이스 관리 시스템(DMBS)으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장합니다. JSON을 통해 데이터에 접근할 수 있고, Binary JSON 형태(BJSON)로 데이터가 저장됩니다.

확장성이 뛰어나며 빅데이터를 저장할 때 성능이 좋고 고가용성과 샤딩, 레플리카셋을 지원합니다. 또한, 스키마를 정해놓지 않고 데이터를 삽입할 수 있기 때문에 다양한 도메인의 데이터베이스를 기반으로 분석하거나 로깅 등을 구현할 때 강점을 보입니다.

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

이는 12byte 크기이며 타임스탬프(4바이트), 랜덤 값(5바이트), 카운터(3바이트)로 이루어져 있습니다.

redis

redis는 인메모리 데이터베이스이자 키-값 데이터 모델 기반의 데이터베이스입니다.

기본적인 데이터 타입은 문자열(string)이며 최대 512MB까지 저장할 수 있습니다. 이외에도 set, hash 등을 지원합니다.

pub/sub 기능을 통해 채팅 시스템, 다른 데이터베이스 앞단에 두어 사용하는 캐싱 계층, 단순한 키-값이 필요한 세션 정보 관리, 정렬된 셋(sorted set) 자료 구조를 이용한 실시간 순위표 서비스에 사용합니다.

profile
나는야 머찐 개발자

0개의 댓글