PostgreSQL이란?

PostgreSQL(줄여서 'Postgres'라고도 함)은 세계에서 가장 발전된 오픈소스 객체 관계형 데이터베이스입니다. 엔터프라이즈급 성능을 위해 설계되었으며 강력한 기능과 신뢰성으로 가치를 인정받고 있습니다.

Postgres는 1986년 캘리포니아 대학교 버클리의 이전 데이터베이스인 Ingres의 발전으로 시작되었습니다. 1994년부터 쿼리와 트랜잭션에 구조화된 쿼리 언어(SQL)를 사용했으며 개인 및 기업 개발자 커뮤니티에서 이를 지속적으로 업데이트하고 있습니다.

오랜 SQL 개발 및 사용 역사를 바탕으로 PostgreSQL은 전 세계에서 가장 널리 사용되는 오픈소스 데이터베이스 중 하나가 되었으며 모든 주요 클라우드 공급업체에서 PostgreSQL 또는 PostgreSQL 파생 데이터베이스를 서비스로 제공하고 있습니다.


AlloyDB, PostgreSQL용 Cloud SQL, Spanner를 포함하여 Google Cloud의 PostgreSQL 데이터베이스 중에서 원하는 제품의 무료 체험판에 가입하세요.

관계형 데이터베이스란 무엇인가요?

관계형 데이터베이스는 데이터를 행과 열로 구성된 정형 테이블에 저장하고 테이블 여러 개에서 연결된 데이터에 대한 정보를 유지합니다. 

예를 들어 소매 은행에는 고객 정보 행이 포함된 테이블이 있을 수 있으며 각 행에는 고객 이름, 전화번호, 주소가 열로 포함되어 있습니다. 트랜잭션 정보를 저장하는 두 번째 테이블이 있을 수 있습니다. 관계형 데이터베이스는 두 테이블에서 행을 연결하므로 은행은 어떤 고객이 어떤 거래를 했는지 추적할 수 있습니다. 

PostgreSQL 기본사항

'쿼리'는 데이터베이스에서 정보를 요청하는 단일 작업입니다. '트랜잭션'은 데이터베이스의 데이터를 조작할 수 있는 일련의 작업입니다. 일반적으로 기본 스토리지 작업을 ‘CRUD’라고 합니다. CRUD는 create(만들기), read(읽기), update(업데이트), delete(삭제)의 약자입니다. 

PostgreSQL은 데이터베이스에서 정보 검색이 최적화되도록 색인을 사용합니다. 색인은 더 빠르게 검색할 수 있도록 재구성된 테이블의 일부 사본입니다. 개념적으로는 책 전체를 살펴보지 않고도 항목을 빠르게 찾을 수 있도록 도와주는 책 말미에 있는 색인과 유사합니다.

PostgreSQL은 관계형 데이터베이스로서 '스키마'라고 하는 공식 설명을 사용하여 포함된 데이터의 구조를 설명합니다. 특히 스키마는 데이터베이스의 테이블, 색인, 함수의 모음이며 PostgreSQL에서는 여러 스키마를 지원합니다. 

데이터베이스 전문가가 데이터와 애플리케이션 사용자의 데이터 사용 방식을 가장 잘 나타내는 스키마와 색인 세트를 설계해야 합니다. 또한 데이터를 보호하고 데이터베이스가 원활하게 작동하도록 유지보수 및 운영 작업도 담당합니다.

PostgreSQL은 오픈소스 데이터베이스입니다.

버클리에서 개발된 이래 PostgreSQL은 오픈소스로 유지되고 있습니다. 즉, 코드를 보고 수정하고 배포하는 데 제한이 없습니다. 

오픈소스 데이터베이스는 다양한 클라우드 및 비클라우드 플랫폼에서 실행되므로 개발자는 이러한 데이터베이스를 라이선스 비용이 없고 배포 시 유연성을 최대한 제공하는 애플리케이션에 사용할 수 있습니다. 개발자 커뮤니티에서 소프트웨어 개선 및 유지보수에 기여하므로 보안과 신뢰성이 향상됩니다.

PostgreSQL 이점

