티스토리 뷰

Development/Database

[Database]postgreSQL

Vagabund.Gni 2023. 10. 18. 14:19
728x90
반응형

목차

     

    FastAPI와 SQLAlchemy, 그리고 Pydantic을 이용한 토이 프로젝트를 진행하던 중 PostgreSQL을 사용해야 할 일이 생겼다.

     

    그냥 MySQL을 사용했어도 되지만, SQLAlchemy와 궁합이 좋은 디비가 PostgreSQL이라길래.

     

    찍먹 하듯이 잠깐 사용하고 넘어가게 될 테지만, 그래도 이렇게 만난 것을 기념으로 블로그에 정리를 해두기로 했다.

     

    PostgreSQL, 시작해 보자.

     

    Brief History

     

    PostgreSQL의 독음은 '포스트그레스큐엘'이다. MySQL을 '마이 에스큐엘'이라고 부르는 것과 차이가 있는데,

     

    포스트그레스큐엘의 개발 과정을 살펴보면 그 이유를 알 수 있다.

     

    포스트그레스큐엘은 캘리포니아대학 버클리분교의 Ingres 프로젝트에서 시작되었다.

     

    이후 문제점을 개선한 post-Ingres 프로젝트에 의해 최초의 사용화 버전이 1988년에 발표되었으며,

     

    1994년에는 이 시스템에 SQL 해석기를 더해 Postgres95라는 이름을 붙였다가

     

    1996년에 SQL의 추가 사실을 명시적으로 나타내기 위해 PostgreSQL이라는 이름으로 바꿔 지금에 이르렀다.

     

    출처: https://ko.wikipedia.org/wiki/PostgreSQL

     

    PostgreSQL - 위키백과, 우리 모두의 백과사전

    위키백과, 우리 모두의 백과사전. PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련

    ko.wikipedia.org

     

    추가로 상징 동물은 코끼리인데, 오래 살며 기억력이 뛰어난 동물이라서 선택한 것이 아닐까.. 한다.

     

    역사는 이쯤 하고, 포스트그레스큐엘의 특징에 대해 하나씩 알아보자.

     

    ORDBMS

     

    가장 먼저, 포스트그레스큐엘의 특징은 객체-관계형 데이터베이스 관리 시스템이라는 데 있다.

     

    객체-관계형 DBMS란 이름 그대로 관계형 데이터베이스에 객체지향 개념을 결합시킨 시스템이다.

     

    출처: https://en.wikipedia.org/wiki/Object%E2%80%93relational_database

     

    Object–relational database - Wikipedia

    From Wikipedia, the free encyclopedia Database management system An object–relational database (ORD), or object–relational database management system (ORDBMS), is a database management system (DBMS) similar to a relational database, but with an object-

    en.wikipedia.org

    줄여서 간단히 ORD(Object-Relational Database)라고 부르기도 하는 이 시스템은

     

    객체지향적인 특성, 즉 클래스, 상속, 다형성, 캡슐화를 지원한다.

     

    이를 이용해 개발자는 다양한 데이터베이스 객체와 메서드를 SQL 차원에서 임의로 만들어 사용할 수 있으며,

     

    마치 프로그래밍 언어를 다루듯이 복잡하고 다양한 데이터 타입과 기능, 쿼리, 메서드를 손쉽게 만들어 사용할 수 있다.

     

    Features

     

    이외의 특징을 간략하게 정리하면 다음과 같다.

     

    1. MySQL에 비해 SQL 표준을 더 엄격히 지원한다.
    2. 쿼리가 복잡해질수록 성능이 뛰어나다.
    3. extension이라는 요소를 통해 자유로운 기능 추가가 가능하며, 커뮤니티를 통해 공유 역시 가능하다.
    4. 높은 수준의 동시성 처리를 지원한다.
    5. 비동기 처리를 지원한다.
    6. 병렬 인덱싱이 가능하다.

    각각의 의미에 대해서 다 적자면 글이 끝나지 않을 것 같아 키워드만 적어놓는다.

     

    Pros and Cons

     

    마지막으로 위 특징을 포함해 장단점에 대해 정리하자.

     

    • 장점

      • 기본적으로 오픈소스이기 때문에 무료이다.
      • 기능이 풍부하며 안정적이고, 동시성 처리와 데이터 무결성을 뛰어나게 보장한다.
      • 다양한 커스터마이징과 확장기능을 지원한다.
    • 단점

      • 성능 오버헤드가 있을 수 있다.
      • ORD 특성상 객체-관계 매핑을 포함한 설정, 사용이 복잡하기 때문에 학습 곡선이 높다.
      • 공유 볼륨을 지원하지 않아 수평확장에서 1:1의 추가적인 볼륨을 요구한다. 즉, 수평 확장이 약하다.

     

    Summary

     

    포스트그레스큐엘은 현재 점유율 4위에 랭크되어 있으나 꾸준히 성장하는 디비이다.

     

    애플과 야후, KT와 인스타그램 등에서 사용하고 있는 포스트그레스큐엘은

     

    앞으로도 그 성장성이 기대할만한 듯하다.

     

    물론 나는 기본적인 기능만 사용해서 사실상 MySQL과 크게 다르지 않게 사용하겠지만

     

    언젠가 그 높다는 학습곡선에 도전해보고 싶다. PromQL과도 연동이 가능하다던데...

     

    어쨌건 PostgreSQL 튜토리얼, 끝!

    반응형

    'Development > Database' 카테고리의 다른 글

    [DB]Vector DB  (0) 2023.09.19
    [Database]NoSQL(mongoDB)에서 1:N, N:M 구현  (0) 2023.07.09
    [Database]mongoDB의 '_id', 또는 auto-increment ID  (0) 2023.07.03
    [Database]MariaDB  (0) 2023.05.10
    [Database]WebFlux에서 R2DBC 기본설정  (0) 2023.05.06
    [Database]SQLite  (0) 2023.04.07
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함