1. 관계형 데이터베이스 (RDBMS)
- 행과 열로 구성된 표 형식 데이터를 저장하는 데이터베이스입니다.
- SQL이라는 언어를 써서 조작할 수 있습니다.
- 관계형 데이터베이스의 종류에는 MySQL, Oracle, PostgreSQL, MSSQL 등이 있습니다.
- 관계형 데이터베이스는 표준 SQL을 지키기는 하지만 각 제품에서 특화시킨 SQL을 사용합니다.
(1) MySQL
- 세계에서 가장 많이 사용되고 있는 오픈소스 관계형 데이터베이스입니다.
- MySQL의 최고 장점은 오픈소스이기 때문에 무료라는 것입니다.
- 문자열 비교에 있어서 대소문자를 구분하지 않습니다. BINARY 설정 등을 이용하면 추가 설정이 가능합니다.
- nested loop join만을 제공한다는 단점이 있습니다. MySQL 8.0.18 릴리스 버전 이후로는 hash join도 제공하게 되었습니다.
nested loop join (중첩 루프 조인)
: 바깥 테이블의 처리 범위를 하나씩 접근하며 추출된 값으로 안쪽 테이블을 조인하는 방법입니다.
중첩 for문과 비슷한 동일한 원리라고 생각하면 됩니다. 비용이 많이 들어서 대용량 테이블에서는 사용하지 않습니다.
hash Join (해시 조인)
: 해시 테이블을 기반으로 조인하는 방법을 말합니다. 2개의 테이블을 조인할 때, 하나의 테이블을 해시 테이블로서 사용합니다.
동등(=) 조인에서만 사용이 가능하고, 테이블의 크기가 너무 크다면 디스크를 사용하는 비용이 증가할 수 있습니다.
(2) Oracle DB
- Oracle 사에서 만든 관계형 데이터베이스입니다.
- MySQL, MSSQL 보다 대용량 정보를 관리할 때 성능이 좋습니다.
- 고성능 트랜잭션 처리를 제공하여 속도가 빠릅니다.
- SQL문을 실행하는 가장 효율적인 방법을 제공합니다. 쿼리비용 최소화를 위해서 테이블 인덱싱 분석을 합니다.
- 과거 시점의 데이터 조회도 가능하고, 커밋 이전의 상태로 되돌릴 수 있는 기능이 존재합니다.
- 메모리를 너무 많이 차지하기 때문에 고사양 장비가 요구된다는 단점이 있습니다.
(3) PostgreSQL
- 다양한 Join 방법을 제공합니다. (nested loop join, hash join, sort merge join)
- update 시에는 기존에 있던 행을 지우고, 변경된 데이터를 가지는 새로운 행을 추가하는 방식을 사용하여 update 성능은 비교적 좋지 않습니다.
- 데이터베이스 클러스터 백업 기능을 제공합니다.
- hot backup과 wal replay를 활용하여 원하는 시점의 데이터 복구가 가능합니다.
- SQL 뿐만 아니라 JSON을 이용해서도 데이터에 접근할 수 있습니다.
sort merge join (정렬 병합 조인)
: 각각의 테이블에서 조인할 필드 기준으로 정렬한 후 조인 작업을 수행하는 조인방법입니다.
hot backup
: 데이터베이스가 실행 중인 상태에서 데이터를 백업받는 방식입니다.
(4) MSSQL
- 마이크로소프트 사에서 사이베이스(Sybase)를 기반으로 개발한 관계형 데이터베이스입니다.
- 윈도우 개발환경에서 DB가 필요할 경우 MSSQL을 사용합니다.
- windows 기반 서버에서만 작동되도록 설계되어 있고, 라이센스 비용이 비싸다는 단점이 있습니다.
- 하지만 우수한 데이터 복구 지원을 제공한다는 장점이 존재합니다.
2. NoSQL 데이터베이스
- SQL를 사용하지 않는 데이터베이스를 말합니다.
- 대표적으로 알려진 NoSQL 데이터베이스는 MongoDB와 Redis가 존재합니다.
(1) MongoDB
- JSON을 통해서 데이터에 접근할 수 있습니다.
- 데이터가 저장될 때는 Binary JSON 형태로 데이터가 저장되며 도큐먼트 기반의 데이터베이스입니다.
- 확장성이 뛰어나고, 빅데이터를 저장할 때 성능이 좋습니다.
- 스키마를 정해 놓지 않고 데이터를 삽입하기 때문에 다양한 도메인의 데이터베이스를 기반으로 분석할 수 있습니다.
- 도큐먼트를 생성할 때마다 다른 컬렉션과 구별하기 위해서 유니크한 ObjectId가 생성됩니다.
(2) Redis
- 인메모리 데이터베이스이며, Key-Value 데이터 모델 기반의 데이터베이스입니다.
- 다른 데이터베이스를 앞단에 두어 사용하는 캐싱 계층으로 사용됩니다.
- 기본적인 데이터 타입은 문자열이며 최대 512MB까지 저장할 수 있습니다. 이외에도 Set과 Hash 등을 지원합니다.
🔗 참고 자료
'📘 Computer Science > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 조인의 원리 (0) | 2023.05.30 |
---|---|
[데이터베이스] 관계와 키 (2) | 2023.05.15 |