최근 몇 년 동안 PostgreSQL 인기가 높아져 PostgreSQL은 전 세계에서 가장 많이 사용되는 데이터베이스 중 하나가 되었습니다. 이 데이터베이스에는 여러 가지 이점이 있습니다.

  • 안정성 및 보안. PostgreSQL은 내결함성이 우수해 데이터 내구성을 유지하고 업타임을 극대화합니다. 강력한 인증 및 승인 모델은 물론 SSL을 사용하는 엔드 투 엔드 데이터 암호화를 포함한 여러 암호화 방법을 지원합니다.
  • 고성능. PostgreSQL은 데이터를 효율적으로 삽입, 삭제, 수정할 수 있도록 구조화된 방식으로 데이터를 저장합니다. 조회 및 조인에도 효율적입니다. 또한 PostgreSQL은 CPU 여러 개를 병렬로 확장할 수 있어 쿼리 속도가 더욱 빨라집니다. 
  • 준수. PostgreSQL 데이터베이스는 SQL 표준을 준수하므로 앱 빌드와 기존 앱 마이그레이션 모두 간편하게 수행할 수 있습니다. 또한 ACID를 준수하므로 하드웨어, 소프트웨어 또는 네트워크가 중단되는 경우에도 데이터가 유효합니다.
  • 우수한 확장 가능성. PostgreSQL은 다양한 데이터 유형(고급 및 사용자 생성 유형 포함), 여러 코딩 언어, 커스텀 함수 작성 기능을 지원합니다. 또한 확장 메커니즘이 있어 새 기능을 추가할 수도 있습니다.
  • 간단한 모니터링. PostgreSQL은 서버 활동 수집과 보고를 지원하는 여러 통계를 제공합니다. 데이터베이스 활동을 모니터링하고 성능을 분석하는 여러 외부 도구를 사용할 수 있습니다.

PostgreSQL은 어디에 사용되나요?

PostgreSQL은 유연성, 신뢰성, 강력한 특성 세트로 인해 다양한 애플리케이션에 사용됩니다. 다음은 몇 가지 일반적인 용도입니다.  

보안이 강화된 애플리케이션으로 신뢰를 얻고 있으며 감사 가능성, 규정 준수, 데이터 보호로 유명합니다.

PostgreSQL은 수십억 개의 행에서 쿼리를 처리할 수 있으며 일반적으로 데이터 웨어하우스와 기타 분석 시스템에 실시간 운영 데이터를 추가하는 데 사용됩니다. 실제로 널리 사용되는 다수의 데이터 웨어하우스 제품이 PostgreSQL에서 발전한 것입니다.

확장 가능하고 강력하며 높은 수준의 트래픽을 처리할 수 있는 PostgreSQL은 모바일, 웹, 소셜 미디어, 기타 대용량 애플리케이션에서 사용되는 신뢰할 수 있는 제품입니다.

PostgreSQL은 지리적 데이터를 지원하므로 애플리케이션에서 지점 간 거리를 계산하고 내비게이션, 물류, 농업 애플리케이션을 위한 지리 공간 계산을 수행할 수 있습니다.

PostgreSQL은 고성능 벡터 검색을 제공하고 일반적으로 대규모 언어 모델(LLM)에 입력을 제공하는 데 사용되며 종종 검색 증강 생성(RAG)을 통해 이러한 모델을 확장합니다. 빌드하는 데 주로 PostgreSQL을 선택하는 개발자

PostgreSQL은 일반적으로 조직에서 기존 앱을 최신 오픈소스 플랫폼으로 이전하는 데 사용됩니다.

PostgreSQL 비교

다음 섹션에서는 PostgreSQL 생태계를 자세히 설명합니다. AlloyDB와 Aurora, SQL Server, MySQL, Oracle을 비교하고 완전 관리형 PostgreSQL 데이터베이스와 자체 관리형 PostgreSQL 데이터베이스의 차이점을 알아보세요.

시중에는 PostgreSQL과 호환성 수준이 다양한 여러 상용 제품이 판매되고 있습니다. Google Cloud의 AlloyDB와 AWS의 Aurora가 가장 인기 있는 두 가지 제품이 있습니다. 

AlloyDB는 모든 플랫폼과 클라우드에서 실행되지만 Aurora는 Amazon Web Services(AWS)에서만 실행됩니다. 또한 AlloyDB는 PostgreSQL에 중점을 두지만 Aurora는 PostgreSQL 및 MySQL 엔진을 모두 제공합니다.

