의견.png

포스트그레스큐엘

해시넷
ansdj17 (토론 | 기여)님의 2020년 8월 11일 (화) 11:02 판
이동: 둘러보기, 검색
포스트그레스큐엘(PostgreSQL) 로고
포스트그레스큐엘(PostgreSQL) 로고와 글자

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

개요

포스트그레스큐엘(PostgreSQL)은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)로, 엔터프라이즈급 데이터베이스 관리 시스템(DBMS)의 기능과 차세대 데이터베이스 관리 시스템에서나 볼 수 있을 법한 기능들을 제공한다.약 20여년의 오랜 역사를 갖는 포스트그레스큐엘은 다른 관계형 데이터베이스 시스템과 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있다.[1]

역사

포스트그레스큐엘의 조상에는 여러 제품이 있는데, 그중 인그레스(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)가 존재했으며, 그중 많은 수가 포스트그레스큐엘에 다시 영향을 주거나 혹은 사라졌다. 포스트그레스큐엘의 로고는 '슬로닉'이라는 이름을 가진 코끼리다. 코끼리를 로고로 사용하게 된 정확한 근원은 찾을 수 없으나 과거의 흔적을 뒤져 보면, 오픈소스화된 직후 한 사용자가 아가사 크리스티의 소설 '코끼리는 기억한다'에서 착안해 제안한 것으로 보인다. 이후 모든 공식적인 자리에서 이 코끼리 로고는 빠지지 않고 등장하게 됐다. 코끼리는 크고 강하고 믿음직하며 기억력이 좋다는 이미지 때문에 하둡이나 에버노트도 코끼리를 공식 로고로 사용하고 있다.[2]

특징

  • 휴대가 쉽다 : 포스트그레스큐엘은 안시 시(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]
구조

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

기능

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

같이 보기


  의견.png 이 포스트그레스큐엘 문서는 데이터에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.  

  1. 1.0 1.1 1.2 1.3 1.4 망나니개발자, 〈(PostgreSQL) PostgreSQL이란?〉, 《티스토리》, 2020-04-09
  2. 김성규, 〈한눈에 살펴보는 PostgreSQL〉, 《네이버 디투》, 2012-12-15