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 |