Skip to content

PostgreSQL #
Find similar titles

Structured data

Category
Management

PostgreSQL #

PostgreSQL은 북미와 일본에서는 높은 인지도와 많은 인기를 얻고 있는 RDBMS다. 국내에서는 아직 잘 사용하지 않고 있지만, 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계된 PostgreSQL은 대용량의 복잡한 트랜잭션 처리를 위한 RDBMS이다. PostgreSQL은 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 과거 IBM에서 작성된 RDBMS의 화이트페이퍼를 기반으로 Oracle, DB2 그리고 PostgreSQL이 구현되었기 때문에 MySQL이나 mariaDB와 같은 오픈소스 제품과 달리 PostgreSQL의 경우 상용 RDBMS 급의 기능을 제공하는 오픈소스 DBMS이다 PostgreSQL은 가장 진보된 오픈소스 데이터베이스 시스템인 범용·객체 관계형 데이터베이스 관리 시스템이다. PostgreSQL은 캘리포니아에 있는 버클리 대학교에서 postgres4.2를 기반으로 개발되었다. PostgreSQL은 Unix와 유사한 플랫폼에서 실행되도록 설계되었다. 그러나 PostgreSQL은 Mac OS X, Solaris 및 Windows와 같은 다양한 플랫폼에서 실행될 수 있도록 설계되었다. PostgreSQL은 무료이며 오픈소스소프트웨어이다. 그렇기 때문에 어떤 형태로든 자유롭게 사용, 수정 및 배포할 수 있다. PostgreSQL은 Oracle 이전에도 MVCC(Multi-version Concurrency Control) 기능을 구현하는 최초의 데이터베이스 관리 시스템이다. C나 C++, Java등과 같은 다른 프로그래밍 언어를 사용하여 개발된 사용자 정의 함수도 추가할 수 있다.

PostgreSQL 주요 특징 #

  1. 관계형 모델

    Postgres 프로젝트 연구의 최초의 목적 중의 하나는 복합객체(complex object), 규칙(rule)들을 다룰 수 있으며, 고수준으로 확장 가능한 관계형 DBMS를 제작하려던 것이었다. 따라서 PostgreSQL 는 관계형 DBMS가 가지고 있는 거의 모든 기능이 있다. 예를 들면 SQL에서 서술적인 질의어의 사용과 질의 최적화, 동시성 제어, 트랜잭션 처리, 멀티 유저 기능 들을 제공하고 있다.

  2. 고수준 확장성

    PostgreSQL는 사용자 정의 오퍼레이터와 타입, 함수, 엑세스 메소드를 지원한다.

  3. 객체지향

    PostgreSQL 는 상속, 객체와 같은 객체지향개념에서 볼 수 있는 여러 특징을 초보적이나마 구현하고 있다. 이러한 특징 때문에 어떤 사람들은 PostgreSQL 을 설명할 때 ORDBMS라고 말하기도 한다.

  4. 안정성, 재해 복구

    • 미리 쓰기 로깅(WAL)
    • 복제: 비동기식, 동기식, 논리적
    • 시점 복구(PITR), 활성 대기
    • 테이블 스페이스
  5. 보안

    • 인증: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, 인증서 등
    • 강력한 액세스 제어 시스템
    • 열 및 행 수준 보안
    • 인증서 및 추가 방법을 사용한 다단계 인증
  6. 확장성

    • 저장 함수 및 프로시저
    • 절차적 언어: PL/PGSQL, Perl, Python (및 기타)
    • SQL/JSON 경로 표현식
    • 외부 데이터 래퍼: 표준 SQL 인터페이스를 사용하여 다른 데이터베이스 또는 스트림에 연결
    • 테이블에 대한 맞춤형 스토리지 인터페이스
    • PostGIS를 포함하여 추가 기능을 제공하는 많은 확장
  7. 국제화, 텍스트 검색

    • ICU 대조를 통한 국제 문자 세트 지원
    • 대소문자를 구분하지 않고 악센트를 구분하지 않는 데이터 정렬
    • 전체 텍스트 검색

공식 홈페이지 #

http://www.postgresql.org/

PostgreSQL Limits #

Item Upper Limit Comment
database size unlimited
number of databases 4,294,950,911
relations per database 1,431,650,303
relation size 32 TB with the default BLCKSZ of 8192 bytes
rows per table limited by the number of tuples that can fit onto 4,294,967,295 pages
columns per table 1600 further limited by tuple size fitting on a single page; see note below
columns in a result set 1664
field size 1GB
identifier length 63 bytes can be increased by recompiling PostgreSQL
indexes per table unlimited constrained by maximum relations per database
columns per index 32 can be increased by recompiling PostgreSQL
partition keys 32 can be increased by recompiling PostgreSQL

튜닝 - DB 설치 후 하면 좋은 작업 #

PostgreSQL을 처음 설치한 후 생각보다 속도가 나오지 않아서 당황한 적이 있다. 이는 환경설정에 메모리 크기가 작게 잡혀있어서 생기는 문제로 설정을 변경하여 주면 빠른 속도를 얻을 수 있다.

shared_buffers #

데이터베이스에 접근할 시 데이터를 읽는 데 필요한 메모리의 크기를 늘려서 느린 디스크 속도를 보완한다. 이 메모리의 크기를 정해주는 옵션이 shared_buffers 이다.

PostgreSQL을 설치하면 기본 설정이 32M로 되어있다. 이 값을 늘려주면 좀 더 나은 속도를 얻을 수 있다. 보통 시스템에 설치된 메모리의 1/4 ~ 1/2 정도로 설정하는데 이는 시스템에 따라 사용자가 적당히 설정해주면 된다.

예) shared_buffers = 2GB

참고 사이트 #

Incoming Links #

Related Data Sciences #

Suggested Pages #

0.0.1_20210630_7_v33