AlloyDB가 기업에서 널리 사용되는 이유는 다음과 같습니다.

  • 데이터베이스 레이어에는 초고속 캐시를 포함하여 스택 전체에서 여러 레이어의 캐싱 사용 
  • 분석 쿼리를 가속화하는 열 기반 엔진 기본 제공
  • ML 지원 시스템을 사용하여 진공 청소, 스토리지, 메모리 관리와 같은 관리 태스크 간소화
  • 데이터베이스 내에서 고성능 벡터 검색, 벡터 임베딩, 자연어 지원으로 생성형 AI 앱을 빌드할 수 있는 플랫폼인 AlloyDB AI 포함
  • 스토리지 요금을 사용한 만큼만 지불하고 I/O 요금이 없는 투명하고 예측 가능한 가격 책정

PostgreSQL은 대부분의 운영체제에서 실행되는 오픈소스 데이터베이스이며 SQL Server는 Microsoft Windows 및 Linux에서 실행되는 상용 제품입니다. 다수의 공급업체에서 둘 다 관리형 클라우드 서비스로 제공합니다.

두 시스템 모두 여러 핵심 기능을 공유하지만 몇 가지 차이점이 있습니다. PostgreSQL의 주요 이점은 동시 처리에 멀티 버전 동시 실행 제어(MVCC)를 사용한다는 점입니다. 따라서 교착 상태가 거의 발생하지 않으며 높은 트랜잭션 속도를 처리할 수 있습니다. SQL Server는 AlloyDB에서도 제공하는 고성능 인메모리 데이터베이스 기능으로 유명합니다.

전체 비교는 PostgreSQL과 SQL Server 비교를 참조하세요.

MySQL은 SQL 기반의 관계형 데이터베이스이며 PostgreSQL은 객체 관계형 데이터베이스입니다. 둘 다 오픈소스이지만 PostgreSQL은 상업적 배포를 허용하는 라이선스를 준수합니다. Oracle에서 MySQL 오픈소스 프로젝트를 후원합니다.

PostgreSQL은 프로세스 추가를 통해 확장되며 이는 신뢰할 수 있는 애플리케이션에 적합한 방식임이 입증되었습니다. PostgreSQL의 확장 메커니즘으로 인해 커뮤니티 기여에 더 널리 사용되는 플랫폼이 되었습니다.

MySQL은 스레드 추가를 통해 확장되며 이는 일반적으로 리소스가 가벼운 소규모 애플리케이션에 적합합니다.

개인적인 선호도와 참여하는 숙련된 개발자의 경험에 따라 선택이 달라지는 경우가 많습니다. 

PostgreSQL 및 MySQL 간에는 몇 가지 기술적 차이점이 있습니다. 

PostgreSQL

  • 복잡한 데이터 유형과 확장 메커니즘 지원
  • MVCC를 지원하므로 교착 상태가 거의 발생하지 않으며 데이터 수정 가능
  • 확장성이 뛰어난 다양한 데이터 유형 배열 지원
  • B-Tree, HASH, GiST, GIN을 포함하여 다양한 색인 유형 지원
  • 가비지 컬렉션을 위한 VACUUM 프로세스 구현

MySQL

  • 기존 관계형 데이터베이스 개념에 집중
  • 스토리지 엔진에 따라 MVCC 지원
  • 표준 데이터 유형 세트 지원
  • 제한된 색인 세트 제공
  • 전용 영구 삭제 스레드 사용

PostgreSQL 및 Oracle 모두 SQL을 지원하고 유사한 절차적 언어(Oracle의 경우 PL/SQL)를 사용하는 인기 있는 관계형 데이터베이스입니다. 둘 다 확장성과 보안이 뛰어납니다. 

Oracle은 모든 규모의 기업에서 업무에 중요한 애플리케이션을 구동하는 데 사용되며 가용성과 고급 기능(예: 클러스터링) 지원으로 유명합니다. 

PostgreSQL은 재해 복구, 고성능, 기본 제공 복제를 포함한 Oracle과 유사한 기능을 제공합니다. 기업은 Oracle에 비해 더 개방적이고 경제적인 대안으로 PostgreSQL을 선택합니다.

