개요
데이터베이스를 구축할 때 막연하게 데이터베이스를 써야지라고 하지만 데이터베이스를 관리하는 시스템의 종류도 여러 가지이다.
그렇기 때문에 어떤 걸 내 프로젝트에 써야 할까 항상 고민이 되는데,
그래서 간단하게 여러 데이터베이스 시스템들의 특징과 장단점을 정리해두고 데이터베이스를 선택할 때마다 찾아보는 수고를 줄이기로 하였다.
아 이런 DBMS들이 있구나 정도로 살펴보면 될 것 같다.
나열할 DBMS는 https://db-engines.com/en/ranking 사이트의 상위권에 있는 것들 위주로 할 생각이다.
Oracle
- 미국 오라클(Oracle) 사의 관계형 데이터베이스 관리 시스템(RDBMS)
- 오픈 소스 DBMS가 있음에도 안정성과 유지보수를 보장받을 수 있다는 장점 때문에 비 IT업종 기업에서 많이 사용한다.
특징
- 기업용으로 주로 사용
- 대량의 정보관리를 할 때 타 DBMS에 비해 좋은 성능을 보인다.
- 오라클 자체 SQL 쿼리를 사용해 표준 형식과 약간 다름
MySql
- 관계형 데이터베이스 관리 시스템(RDMS)
- 오픈 소스이며, 다중 사용자와 다중 스레드 지원
특징
- 오픈 소스 라이선스를 따르기 때문에 무료로 사용 가능
- 표준 SQL 형식 사용
- 오픈 소스이기 때문에 기술 지원의 한계가 있음
MS-SQL
- 미국 마이크로스프트에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)
특징
- 분산된 기업환경에서의 집중된 서버 관리 도구 제공
- 데이터베이스 관리 시스템 툴인 MS-SQL 서버 관리 스튜디오의 사용이 매우 편리함
- 마이크로소프트 개발이다 보니 모든 버전의 Windows에서 문제없이 잘 작동됨
- 중앙 집중식 테이버 베이스 제어로 통신 누락, 오류 발생 최소화
- .Net 언어 구현에만 초점을 맞춰 설계됨
PostrgreSQL
- 오픈 소스 객체-관계형 데이터베이스 시스템 (ORDBMS)
- macOS 서버의 경우 기본 데이터베이스로 사용된다.
- 북미나 일본에서 많이 사용
특징
- 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
- 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공
- 테이블 상속 기능을 이용해 하위 테이블 생성 가능
- 오픈 소스임에도 상용 RDBMS급의 기능을 제공
- 기본적인 CRUD 성능이 경쟁 DB에 비해 좋지 않다.
MongoDB
- 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템
- NoSQL 데이터베이스
특징
- ACID 대신 BASE를 택해 성능과 가용성을 우선시함
- 모든 데이터가 JSON 형태로 저장, 스키마가 없음
- 다양한 인덱싱 제공
- 일관성이 매우 중요한 작업에는 사용하기 힘들다
Redis
- Remote Dictionary Server의 약자
- Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비 관계형 데이터베이스 관리 시스템
- 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS
특징
- 메모리 기반이기에 속도가 빠르고 간편
- 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 널리 사용
- 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 자료구조의 지원
SQLite
- 독립형 파일 기반의 오픈소스 RDBMS
- 구글 안드로이드 운영 체제에 기본 탑재된 데이터베이스
- ACID 준수
특징
- 이름과 같이 매우 가볍다. 사용하는 공간은 시스템에 따라 다르지만 600kb 미만의 공간을 차지
- 완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없음
- 이식성이 뛰어남
- 동시성의 제한, 사용자 관리 존재의 부재, 서버리스 데이터베이스이기에 보안이 약함
MariaDB
- 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)
- MySQL과 동일한 소스 코드를 기반, GPL v2 라이선스를 따름
- MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB
특징
- 위의 말한 관계로 인해 MySQL과 거의 100% 호환성을 가지고 있음
- MySQL에 비해 애플리케이션 부분 속도가 약 4~5천 배 빠르고, 성능면에선 70% 향상을 보인다고 말함
- 좀 더 자유로운 MySQL 정도로 이해하면 될듯함
결론
위 내용들을 하나하나 정리해보면서 규모가 크면 보통 Oracle을 사용하는 게 좋아 보이고,
소규모라면 SQLite가 적합하지 않나 생각했다.
나머지 DBMS는 각각 장단점이 있어 개발자가 편한 대로 사용하면 될 듯하다.
이번 조사를 통해 MariaDB에 관심이 생겼고, 한 번 사용해보려고 생각 중이다.
RDBMS 즉, 관계형 데이터베이스 구조와 NoSQL로 나누어져 있는데 두 개의 차이점에 대해서도 정리해보아야겠다.
'Computer Science > DataBase' 카테고리의 다른 글
[DB] RDB(관계형 데이터베이스)와 NoSQL (0) | 2022.01.04 |
---|---|
[DB] 데이터베이스 변수 명명법 (0) | 2021.12.22 |
[DB] ER다이어그램 작성시 세부사항 (0) | 2021.12.21 |