PostgreSQL

From IT Wiki
Revision as of 12:37, 16 December 2022 by Dbeaver (talk | contribs) (새 문서: '''포스트그레스큐엘'''<!--포스트그레 에스큐엘, 포스트그레에스큐엘-->(PostgreSQL)은 객체-관계형 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 1982년 미국 버클리 대학교의 학생들이 개발한 인그레스(Ingres)를 기반으로, 1996년 에스큐엘(SQL) 질의어를 추가하고 포스트그레스큐엘(PostgreSQL)로 이름을 변경하였다. '''포스트그레 에스큐엘'''이라고...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

포스트그레스큐엘(PostgreSQL)은 객체-관계형 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 1982년 미국 버클리 대학교의 학생들이 개발한 인그레스(Ingres)를 기반으로, 1996년 에스큐엘(SQL) 질의어를 추가하고 포스트그레스큐엘(PostgreSQL)로 이름을 변경하였다. 포스트그레 에스큐엘이라고도 한다. 로고는 슬로닉(Slonik)이라는 이름의 파랑색 코끼리이다.

개요[edit | edit source]

포스트그레스큐엘(PostgreSQL)은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 엔터프라이즈급 데이터베이스 관리 시스템(DBMS)의 기능과 차세대 데이터베이스 관리 시스템에서나 볼 수 있을 법한 기능들을 제공한다. 약 20여 년의 오랜 역사를 갖는 포스트그레스큐엘은 다른 관계형 데이터베이스 시스템과 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있다.[1] BSD(Berkely Software Distribution) 라이선스로 배포되며 오픈 소스 개발자 및 관련 회사들이 개발에 참여하고 있다. PostgreSQL이라는 이름의 어감이 생소해서 발음할 때 /포:스트그레스큐:엘/ 조금 더 짧게 "포스트그레스큐엘"이라고 발음하면 된다. 일부 프로그래머들 사이에는 "포스트그리 에스큐엘"이라고 불리는데, 이전에는 일반적으로 "Postgres"라고만 불렸지만, 표준 에스큐엘을 지원하기 시작하면서 공동체에서 "Postgres"라는 이름 뒤에 에스큐엘을 덧붙인 것이다. 실제로 프로젝트의 공식적인 명칭은 "post-Ingres" 데이터베이스이다.[2]

역사[edit | edit source]

포스트그레스큐엘의 조상에는 여러 제품이 있는데, 그중 인그레스(INteractive Graphics REtrieval System)는 포스트그레스큐엘의 시조라고 할 수 있다. 이 인그레스는 데이터베이스 계의 거장 마이클 스톤브레이커(Michael Stonebraker)가 시작한 프로젝트이다. 이 인그레스는 1977년 미국 버클리대학에서 시작한 프로젝트다. 이후 인그레스를 잇는 포스트그레스(Post-인그레스)라는 또 다른 프로젝트 또한 그의 손을 거쳐 탄생했다. 1991년 포스트그레스 버전 3이 출시되면서 많은 사용자를 확보했으나 사용자 지원에 대한 부담이 증가해 결국 프로젝트는 1993년에 종료됐다. 이후에도 포스트그레스는 인포믹스 제품에 상당 부분 영향을 준 것으로 알려져 있다(포스트그레스를 상용화한 Illustra는 1997년 인포믹스에 인수됐고 2001년에 Illustra는 IBM에 인수됐다). 하지만 포스트그레스 사용자와 학생들이 프로젝트 종료 선언과 별개로 포스트그레스의 개발을 계속 진행했고, 에스큐엘 지원과 구조 개선을 통해 포스트그레스보다 40% 정도 빠른 성능을 보여 주는 포스트그레스95를 만들어 냈다.

이 포스트그레스95는 1996년 오픈소스가 되면서 포스트그레스를 계승했다는 것과 에스큐엘(Structured Query Language)을 지원한다(포스트그레스는 에스큐엘이 아니라 큐얼:QUEL 이라는 언어를 지원했다)는 것을 반영하기 위해 포스트그레스큐엘로 이름을 변경한 후 1997년 최초 버전을 6.0으로 정해 포스트그레스큐엘을 출시했다. 이후에도 포스트그레스큐엘은 오픈 소스 커뮤니티에 의해 활발히 개발되고 있으며 2012년 10월 9.2 버전까지 출시됐다. 또한 개방된 라이선스(BSD나 MIT 라이선스와 비슷하게 상용적인 사용과 수정을 허용하며 단, 사용 중 발생하는 문제에 대해 법적 책임이 없음을 명확히 함)의 특징으로 인해 20종 이상의 다양한 분기(fork)가 존재했으며, 그중 많은 수가 포스트그레스큐엘에 다시 영향을 주거나 혹은 사라졌다. 포스트그레스큐엘의 로고는 '슬로닉'이라는 이름을 가진 코끼리다. 코끼리를 로고로 사용하게 된 정확한 근원은 찾을 수 없으나 과거의 흔적을 뒤져 보면, 오픈소스화된 직후 한 사용자가 아가사 크리스티의 소설 '코끼리는 기억한다'에서 착안해 제안한 것으로 보인다. 이후 모든 공식적인 자리에서 이 코끼리 로고는 빠지지 않고 등장하게 됐다. 코끼리는 크고 강하고 믿음직하며 기억력이 좋다는 이미지 때문에 하둡이나 에버노트도 코끼리를 공식 로고로 사용하고 있다.[3]

로드맵[edit | edit source]

  • 1995년 : 0.01 버전을 출시했고, 포스트그레스95 릴리스를 발표했다.
  • 1995년 : 1.0 버전을 출시했고, 저작권 변경과 오픈소스화를 했다.
  • 1997년~1999년 : 6.0버전에서 6.5버전을 출시했고, 포스트그레스에스큐엘로 이름을 변경하고 인덱스, 보기와 규칙의 배열, 트리거 제네틱 쿼리 옵티마이저 컨스트레인트(Triggers Genetic Query Optimizer Constraints), 서브셀렉트 다중 버전 동시성 제어, JDBC(Java DataBase Connectivity) 인터페이스 기능을 적용했다.
  • 2000년~2010년 : 7.0버전에서 7.4버전을 출시했고, Foreign keys SQL92 구문론, 미리 쓰기 로그를 스키마, 국제화 정보에 반영했다.
  • 2005년~2012년 : 8.0버전에서 8.4버전을 출시했고, 마이크로소프트 윈도우 네이티브 버전을 지원했으며 세이브포인트, 시점 복구, 2단계 커미트, 테이블 스페이스, 분할, 전문 검색, CTE(Common Table Expressions), 에스큐엘/XML, 이넘(ENUM), 범용 고유 식별자, 타입, 윈도우 함수, 데이터베이스당 대조, 복제, 예열 대기 방식을 적용했다.
  • 2010년 09월 : 9.0버전을 출시했고, 스트리밍 복제, 상시 대기 방식, 마이크로소프트 윈도우 64bit 지원, 칼럼당 컨디셔너 트리거를 적용했다.
  • 2011년 09월 : 9.1버전을 출시했고, 기능 차별화, 동기 복제, 칼럼당 대조, 기록되지 않은 테이블, K-nearest-neighbor 인덱싱, Serializable 고립화 수준, Writeable CTE (WITH) 에스큐엘/메시지 편집 정의체(MED), 외부데이터, SE-리눅스 직접화를 적용했다.
  • 2012년 09월 : 9.2버전을 출시했고, 성능 최적화, 64개 코어로 선형 확장, 중앙처리장치 전력 소비량 감소, 캐스케이드 스트리밍 복제, 제이슨(JavaScript Object Notation), 범위 타입 록 매니지먼트 개선, 스페이스-파티션, 기스트 색인, 인덱스-온리 스캔(커버링) 기능을 추가했다.[3]

특징[edit | edit source]

장점

제품의 장점은 아래와 같다.

  • 휴대가 쉽다 : 포스트그레스큐엘은 안시 시(ANSI C)로 개발되었으며, 지원하는 플랫폼의 종류로는 윈도우, 리눅스, 맥 OS/X, 유닉스 등 다양한 플랫폼을 지원한다.
  • 신뢰할 수 있다 : 트랜잭션 속성인 ACID(Atomic Consistent Isolated Durable)에 대한 구현 및 다중 버전 동시성 제어(multi version concurrency control)가 가능하며, 로우 레벨 라킹 등을 구현할 수 있다.
  • 확장 가능성이 넓다 : 포스트그레스큐엘의 멀티 버전에 대해 사용이 가능하고 대용량 데이터 처리를 위한 테이블 파티셔닝과 테이블 스페이스 기능 구현이 가능하다.
  • 보안성이 높다 : 데이터베이스 보안은 데이터 암호화, 접근 제어 및 감시의 3가지로 구성된다. 호스트-기반의 접근 제어, 오브젝트-레벨 권한, SSL(Secure Sockets Layer) 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터 암호화를 지원한다.
  • 복구성과 가용성이 높다 : 스트리밍 레플리케이션을 기본으로, 동기식/비동기식 상시 대기 방식(Hot Standby) 서버를 구축할 수 있다. 왈 로그(WAL Log) 아카이빙 및 핫 백업(Hot Back up) 장치를 통해 시점복구(Point in time recovery)가 가능하다.
  • 상용제품보다 앞선 기술지원이다 : pg_upgrade를 통해 업그레이드를 할 수 있으며, 웹 또는 C/S 기반의 그래픽 사용자 인터페이스(GUI) 관리 도구를 제공하여 모니터링 및 관리는 물론 튜닝까지 가능하고, 사용자 정의 프로시듀얼(Procedural)로 , 자바, PHP 등의 스크립트 언어 지원이 가능하다.[1]
  • 라이선스 부담을 해소했다 : 라이선스 침해 등의 컴플라이언스 이슈로 비용 부담을 해소했다.
  • 데이터베이스 운용에 따른 비용 최소화이다 : 운영 및 튜닝 활동을 최소화 하도록 제품을 설계했고, 비용 효과적인 교육 프로그램을 제공한다.

이 외에도 사용자 관점의 장점으로는 우수한 제품 신뢰도, ACID 및 트랜잭션 지원, 다양한 인덱싱 기법 지원, 유연한 전 텍스트 검색 기능, 동시성 성능을 높여주는 다중 버전 동시성 제어 기능, 다양하고 유연한 복제 방식 지원, 다양한 프로시져 지원, 다양한 인터페이스 언어 지원, 질 좋은 커뮤니티 지원 및 엔터프라이즈 급 지원, 잘 만든 문서 및 충분한 메뉴얼 제공, 다양한 확장 기능과 확장 기능 개발 용이성 등이 있다.[4]

구조

클라이언트/서버 모델을 사용한다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 대신하여 데이터베이스 액션을 수행한다. 서버는 다중 클라이언트 연결을 처리할 수 있는데, 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 프로세스를 포크한다. 그리고 클라이언트는 기존 서버와의 간섭 없이 새로 생성된 서버 프로세스와 통신하게 된다.[1]

포스트그레스큐엘 데이터베이스는 특정한 구조를 가지고 있다. 포스트 > 서버 > 데이터베이스 > 테이블 > 사용자이다.

  • 포트
포트의 정의는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다. Logical connection place(논리적인 접속장소를 나타내는 이정표)이다. 컴퓨터에서 무언가를 찾을 때 접근할 수 있도록 연결해주는 역할을 한다. 포스트그레스큐엘 앱에서 서버 세팅을 누르면 내 데이터의 포트를 확인할 수 있다. 디폴트 값은 5432이고 바꿀 수도 있다. 연결이라고 표현했지만 사실 컴퓨터 입장에서는 위의 정의처럼 식별자에 가깝다.
  • 서버

데이터가 저장되는 장소이다. 포스트그레스큐엘 앱에서 화면을 좌측으로 확장하고, + 버튼을 누르면 새로운 서버를 생성할 수 있게 되고 포트 번호가 부여된다. 통상적으로 서버의 자원들에 접근할 수 있도록 하는 작업이 호스팅이다.

  • 데이터베이스

앱에서 확인할 경우 서버 내에 생성한 데이터베이스들이 그래픽 사용자 인터페이스로 표시된다. 터미널에서 커맨드로 접속 시 \c를 통해 원하는 데이터베이스에 접속할 수 있다.

  • 테이블

데이터베이스 내에는 여러 개의 테이블이 있으며, 테이블은 행렬로 구성된다. 각각의 테이블이 관계성을 갖고 저장, 조작, 검색 되는것이 관계형 데이터베이스이다.

  • 사용자

처음 psql path 설정 시 저장된 것에 따라 아래와 같이 확인된다.[5]

name=# \c
You are now connected to database "name" as user "name".
name=# \c test
you are now connected to database "test" as user "name".[5]

다음은 포스트그레스큐엘의 고가용성(High Availability) 구성 종류이다.

  • 공유 디스크 페일오버
하드웨어 기능을 이용하는 방식으로 하나의 디스크 영역을 여러 서버가 공유하는 방식이고, 데이터베이스 사본을 1개만 유지함으로써 동기화 오버헤드를 방지한다. 디스크 영역에 장애가 발생할 경우 운영 서버와 대기 서버를 모두 사용할 수 없고, 운영 서버 실행 중에는 대기 서버가 공유 디스크 영역 사용 불가, 대기 서버는 어떠한 형태로도 활용 불가능하다. 네트워크를 이용해 데이터를 주고받는 저장장치이다.
  • 파일 시스템(블록 장치) 레플리케이션
하드웨어 기능(디스크 복제)을 이용한 복제 방식이고, 데이터베이스 운영으로 데이터 파일에 변경상황이 발생할 경우 다른 서버에 동기화한다. 운영 서버의 변경과 동일한 순서로 대기 서버를 복제하며 액티브-멀티 스탠바이로 많이 활용하고, 9.0 미만의 버전에서 많이 사용하던 방식이다. 대표적인 리눅스 솔루션으로 분산 복제 블록 장치(DRBD)가 있다.
  • 트랜잭션 로그 전달
운영서버의 미리 쓰기 로그를 대기서버로 전달하여 복제하는 방식으로 파일 기반 복사(Log Shipping) 방식과 스트리밍 복제 방식 그리고 두 가지를 혼용하는 방식을 사용할 수 있다. 9.0 이후 버전부터 공식 지원하고, 웜 예비 시스템/상시 대기 방식 서버가 운영 가능, 대기 서버를 리드 온리 데이터베이스로 활용이 가능하다. 또, 다중화 구조가 가능하다.
  1. 파일 기반 복사 : WAL 파일 하나의 용량은 16MB이고, 트랜잭션에 의해 용량이 가득 채워지면 로그-스위치가 일어난 후 이전 파일을 슬레이브로 전송한다. 비동기 방식을 사용하며 슬레이브에서는 WAL 파일에 기록된 트랜잭션을 적용하여 마스터와 동기화한다. 마스터 서버가 깨졌을 경우, 슬레이브로 전송하지 못한 WAL 파일의 트랜잭션은 복구할 수 없다. 즉, 로그-스위치 시점부터 깨짐 현상이 일어난 시점까지의 데이터를 손실할 수 있다.
  2. 스트리밍 복제 : 9.0 버전부터 공식 지원하고, 마스터 서버의 WAL 파일에 트랜잭션이 기록되면 해당 내용을 WAL 센더라는 프로세스가 슬레이브로 스트림하고, 슬레이브의 WAL 리시버 프로세스가 이를 받아 슬레이브에 트랜잭션을 적용하여 동기화하는 비동기 방식이며, 마스터의 트랜잭션 커밋과 슬레이브의 변경 표시 간에 약간의 지연이 발생할 수 있지만 파일 전송 기반 방식보다 미미한 수준이며 네트워크 상태에 따라 지연시간이 거의 없을 수 있다.
  • 트리거-베이스 마스터-스탠바이 복제
트리거 방식으로 마스터 서버의 데이터 변경에 관련된 모든 사항을 스탠바이 서버로 비동기 전송한다. 데이터 정의어(DDL) 복제는 지원하지 않고, 스탠바이 서버를 리드 온리 데이터베이스로 활용한다. Slony-I가 대표적인 솔루션이며 테이블 단위 복제 및 마스터-멀티 스탠바이가 가능하다.
  • 스테이트먼트-베이스드 복제 미들웨어
모든 질문 액션을 중간 미들웨어에서 데이터베이스 서버로 전달하는 방식이고, 모든 서버에서 쓸 수 있지만 한 서버에서만 읽기가 가능하다. 라이트 오버헤드(보통 30% 정도)가 발생할 수 있다. random(), CURRENT_TIMESTAMP, sequences를 사용할 때 서버에 따라서 다른 값이 될 수 있어, 이런 기능을 사용할 때는 특정한 한 서버만 지정하여 사용하는 식의 방법이 필요하다. 이와 같은 방법이 힘들 경우에는 그냥 마스터-스탠바이 구조로 사용하면 문제없다.
  • 비동기 멀티-마스터 복제
상시 연결을 유지하지 않는 서로 다른 시스템에서의 복제 방법이다. 각각의 서버는 독립적으로 운영되어야 하며, 주기적으로 비동기 방식으로 서버 동기화한다. 멀티 마스터 구축이 가능하고, bucardo가 대표적인 솔루션이다.
  • 동기식 멀티-마스터 복제
자료 변경에 대한 트랜잭션을 모든 서버로 전송하고, 자료 변경이 빈번한 환경에서는 잠금 유발로 인한 성능 저하가 발생한다. 싱글 서버를 사용할 때보다 쓰기 성능이 저하될 수 있다. 포스트그레스큐엘에서는 제공되지 않는 방식이다.[6]
기능

관계형 데이터베이스 관리 시스템의 기본적인 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. 안시:2008 구격을 상당 부분 만족시키고 있으며, 전부 지원하는 것을 목표로 계속 기능을 추가하고 있다. 포스트그레스큐엘은 기본적인 신뢰도와 안정성을 위한 기능뿐만 아니라 진보적인 기능이나 학술적 연구를 위한 확장 기능도 많이 가지고 있는데, 포스트그레스큐엘의 주요 기능은 네스트화 트랜잭션(세이브 포인트), 시점 복구, 온라인/핫 백업, 병렬 복원, 룰 시스템(질 재구성 시스템), 비-트리, 알-트리, 해시, 기스트 메소드 인덱시즈(GiST method indexes), 다중 버전 병행 수행 제어, 테이블 스페이스, 프로시듀얼 언어, 스키마 정보, I18N, L10N, 데이터베이스 & 열 수준 데이터 정렬, 배열, XML, 범용 고유 식별자(UUID) 타입, 자동 증가(수열), 비동기식 복제, 리밋/오프셋, 전문 검색(Full text search), SSL, IPv6(Internet Protocol Version 6), 키/값 스토리지, 테이블 인헤리턴스(Table inheritance) 등이 있다.[1]

항목별 제한사항
항목 제한사항
최대 데이터베이스 크기
(Database Size)
무제한
최대 테이블 크기
(Table Size)
32TB
최대 레코드 크기
(Row Size)
1.6TB
최대 컬럼 크기
(Field Size)
1GB
테이블당 최대 레코드 개수
(Rows per Table)
무제한
테이블당 최대 컬럼 개수
(Columns per Table)
250~1600개
테이블당 최대 인덱스 개수
(Indexes per Table)
무제한
[1]
개발 프로세스

포스트그레스큐엘의 개발 프로세스 모델은 소수 주도의 커뮤니티 기반 오픈 소스 프로젝트이다. 이는 리눅스, 아파치, 이클립스 프로젝트와 같이 소수의 관리자와 다양한 개발자 그리고 다수의 사용자가 프로젝트 구성원을 이루고 있으며, 소수의 관리자 그룹(Core Team)은 다수의 사용자로부터의 요청과 피드백을 수집(우선순위를 정하기 위해 투표 방식을 활용하기도 한다)하여 제품의 방향을 결정하고 코드의 최종 승인 및 릴리스 권한을 행사한다(마이에스큐엘 또는 제이보스와 같은 기업 관리형 개발프로세스와는 다른 모델로 분류된다). 개발자 그룹은 코드 커미터, 코드 개발자/기여자로 구성되어 있으며 이들은 미국, 일본, 유럽 등의 여러 나라에 분포되어 있다. 다양한 개발자들에 의해 개발된 코드는 다양한 리뷰 과정과 코어 팀의 승인을 거처 제품에 반영이 된다. 커뮤니티에서는 오래전부터 사용해오던 메일링 리스트가 주로 사용되고 있으며, 매뉴얼을 포함한 다양한 문서들이 공식 홈페이지에서 잘 관리되고 있다.[3]

경쟁 제품[edit | edit source]

포스트그레스큐엘은 엔터프라이즈급 상용 데이터베이스와 비교되기를 원하나 주로 유명 오픈소스 데이터베이스 관리 시스템이 비교 대상이 된다. 오픈소스 데이터베이스 관리 시스템의 캐치프레이즈로 제품 특징만을 나열해 보면 다음과 같다.

  • 포스트그레스큐엘 : 세계에서 가장 진보된 오픈 소스 데이터베이스이다.
  • 마이에스큐엘 : 세계에서 가장 인기 있는 오픈 소스 데이터베이스이다.
  • 파이어버드 : 실제 오픈 소스 데이터베이스이다.
  • 큐브리드 : 웹 애플리케이션에 최적화된 오픈 소스 데이터베이스이다.
  • 에스큐엘라이트 : 독립된 라이브러리, 서버 리스, 제로-구성, 트랜잭션 에스큐엘 데이터베이스 엔진이다.[3]

캐치프레이즈만으로 제품을 비교하긴 어렵지만 포스트그레스큐엘은 진보와 개방을 표방하고 있다는 것을 알 수 있다.

포스트그레스큐엘이 경쟁 제품으로 내세우는 제품에 대한 비교
경쟁 제품 비교
오라클 오랫동안 검증된 많은 양의 코드, 다양한 사례가 있지만 비용이 많이 든다.
디비투, 엠에스에스큐엘 오라클과 비슷하다.
마이에스큐엘 다양한 응용과 사례가 있지만, 기업형 개발 모델과 라이선스를 부담한다.
다른 상용 데이터베이스 오픈소스 데이터베이스 관리 시스템에 의해 세력이 기울고 있다.
타 오픈소스 데이터베이스 프로젝트에 개발자를 끌어들이기 위해 노력 중이다.

이전부터 포스트그레스큐엘 진영은 엔터프라이즈 시장에 진출하려는 시도를 계속해왔고, 2004년에는 포스트그레스큐엘을 이용한 전문 기업인 엔터프라이즈디비가 생겨나 엔터프라이즈 데이터베이스 관리 시스템 시장을 좀 더 확고히 다지기 위한 노력을 했다. 대표적인 산출물이 포스트그레스 플러스 어드밴스드 서버 제품의 출시이다. 이는 오픈소스 포스트에스큐엘에 오라클 호환성 기능(피엘/에스큐엘, 에스큐엘 구문, 함수, 데이터베이스 링크, OCI 라이브러리 등 지원)과 관리 도구를 추가해 용이한 데이터 및 응용 마이그레이션과 오라클 대비 20% 이하의 비용 절감을 목표했다. 또한 포스트그레스큐엘 전문가의 교육, 컨설팅 마이그레이션 및 기술 지원 서비스 등을 제공하는 등의 차별화된 서비스를 제공하며 각종 분야 약 300여 개의 레퍼런스 사이트를 통해 모든 업계에서 사용 가능한 데이터베이스임을 홍보하며 세계 각지에 사용자층을 늘렸다.[3]

마이에스큐엘 8과 포스트그레스큐엘 10의 비교

마이에스큐엘 8은 전 버전까지는 포스트그레스큐엘보다 전체적으로 에스큐엘 기능이 적었다. 하지만 8버전에서 Common Table Expressions, 윈도우 기능 추가 등이 나오면서 차이가 많이 줄어들었다. 단점으로는 오라클사의 소유라는 것이지만 개발은 오라클사로 넘어간 뒤, 더 가속화됐다. 또 해시 조인이 없다. 마리아 데이터베이스는 있지만, 대량 데이터 처리가 불리하고 심지어 머지 조인(Merge Join)도 없다. 포스트그레스큐엘 10의 비교 단점은 복제 설정의 유연성이 결여됐고, 에스큐엘 성능이나 파일 크기에 대해 불안정하고 예상하기 어렵다. 업데이트에 관해서 마이에스큐엘보다 떨어진다.[7]

동향[edit | edit source]

대부분의 포스트그레스큐엘 사용기를 읽어 보면 알 수 있듯이 포스트그레스큐엘을 사용하는 사람들은 대부분 개발자적 성향을 가지고 있으며 제품에 대한 애정도와 충성도가 높은 편이다. 다른 제품과 비교하면 일반적으로 부족하지 않은 기능과 무난한 성능을 가지고 있고, 또 하나 중요한 것은 새로운 개발자를 끌어들이기에 좋은 입문 조건들을 가지고 있다. 프로젝트 페이지에 잘 정리된 매뉴얼, 문서와 300종 이상의 관련 서적, 그리고 세계 각국에서 개최되는 매년 10회 이상의 다양한 세미나와 콘퍼런스 등도 이를 뒷받침하고 있으며 전문 잡지까지 등장했다. 이는 모두 왕성한 커뮤니티 활동의 산물이라 할 수 있다.

사용자가 꼽는 포스트그레스큐엘의 대표적인 특징

신뢰도는 제품의 최우선 사항, ACID 및 트랜잭션 지원, 다양한 인덱싱 기법 지원, 유연한 전문 검색 기능, 동시성 성능을 높여주는 다중 버전 동시성 제어 기능, 다양하고 유연한 복제 방식 지원, 다양한 프로시져/인터페이스 언어, 질 좋은 커뮤니티 지원 및 상업적 지원, 잘 만든 문서 및 충분한 매뉴얼 제공, 다양한 확장기능과 확장 기능 개발의 용이성 등이 있다.[3]

차별화된 확장 기능

지리 정보체계 애드-온 지원(PostGIS), Key-Value 스토어 확장 기능(HStore), 데이터베이스 링크 기능, 크립토와 UUID 등 다양한 함수, 타입 지원 외에도 실용적이거나 실험적인 많은 확장 기능들이 있다. 이 중 많이 회자되는 지리 정보체계 기능에 대해 간략히 살펴보면 PostGIS는포스트그레스큐엘에 오픈 지리 정보체계 규격을 준수하며 지오그래픽 오브젝트를 지원할 수 있게 하는 미들웨어 형태의 확장 기능이다. 2001년부터 개발됐으며 많은 기능과 성능 개선을 통해 오픈 소스로는 가장 많은 사용자를 확보했다. 상용 제품으로는 오라클 스페이셜(Oracle Spatial), 디비투, 엠에스에스큐엘 서버 등도 있으나 비용 대 성능 측면에서 상용 제품은 환영받지 못한다. 게다가 PostGIS/포스트그레스큐엘의 제공 기능이나 성능은 오라클과 비견할만하다는 벤치마크 자료가 있다. 동향을 살펴보면 지리 정보 체계 분야 외에도 클라우드와 관련해서도 포스트그레스큐엘가 많이 회자되고 있다. DbaaS(DB As A Service)를 제공하는 기업이 늘어나면서 비용과 라이선스 측면에서 유리한 포스트그레스큐엘에 대한 수요가 증가했고 엔터프라이즈디비 사는 이에 맞추어 클라우드 시장을 겨냥하여 다음의 특징을 갖는 포스트그레스 플러스 클라우드 데이터베이스 제품을 출시했다.

  • 간단한 설치 및 웹 기반 관리
  • 자동 확장, 로드 밸런싱 및 페일오버
  • 자동 온라인 백업
  • 데이터베이스 복제

이는 아마존 EC2(Amazon Elastic Compute Cloud), 유칼립투스 클라우드(Eucalyptus cloud), 레드햇 오픈시프트 개발 플랫폼 클라우드 등에서 사용되며 다른 헤로쿠, 닷클라우드 등의 많은 클라우드 서비스 업체에서도 포스트그레스큐엘을 사용하는 서비스를 제공하고 있다.[3]

참고문헌[edit | edit source]

같이 보기[edit | edit source]

각주[edit | edit source]

  1. 1.0 1.1 1.2 1.3 1.4 망나니개발자, 〈(PostgreSQL) PostgreSQL이란?〉, 《티스토리》, 2020-04-09
  2. Augustus, 〈공간 DB 활용하기 - 1. Postgresql 설치〉, 《네이버 블로그》, 2020-07-29
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 김성규, 〈한눈에 살펴보는 PostgreSQL〉, 《네이버 디투》, 2012-12-15
  4. 다우기술 OSS사업팀, 〈PostgreSQL / Postgres Plus〉, 《다우기술》
  5. 5.0 5.1 chloe, 〈Postgresql 포스트그레: 데이터의 구조〉, 《네이버 블로그》, 2019-12-12
  6. Jiny, 〈(HA) 1. PostgreSQL HA종류〉, 《네이버 카페》, 2018-07-05
  7. Neo orcl, 〈Mysql 8 vs PostgreSQL 10 간단 비교〉, 《네이버 카페》, 2019-01-02