Z.PROJ

PostgreSQL

최 수빈 2025. 1. 8. 16:38

PostgreSQL

 

PostgreSQL

 

 

기능이 풍부하고 확장성이 높은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)

 

 

안정성과 성능이 뛰어나며, 다양한 데이터 모델 및 애플리케이션 요구 사항을 충족하는 고급 기능을 제공

다양한 확장 모듈과 관리 도구를 통해 웹 애플리케이션, 데이터 분석 플랫폼, 고가용성 시스템 등 모든 규모의 프로젝트에서 활용 가능

 

 

오픈 소스: 누구나 무료로 사용하고 수정, 배포 가능

ACID 준수: 안정적인 데이터 무결성과 트랜잭션 관리 보장

확장성: 사용자 정의 데이터 타입, 함수, 연산자 등을 추가 가능

JSON 및 NoSQL 지원: JSON 및 JSONB 타입을 통한 비정형 데이터 처리와 저장(일부의 NoSQL 워크로드 처리 기능) 지원

복잡한 쿼리 처리: 복잡한 JOIN, 윈도우 함수, 서브쿼리 등을 효율적으로 처리

강력한 커뮤니티: 활발한 글로벌 개발자 커뮤니티, 풍부한 문서 지원

 표준 SQL 준수: ANSI/ISO SQL 표준을 대부분 준수

 

 

 

주요 기능

 

데이터 관리 기능

다양한 데이터 타입: 기본 데이터 타입 외에 배열, JSON, XML, UUID, HSTORE 등 지원

인덱스 유형: B-Tree, Hash, GiST, GIN, BRIN 등 다양한 인덱스 제공

복제 및 고가용성: 스트리밍 복제, 논리 복제, 클러스터링 지원

 

확장 기능

PostGIS: 지리정보 시스템(GIS) 데이터 관리 및 분석 

pgRouting: 경로 탐색 및 네트워크 데이터 분석

 

보안 및 관리

백업 도구(pg_basebackup, pg_dump 등)와 고급 권한 관리 시스템 제공

강력한 모니터링 도구(EXPLAIN, pg_stat 등)로 성능 분석 가능

 

 

 

PostgreSQL 설치(Mac OS)

 

PostgreSQL설치

brew install postgresql

 

설치 후 PostgreSQL 서버 시작

brew services start postgresql

 

brew로 간단 설치.

왜 안했노. 왜 미뤘노.

 

PostgreSQL은 서버-클라이언트 아키텍처 기반 데이터베이스 엔진으로 설계돼서 GUI가 필수 요소는 아님

 

CLI(Command-Line Interface) psql을 기본 인터페이스로 제공

→ GUI를 내장하지 않아서 다양한 운영체제, 환경, 워크플로우에 맞게 유연하게 사용할 수 있고 사용자는 GUI도구(DBeaver, pgAdmin, DataGrip 등과 같은 다양한 오픈 소스 및 상용 GUI 도구)를 자유롭게 선택, 연결 가능

 

PostgreSQL은 CLI(psql)를 제공하지만, GUI도구를 사용하면 DB관리, 쿼리 작업이 쉬우니까(라고 쓰고 초보자의 한계라고 읽어보세요)

pdAdmin : PostgreSQL 공식 GUI 도구

DBeaver : 다중 데이터베이스 지원, 사용자 친화적 인터페이스

DataGrip : JetBrains에서 제공하는 상용 GUI 도구

등등.. 중에서 나는 전에 필요해서 설치해 뒀던 DBeaver 간다.

 

 

 

터미널에서 설치할 때 뭐 설정하는 거 있었는데 안 하면 안넘어가는 건 설정해주고 Enter하면 넘어가는건 걍 넘김

아직 중요한 데이터도 없을뿐더러 귀찮.

나중에 설정할 수 도 있다 하니까 설정하게 되면 또 해보고 플로우 정리할 예정

 

코끼리 연결 완료 ~ !

 

 

전에 쓰던 MariaDB, MySQL이랑 뭐가 다름?

항목 PostgreSQL MariaDB/MySQL
데이터 모델 관계형 + NoSQL 기능(JSONB, HSTORE) 지원 주로 관계형 데이터 모델 (NoSQL 기능 제한적)
확장성 사용자 정의 타입, 함수, 연산자 추가 기능 확장성은 있으나 PostgreSQL만큼 유연하지 않음
JSON 지원 JSONB를 통해 고성능 JSON 검색 및 인덱싱 지원 JSON 지원은 있지만 기능성과 성능은 PostgreSQL보다 제한적
트랜잭션 완전한 ACID 준수 및 MVCC 구현 ACID 준수(MySQL은 innoDB 엔진 사용 시)
기능 추가 논리 복제, 파티셔닝, 고급 쿼리 최적화 등 MariaDB는 MySQL보다 일부 기능 개선
라이선스 PostgreSQL 라이선스 (BSD 유사, 상업적 제한 없음) MariaDB는 GPL v2, MySQL은 Oracle 소유

 

 

DB관리하면서 CLI만 사용하는 경우가 있을까 !?

항목 CLI(psql) GUI
학습 곡선 높음(명령어를 익혀야 함) 낮음(직관적인 UI 제공)
성능 가볍고 빠름 GUI 렌더링으로 인해 상대적으로 무거울 수 있음
자동화 및 스크립팅 CLI로 스크립트 작성 가능 GUI는 제한적
복잡한 쿼리 작성 복잡한 쿼리를 직접 작성 쿼리 빌더로 시작적 지원
관리 기능 모든 기능 지원 GUI가 제공하는 범위 내에서만 지원
유연성 네트워크 독립적, SSH로 원격 작업 가능 GUI 도구는 네트워크 연결 필요할 수 있음

 

효율성이나 유연성, 자동화 가능성 면에서 CLI를 사용하나 봄.. 나는 GUI가 제공하는 관리 기능 쓰는 것도 벅찰 듯한데

뭐 더 필요하다면 그때 가서 생각해 보겠다.

 

 

기본 명령어

 

데이터베이스 접속(bash)

psql -U 사용자명 -d 데이터베이스명

 

 

데이터베이스 생성(sql)

CREATE DATABASE 데이터베이스명;

 

 

테이블 생성(sql)

CREATE TABLE 테이블명 (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

 

 

데이터 삽입(sql)

INSERT INTO 테이블명 (name, age) VALUES ('최수빈', 7);

 

 

데이터 조회(sql)

SELECT * FROM 테이블명;

 

 

 

사용 사례

 

  • 데이터 분석 및 시각화 플랫폼
  • 웹 애플리케이션의 백엔드 데이터베이스
  • NoSQL과 관계형 데이터를 혼합한 애플리케이션
  • GIS(지리정보시스템) 기반 응용 프로그램
  • 대규모 트래픽 및 동시성 처리 워크로드

 

 

 

 

 

'Z.PROJ' 카테고리의 다른 글

인공지능(AI)의 이해  (1) 2025.01.13
UPbit API  (0) 2025.01.10
암호화폐 데이터의 특성  (3) 2025.01.08
시계열 데이터  (2) 2025.01.04
암호화폐  (2) 2025.01.03