모든 데이터베이스와 마찬가지로 자체적으로 관리하려면 팀 내 기술 경험이 필요합니다. 이러한 경험에는 아키텍처 구성 및 유지관리, 작업 확장, 일반적인 데이터베이스 관리 기술(예: 업그레이드, 백업, 보안 유지보수, 재해 복구 수행 및 패치 설치)에 대한 지식이 포함됩니다. 개발팀에서 애플리케이션에 집중할 수 있도록 완전 관리형 데이터베이스를 선호하는 경향이 높아지고 있습니다.

완전 관리형 데이터베이스:

  • 사용해 보기 쉽고 사용이 간편함
  • 간단하게 또는 자동으로 확장
  • 자동 백업 및 업그레이드 제공
  • 고가용성 기본 제공 및 재해 복구 제공

그러나 고유한 애플리케이션 니즈로 인해 데이터베이스 환경을 완벽하게 제어해야 하는 경우 자체 관리형 데이터베이스를 사용하면 유연성을 확보할 수 있습니다.

PostgreSQL 확장 프로그램 지원

확장 프로그램을 사용하면 데이터베이스의 기능을 확장하고 특정 요구사항에 맞게 조정할 수 있습니다. PostgreSQL은 포괄적인 확장 프로그램 지원을 제공하며, 확장 프로그램은 외부에서 개발된 것들을 포함하여 기본 제공되는 기능과 동일하게 작동합니다.

일반적으로 사용되는 확장 프로그램은 다음과 같습니다.

  • PostGIS. 지리 공간 데이터의 저장, 색인 생성, 쿼리를 지원합니다. 내비게이션을 비롯한 다양한 지리 공간 애플리케이션에 사용됩니다.
  • pgvector.벡터의 저장, 색인 생성, 쿼리, 벡터 유사성 검색 실행을 지원합니다. 생성형 AI 및 자연어 처리에 사용됩니다.
  • pglogical. 논리적 복제를 사용하여 데이터를 강력하게 복제합니다. PostgreSQL 데이터베이스 간의 복제에 사용되며 세분화된 테이블 수준 복제를 지원합니다.

PostgreSQL 데이터 유형

PostgreSQL은 기본 데이터 유형과 불리언, 숫자, 정수, 타임스탬프, 배열 등을 포함하여 일반적으로 다른 데이터베이스에서 발견되지 않는 고급 데이터 유형을 모두 지원합니다. 개발자는 자체 데이터 유형을 만들 수도 있습니다.

PostgreSQL에서 어떤 언어를 지원하나요?

기본 절차적 언어는 pgSQL(PL/pgSQL)의 확장 프로그램이며, 표준 배포판에는 Tcl, Perl, Python의 절차적 언어 확장 프로그램(PL/Tcl, PL/Perl, PL/Python으로 표시됨)이 포함되어 있습니다. 이러한 로드 가능한 절차적 언어를 사용하면 코딩 언어를 사용하여 함수를 만들고 절차를 트리거할 수 있습니다. 

Java, Ruby, C, C++, Delphi, JavaScript 등 다양한 언어가 확장 프로그램을 통해 지원됩니다.

PostgreSQL을 사용하면 데이터베이스를 다시 컴파일하지 않고도 여러 언어로 코딩할 수 있어 개발자에게 큰 이점이 됩니다.

PostgreSQL에서 ACID 규정을 준수하나요?

예, PostgreSQL은 2001년부터 ACID를 준수해 왔습니다. 

ACID(원자성, 일관성, 격리, 내구성)는 트랜잭션 데이터베이스에서 데이터의 유효성을 보장하는 방식을 설명하는 속성 집합입니다. ACID 규정 준수로 네트워크 중단 또는 하드웨어 장애가 발생하는 경우에도 데이터 품질을 보장하고 데이터 손실이나 손상 없이 동시에 읽기 및 쓰기를 지원합니다. 이러한 원칙은 금융 및 의료를 비롯한 많은 산업 분야의 애플리케이션에 매우 중요합니다. 

예를 들어 은행 애플리케이션이 데이터베이스 내의 두 계좌 간에 잔액을 이체한다고 가정해 보겠습니다. 트랜잭션 도중에 중단되거나 실패하는 경우 ACID를 준수하는 데이터베이스는 금액이 사라지거나 한 번 이상 입금되지 않도록 보장하며 계좌 잔액은 항상 유효합니다.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud