빙응의 공부 블로그

[Real MySQL 8.0]1장 본문

CS/DB

[Real MySQL 8.0]1장

빙응이 2024. 11. 13. 18:05

📝1장 왜 MySQL을 사용하는가?

 

"어떤 DBMS를 사용해야 할지 모르겠습니다. 어떤 DBMS가 좋은가요??"

 

책에 따르면, 10년 전에는 DBMS 선택지가 많지 않아 오라클과 MySQL이 주요 선택지였습니다. 당시 오라클은 MySQL보다 성능이 뛰어났지만, 가격이 너무 비쌌습니다. 시간이 지나 데이터의 양이 수백 배, 수천 배로 늘어나면서, 오라클의 비용을 감당하기 어려운 상황이 생겼고, 결과적으로 MySQL이 유일한 대안으로 자리 잡게 되었습니다.

 

 

현재는 어떨까요? 시대가 발전하면서 RDBMS만이 아닌 다양한 종류의 DBMS가 등장했습니다. 

NoSQL을 시작으로 객체 관계형인 PostgreSQL까지요 

 

이 상황에서 DBMS는 어떻게 고르는게 좋을까요?

그것은 다음 순서로 고려하는게 좋은 것 같습니다.

  • 안정성
  • 성능과 기능
  • 인지도 및 정보 습득성
  • 가격

 

📝DB-Engines.com 기준 DBMS 랭킹

DB-Engines Ranking - popularity ranking of database management systems

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

해당 지표는 DB-Engines.com에서 제공하는 DBMS 랭킹입니다. 

해당 랭킹은 다음 지표를 통해 부여됩니다.

  • 웹 사이트 언급 횟수
  • 검색 빈도
  • 기술 토론 빈도
  • DBMS별 구인
  • 전문가 인맥

즉 사용자의 활동이 많은 기준으로 랭킹을 부여합니다. 
제가 아는 DB 기준으로 알아보겠습니다.

 

📌MySQL 

 

  • 유형: 관계형 데이터베이스 (RDBMS)
  • 데이터 모델: 테이블 기반의 스키마를 갖춘 관계형 데이터 모델
  • 장점:
    • SQL 쿼리를 사용하여 데이터 관리가 직관적이고 표준화되어 있음.
    • 트랜잭션과 데이터 무결성 보장이 뛰어남 (ACID 특성).
    • 읽기 성능이 우수하고 안정성이 높아 중소규모 웹 애플리케이션에서 많이 사용됨.
  • 단점:
    • 스키마가 고정적이라 확장에 어려움.
    • 복잡한 데이터 구조나 계층적 데이터를 처리하는 데 비효율적.

📌PostgreSQL

 

  • 유형: 객체 관계형 데이터베이스 (ORDBMS)
  • 데이터 모델: 테이블 기반의 관계형 데이터 모델 (JSON, 배열 등 다양한 데이터 타입도 지원)
  • 장점:
    • ACID 준수 및 고급 트랜잭션 지원으로 높은 안정성과 데이터 무결성을 보장함.
    • JSON 데이터를 기본적으로 지원하여 비정형 데이터 관리도 가능.
    • 확장 기능이 뛰어나고 PostGIS와 같은 지리정보 데이터 관리 기능을 추가할 수 있음.
  • 단점:
    • 설정 및 초기 학습이 복잡할 수 있음.
    • 초대형 데이터 처리에서 MySQL보다 성능이 떨어질 수 있음.
    • 쓰기 성능은 MySQL보다 약간 낮은 편임.

📌MongoDB

 

  • 유형: NoSQL, 문서형 데이터베이스
  • 데이터 모델: JSON 유사한 BSON(Binary JSON) 형식의 문서 기반 모델
  • 장점:
    • 확장의 자유로움과 유연한 데이터 구조
    • 빠른 읽기/쓰기 성능
    • 실시간 데이터 처리에 효과적인 문서형 데이터베이스
  • 단점:
    • 최근에는 나아졌으나 ACID 지원이 MySQL 만큼 성숙하지 않다. 
    • 단순 CRUD 최적화이기에 복잡한 쿼리에서 효율이 떨어진다.
    • 메모리 사용이 높은 편이며, 고성능을 위해서는 추가적인 최적화가 필요함.

📌Redis

 

  • 유형: 키-값 저장소, 메모리 기반 데이터베이스
  • 데이터 모델: 키-값 형태의 인메모리 데이터 모델 (문자열, 리스트, 셋, 해시 등 다양한 데이터 구조 지원)
  • 장점:
    • 데이터는 메모리에 저장되어 빠른 읽기와 쓰기 속도를 자랑함.
    • 캐싱, 세션 관리, 실시간 데이터 처리(예: 랭킹, 카운트)에 유용함.
    • Pub/Sub 기능을 통해 메시징 큐로도 사용 가능.
  • 단점:
    • 메모리 데이터 모델이기에 비싸며 스케일 업이 제한적임.
    • 관계형 쿼리나 복잡한 트랜잭션을 지원하지 않음.
    • 데이터의 휘발 가능성이 큼.

 


🧷결론

 

DBMS를 선택할 때는 안정성, 성능, 가격, 그리고 확장성 등을 고려해야 합니다. 예를 들어, MySQL이나 PostgreSQL 같은 RDBMS는 데이터 무결성트랜잭션 처리에 강점이 있지만, 데이터 모델이 유연한 MongoDBRedis 같은 NoSQL은 확장성실시간 처리에서 더 우수하다. 선택은 사용하려는 애플리케이션의 요구사항에 맞추어 결정하는 것이 좋다.

 

물론 학생 수준이라면 확장성은 고려하지 않고 정보를 쉽게 찾아보는 MySQL이 가장 좋다고 생각하지만, 

지리 좌표를 비교하는 비즈니스 기능이라거나 실시간 메시지 처리가 필요한 기능은 다른 데이터베이스 활용을 통해 최적화 하는 것이 좋아보인다.

'CS > DB' 카테고리의 다른 글

[Real MySQL 8.0]8장 - 인덱스와 B-Tree (1/2)  (1) 2024.12.09
[Real MySQL 8.0]5장 - 트랜잭션  (1) 2024.12.08
[Real MySQL 8.0]4장-2 InnoDB  (2) 2024.12.06
[Real MySQL 8.0]4장-1 MySQL 엔진  (1) 2024.12.05
[Real MySQL 8.0]2, 3장  (2) 2024.11.13