DBMS는 DataBase Management System의 약자로, 데이터베이스를 생성, 관리, 수정, 조작하는데 사용하는 소프트웨어다.
Oracle, MySQL, Microsoft SQL Server는 RDBMS로 오래동안 큰 변동없이 최상위권에 위치해왔다. 이 세가지를 제외하고서 특별히 눈에 띄는 것은 2013년부터 완만하게 상승곡선을 보이는 PostgreSQL, MongoDB 그리고 2020년부터 급등한 Microsoft Azure SQL Database다(왜 갑자기 급등했을까??).
2021년 4월 기준으로 랭킹[1]은 아래와 같다.
1. Oracle detailed information Relational, Multi-model info 1274.92 -46.82 -70.51 (Score, March, April)
2. MySQL detailed information Relational, Multi-model info 1220.69 -34.14 -47.66
3. Microsoft SQL Server detailed information Relational, Multi-model info 1007.97 -7.33 -75.46
4. PostgreSQL detailed information Relational, Multi-model info 553.52 +4.23 +43.66
5. MongoDB detailed information Document, Multi-model info 469.97 +7.58 +31.54
6. IBM Db2 detailed information Relational, Multi-model info 157.78 +1.77 -7.85
7. Redis detailed information Key-value, Multi-model info 155.89 +1.74 +11.08
8. Elasticsearch detailed information Search engine, Multi-model info 152.18 -0.16 +3.27
9. SQLite detailed information Relational 125.06 +2.42 +2.87
10. Microsoft Access Relational 116.72 -1.41 -5.19
기존 삼대장인 Orcale, MySQL, Microsoft SQL Server와 같은 관계형데이터베이스의 점수가 계속 감소하는 와중에 인기가 늘고있는 PostgreSQL는 듣기만 하고 직접 써본적이 없었다.
그래서 왜 PostgreSQL의 인기가 늘어나는지 찾아보았다[2]. 아래는 MySQL 대비 PostgresSQL의 장점 목록이다.
- Postgres는 객체 관계형 데이터베이스이고 MySQL은 '순수한' 관계형 데이터베이스다. 즉, Postgres에는 특정 응용 프로그램에는 중요할 수도있는 테이블 상속 및 함수 오버로딩과 같은 기능이 포함되어 있다.
- Postgres는 또한 SQL 표준을보다 밀접하게 준수한다.
- Postgres는 여러가지 이유로 MySQL보다 동시성(concurrency)을 더 잘 처리한다.
동시성을 더 잘 처리하는 이유는 아래와 같다.
- Postgres는 읽기 잠금(read locks)없이 MVCC (Multiversion Concurrency Control)를 구현한다.
- Postgres는 여러 CPU / 코어를 사용할 수있는 병렬 쿼리 계획(parallel query plans)을 지원한.
- Postgres는 비 차단 방식 ( CREATE INDEX CONCURRENTLY구문을 통해)으로 인덱스를 생성 할 수 있으며 부분 인덱스를 생성 할 수 있다 (예 : 소프트 삭제가있는 모델이있는 경우 삭제 된 것으로 표시된 레코드를 무시하는 인덱스를 만들 수 있다).
- Postgres는 트랜잭션 수준에서 데이터 무결성을 보호하는 것으로 알려져 있다. 따라서 데이터 손상에 덜 취약하다.
확실히 인기순위를 보니까 빅데이터가 대세는 대세인 것같다.
[1]랭킹정보 db-engines.com/en/ranking
'Database' 카테고리의 다른 글
[MySQL/HackerRank]Basic Join, Advanced Select 上 (0) | 2021.05.15 |
---|---|
[MySQL/HackerRank]Aggregation (0) | 2021.05.15 |
[MySQL/HackerRank]Basic Select (0) | 2021.05.15 |
[SQL] Join vs Sub-query, sharding (0) | 2021.04.09 |
[MongoDB]파이썬에서 MongoDB 사용하기 (0) | 2021.03.25 |