데이터베이스의 종류에 대해 공부하다보니
문득 다른 개발자들은 어떤 데이터베이스를 많이 사용할지, 또 어떤 데이터베이스가 트렌드일지 궁금해졌다.
chatGPT와 이런 저런 대화를 하다 보니, 오류를 맞이할 때마다 단골손님으로 방문하게 되는 사이트 stackoverflow에서 개발자 대상으로 매년 진행하는 설문조사 "StackOverflow Developer Survey"를 2011년부터 진행하고 있다는 걸 알게 됐다.
(이후 Stack Overflow 설문조사에 대해 질문한 결과)
기존에는 테이블 형식의 데이터가 많이 다뤄지다보니 RDBMS를 많이 사용하다가,
저장해야 하는 데이터 형식이 다양해지면서 NoSQL이 등장하게 되고 점차 사용하게 됐다고 하는데
실제 많은 개발자들이 그렇게 사용하고 있는지 궁금해졌다.
마침 2017년 설문조사부터 항목 중 "Databases" 부분이 있었고,
전체 조사 결과와 실제 개발자들의 조사 결과도 나눠져 있을 뿐만 아니라
2018년도부터는 "Most Loved, Draded, and Wanted Databases"라는 항목도 있어서 연도별 결과를 분석해 보았다.
데이터는 아래의 각 연도별 StackOverflow Developer Survey 결과 사이트에서의 Databases 부분을 직접 수집했으며,
- 2017 : https://insights.stackoverflow.com/survey/2017
- 2018 : https://insights.stackoverflow.com/survey/2018
- 2019 : https://insights.stackoverflow.com/survey/2019
- 2020 : https://insights.stackoverflow.com/survey/2020
- 2021 : https://insights.stackoverflow.com/survey/2021
- 2022 : https://survey.stackoverflow.co/2022
분석은 데이터 시각화 툴인 Tableau의 무료 버전인 Tableau Public을 이용해 보았다.
- Tableau Public : https://public.tableau.com/
모두에게 가장 인기 있는 데이터베이스는?
설문조사 전체 대상으로, 사용하고 있는 데이터베이스에 대해 연도별 설문조사 결과 비율을 막대 그래프로 나타내보았다.
(연도별로 색상을 다르게 표시해서 대략적인 분포를 확인하고자 하였다.)
각 DBMS별로 세부적인 비율 수치는 다음과 같다.
(첫 열은 설문조사 전체 평균을 나타내고, 나머지 열은 최근 연도부터 순차적으로 설문조사 비율 결과를 나타낸다.)
아무리 NoSQL이 필요해졌다고 하지만 여전히 RDBMS가 많이 사용되고 있는걸 볼 수 있다.
상위권을 차지한 MySQL, PostgreSQL, Microsoft SQL Server, SQLite 모두 RDBMS 인데,
MySQL이 부동의 1위를 차지하고 있지만 PostgreSQL과 SQLite가 점점 추격해오는 중이다.
위 4개 RDBMS 아래에는 NoSQL 중 document 형식 저장소인 MongoDB와 key-value 형식 저장소인 Redis가 바짝 쫓아가고 있다.
그리고 설문조사 초반인 2017년에 상위권에 있던 데이터베이스 대부분이 여전히 상위권을 차지하는걸 볼 수 있었는데,
그럼에도 신예(?)로 떠오른 데이터베이스는
2018년에는 MariaDB(7위), ElasticSearch(9위), Amazon DynamoDB(11위)가, 2019년에는 Firebase(10위)가 있었다.
어떻게 이 데이터베이스들이 인기를 끌게 됐는지 궁금해서 찾아본 결과, 모두 NoSQL 기능을 제공하고 있으면서 각각 특징이 두드러졌다.
MariaDB
2009년에 처음 출시된 RDBMS로, MySQL과의 호환성이 뛰어나다. 기존 오픈소스 데이터베이스로 개발되던 MySQL이 Oracle로 인수되면서 라이선스에 상업 이용이 제한되면서, MySQL 대체 데이터베이스로 각광받게 되었다고 한다.
그리고 관계형 데이터베이스 뿐만 아니라 NoSQL인 Document store, Graph store도 제공한다는 점도 한몫을 하지 않았나 예상해본다.
ElasticSearch
2010년 처음 출시된 검색 엔진으로, 데이터 검색 및 분석 기능을 제공하는 NoSQL 데이터베이스이다.
데이터 크기에 따라 클러스터 노드 개수도 쉽게 늘릴 수 있어서, 용량이 큰 데이터도 관리하기 쉽고
데이터가 추가되거나 변경될 때마다 인덱스를 새로 업데이트해서 실시간 데이터도 처리하기 좋다고 한다.
무엇보다 검색 쿼리 기능이 강력해서 점점 많은 사람들이 사용하게 된 것으로 보인다.
DynamoDB
2012년에 나온 AWS에서 제공하는 NoSQL 데이터베이스로 document store와 key-value store를 제공한다.
AWS에서 만든 만큼, 클라우드 기반 데이터베이스라는 점이 큰 장점이 되지 않았나 싶다.
(참고 : https://db-engines.com/en/blog_post/82)
Firebase Realtime Database
DynamoDB와 같은 연도인 2012년에 나온 NoSQL 데이터베이스로 document store를 제공한다.
구글에서 제공하는 것으로, 데이터베이스 이름에도 들어가다시피 실시간으로 데이터 동기화를 지원해준다는 부분과
DynamoDB와 같이 클라우드 기반이라는 부분이 강점으로 인기를 끌고 있다고 예상된다.
(여러모로 DynamoDB와 닮은 점이 많은 데이터베이스이다.)
실무 개발자들이 현업에서 많이 다루는 데이터베이스는?
그렇다면 실제 개발을 업으로 삼고 있는 사람들은 어떤 데이터베이스를 많이 사용할까?
놀랍게도(?) 순위는 전체 결과와 동일했다.
설문조사에 참여한 전체 인원이 실무 개발자와 큰 차이가 나지 않았을 수도 있지만,
실무 개발자나 개발을 업으로 하지 않는 사람들이나 상관 없이 사용하는 데이터베이스는 유사하다는걸 알 수 있다.
대략적인 분포로는 차이를 알기 어려워 한번 수치로 비교해 보았다.
전체 설문조사 결과에서 현업 개발자 설문조사 결과를 뺀 수치로,
파란색은 전체에서 더 많은 비율을 차지한 것을 나타내고, 빨간색은 실무 개발자들이 더 많은 비율을 차지한 것을 나타낸다.
Cassandra, Elasticsearch, Microsoft SQL Server, MongoDB, PostgreSQL, Redis 가 실무에서 더 많이 쓰이는걸 알 수 있고,
Firebase Realtime Database, IBM DB2, MySQL, SQLite 등은 전체적으로 더 많이 쓰인다는 것을 알 수 있다.
실무에서는 데이터 크기가 더 방대할 것이고, 라이선스가 오픈소스인지의 여부도 해당 결과에 어느 정도 영향을 주었을 것으로 예상된다.
사람들이 많은 관심을 갖고 있는, 원하는 데이터베이스는?
먼저 사람들에게 가장 사랑받는 데이터베이스를 알아보았다.
그래프는 각 연도별 투표된 비율을 아래부터 최신 연도로 나타내었다.
5년 내내 상위권에 있던 데이터베이스는 Redis, PostgreSQL, MongoDB, Microsoft SQL Server, SQLite, MySQL 등으로 인기 있는 데이터베이스와 유사했다.
그 중 Redis가 특히 높게 나타났는데, 메모리 기반 데이터베이스로 빠른 성능을 나타내면서 캐싱에 적합한 데이터베이스로 각광받고 있어서 많이 사랑받고 있는 것으로 보인다.
5년 안에 새로 순위권에 들었던 데이터베이스는 Elasticsearch(2018년 이후), MariaDB(2018년 이후), Amazon DynamoDB(2018년 이후), Firebase Realtime Database(2019년 이후) 등이 있었으며,
Neo4j, Cloud Firestore, CouchDB가 이전에 거의 나타나지 않다가 2022년에 새로 순위권에 등장했다.
이 중 5년 내내 상위권에 있던 데이터베이스에 대해 연도별 비율 추이를 살펴보았다.
전반적으로 2020년도에는 낮은 퍼센트를 보였는데, 이를 감안하고 보자면
Cassandra는 슬프게도 점점 인기도가 떨어지고 있었지만
Redis, MongoDB, PostgreSQL, SQLite는 (2020년을 제외하고) 꾸준히 상승한 것을 볼 수 있다.
RDBMS를 새로 도입해보려고 한다면 가장 인기 많은 PostgreSQL을 써보는 것도 좋을 것 같다.
다음으로 사람들이 사용하길 원하는, 니즈가 있는 데이터베이스는 아래와 같다.
MongoDB가 압도적인 1위를 차지하고 있었다.
Document store로 데이터가 json 형식으로만 되어 있으면 자유롭게 저장할 수 있다는 장점과
직관적으로 쿼리를 작성할 수 있다는 점, 그리고 여러 서버에 분산 저장하는 샤딩(sharding) 기능을 통해 성능을 확장시킨다는 점이
많은 사람들이 사용하고 싶도록 만든 부분이지 않을까 예상한다.
그 외에도 Redis, Elasticsearch 등 NoSQL이 최상위권에 많은 비중을 차지하고 있었고,
많이 사용되고 있는 PostgreSQL이 니즈도 많은 것을 볼 수 있었다.
이 중에서도 5년 내내 상위권에 있던 데이터베이스에 대해 연도별 비율 추이를 살펴본 결과,
PostgreSQL이 꾸준히 상승하고 있었고, Redis와 SQLite 또한 나름의 상승세를 보이고 있었다.
다만 Cassandra는 wanted 결과와 비슷하게 하락하는 추세를 보였고,
전체적으로는 1위를 차지했던 MongoDB가 전반적인 추세로는 니즈가 하락하고 있었다.
추가로 월별로 인기 있는 DBMS에 대해서는 아래 링크에서도 확인해볼 수 있다.
https://db-engines.com/en/ranking
데이터베이스 유형별 순위도 제공하고 있어서, 원하는 유형에 따라 어떤 DBMS를 사용할 지 결정해야 할 때 참고해보면 좋을 듯 하다.
'DATA SCIENCE > DATA ENGINEERING' 카테고리의 다른 글
[udemy - Apache Spark와 Python으로 빅데이터 다루기] Spark란? (1) | 2024.04.14 |
---|---|
[DE] 하둡 없이 맵리듀스를?! Local MapReduce 오픈소스 파헤치기 (0) | 2023.06.17 |
[DE] 2023 DEVIEW - SCDF로 하루 N만곡 이상 VIBE 메타 데이터 실시간으로 적재하기 (스트림 처리 레거시 극복일지 엿보기) (0) | 2023.06.04 |
[DE] 쿠버네티스(kubernetes): 컨테이너도 자동화가 필요해! (0) | 2023.04.09 |