MySQL 선택 이유

송준섭 Junseop Song·2023년 12월 12일
0
post-thumbnail

RDBMS를 사용해야 하는 이유?

관계형 데이터베이스는 데이터를 행과 열로 미리 구성된 테이블 형태로 저장
→ 정형화된 데이터를 저장하는데 용이

테이블을 서로 조인하여 의미 있는 정보를 생산할 수도 있음
트랜잭션을 지원하여 데이터 일관성을 유지하고 동시성 문제 또한 관리하여 안정성 및 데이터 무결성을 보장할 수 있음
⇒ 회원 정보, 게시글 같이 받아오는 정보가 정형화가 되어있는 데이터들을 안정적으로 유지하기 위해 RDBMS를 사용

PostgreSQL 등 다른 관계형 데이터베이스 대신 MySQL을 선택한 이유?

  • PostgresSQL vs MySQL (chatGPT 참고)
    1. 데이터 일관성 및 ACID 준수:

      • PostgreSQL: ACID(원자성, 일관성, 고립성, 지속성) 특성을 엄격하게 준수하며, 데이터 무결성을 중시. 트랜잭션 관리 및 복구 능력이 뛰어남
      • MySQL: ACID 특성을 준수하지만, PostgreSQL에 비해 덜 엄격한 경우가 있음. 기본적으로는 ACID 준수, 그러나 설정에 따라 데이터 일관성을 희생하도록 조정할 수 있음

      → PostgreSQL은 좀 더 염격하지만 안정적, MySQL은 좀 더 유연함
      ⇒ 우리 프로젝트에서는 데이터의 안정성이 비교적(은행 시스템 등에 비해) 중요하지는 않음

    2. 확장성:

      • PostgreSQL: 수평 및 수직 확장을 모두 지원. 복제 및 파티셔닝도 다룰 수 있음.
      • MySQL: 수평 확장을 위한 옵션을 제공하며, MySQL Cluster와 같은 제품을 사용하여 확장성을 향상시킬 수 있습니다.

      → 확장성은 PostgreSQL이 뛰어남
      ⇒ 수직 확장(서버 성능 향상)은 우리 프로젝트에서 고려하지 않을 것 같음. 수평 확장은 둘 다 지원

    3. 데이터 타입 및 확장성:

      • PostgreSQL: PostgreSQL은 다양한 내장 데이터 타입 및 사용자 정의 데이터 타입을 지원하며, 확장성을 높이는 기능을 많이 제공합니다.
      • MySQL: MySQL은 다양한 데이터 타입을 제공하지만 PostgreSQL만큼 다양한 확장성 기능을 제공하지는 않습니다.

      → 데이터 타입의 확장성 측면에서 PostgreSQL이 우세
      ⇒ 우리 프로젝트에서 특별히 사용자 정의 데이터 타입 등의 큰 확장성은 필요성을 느끼지 못함

    4. JSON 및 NoSQL:

      • PostgreSQL: PostgreSQL은 JSON 데이터 형식을 지원하며, JSONB 형식을 사용하여 JSON 데이터를 색인화하고 검색할 수 있습니다.
      • MySQL: MySQL도 JSON 데이터 형식을 지원하지만 PostgreSQL과 비교하면 JSON 데이터의 검색 및 쿼리 기능이 덜 발달해 보일 수 있습니다.

      → JSON 데이터 관련 기능은 PostgreSQL이 우세, 어느 부분이 얼마나 우세한지는 더 조사 필요

    5. 성능:

      • 성능은 사용 사례 및 구성에 따라 다를 수 있으며, 각 데이터베이스는 다른 유형의 작업에 대해 다른 결과를 내릴 수 있습니다. 일반적으로는 데이터베이스 스키마, 인덱스, 쿼리 및 하드웨어 설정에 따라 성능을 조정해야 합니다.
    결론 => 둘 다 무료로 사용할 수 있으나 대부분 PostgreSQL이 우세한 모습을 보임,, MySQL 대신 PostgreSQL을 사용해야하나?

aws 글 참고

PostgreSQL과 MySQL 비교 - 관계형 데이터베이스 관리 시스템(RDBMS) 간의 차이점 - AWS

위는 aws에 있는 MySQL과 PostgreSQL의 비교글
이 글에서도 역시 PostgreSQL이 MySQL보다 더 유연하고 많은 기능을 제공하는 듯 함
PostgreSQL은 객체 관계 데이터베이스, MySQL은 순수 관계형 데이터베이스

그러나 이 글에서 소개하는 둘 중 선택하는 방법이 있었다.

PostgreSQL은 쓰기 작업이 빈번하고 쿼리가 복잡한 엔터프라이즈급 애플리케이션에 더 적합함
하지만 프로토타입을 만들거나, 사용자 수가 적은 내부 애플리케이션을 만들거나, 읽기 횟수가 많고 데이터 업데이트가 자주 이루어지지 않는 정보 스토리지 엔진을 만들고 싶다면 MySQL 프로젝트를 시작할 수 있음
        
PostgreSQL은 데이터베이스에 연결된 모든 사용자에 대해 상당한 메모리 할당량(약 10MB)을 포함하는 새로운 시스템 프로세스를 생성합니다. 여러 사용자를 위해 확장하려면 메모리 집약적 리소스가 필요합니다.
반면 MySQL은 여러 사용자를 위해 단일 프로세스를 사용합니다. 따라서 MySQL 데이터베이스는 주로 데이터를 읽고 사용자에게 표시하는 애플리케이션에서 PostgreSQL보다 성능이 뛰어납니다.

→ PostgreSQL은 높은 수준의 트랜잭션 관리 및 복구 능력을 제공하며, 복잡한 쿼리와 다수의 트랜잭션을 안정하게 처리하기 때문에 데이터 무결성 및 신뢰성이 중시되는, 쓰기 작업이 빈번한 서비스에 적합
→ MySQL은 효과적인 인덱싱 메커니즘을 제공하며, 쿼리 성능을 향상시킬 수 있도록 다양한 인덱스 유형을 지원하는 데이터베이스 시스템으로서 높은 성능을 가진 빠른 읽기 작업을 지원하며, 상대적으로 간단한 읽기 작업을 수행할 때 효과적으로 읽기 중심의 작업에 유용하며, 데이터 업데이트가 자주 이루어지지 않는, 프로토타입 또는 작은 규모의 애플리케이션에 적합

⇒ 우리 프로젝트는 쓰기 작업이 빈번하기 보다는 읽기 작업이 훨씬 많을 것으로 보임, 규모도 그렇게 크지 않다고 판단됨

결론 → MySQL이 적합하다고 판단

0개의 댓글