모든 데이터는 DB 위에서 움직인다.
그만큼 DB는 어플리케이션의 많은 부분을 차지하고, 또 중요한 역할을 맡는다.
그 중, 2023년 현재는 아직도 RDB의 전성시대이며, 그 중 Oracle, MySQL, MsSQL에 이어
4위를 차지하고 있는 PostgreSQL은 왜 사용하고 있는지 알아보고, 어떻게 사용하는 지 알아보자.
Oracle, MySQL이라는 거함이 있고, MongoDB같은 NoSQL이 아님에도 불구하고,
PostgreSQL은 어떤 장점이 있어서 사용하는 것일까?
Chat GPT는 다른 rdbms에 비해 PostgreSQL이 가진 장점을 다음과 같이 요약한다.
- 고급 기능 및 SQL 규정 준수: PostgreSQL은 풍부한 고급 기능 세트와 높은 수준의 SQL 규정 준수로 유명합니다. 많은 고급 데이터 유형, 인덱싱 방법 및 전체 텍스트 검색, JSON 지원 및 지리적 데이터 유형과 같은 기능을 지원합니다. 프로젝트에 복잡한 쿼리가 필요하거나 특수 데이터 유형으로 작업해야 하는 경우 PostgreSQL이 더 나은 선택일 수 있습니다.
- ACID 준수: PostgreSQL은 ACID(Atomicity, Consistency, Isolation, Durability) 준수를 강조합니다. 강력한 트랜잭션 지원을 제공하며 이는 정확한 데이터 무결성과 안정성이 필요한 애플리케이션에 중요할 수 있습니다.
- 확장성: PostgreSQL의 확장 시스템을 사용하면 사용자 정의 함수, 연산자 및 데이터 유형을 추가할 수 있습니다. 이는 특정 애플리케이션 요구 사항에 맞게 데이터베이스 기능을 확장해야 할 때 유리할 수 있습니다.
- 동시성 제어: PostgreSQL의 동시성 제어 처리는 종종 찬사를 받습니다. MVCC(Multi-Version Concurrency Control)를 사용하여 서로를 과도하게 차단하지 않고 여러 트랜잭션이 동시에 발생할 수 있도록 합니다. 이것은 높은 수준의 동시 읽기 및 쓰기 작업이 있는 애플리케이션에 특히 유용할 수 있습니다.
- 복잡한 쿼리에 대한 성능: 여러 조인 또는 대규모 데이터 세트와 관련된 복잡한 쿼리가 있는 시나리오에서 PostgreSQL의 쿼리 최적화 프로그램은 종종 보다 정교하고 효율적인 쿼리 계획을 생성할 수 있는 것으로 간주됩니다.
ACID를 지키거나 MVCC같은 경우는 다른 rdbms도 지원하고 있으므로,
MySQL이나 Oracle보다 조금 더 복잡한 쿼리를 효율적
으로 다룰 수 있고, 복잡한 데이터도 특수 데이터로 다룰 수 있는것
이 장점인 모양이다.
그럼 PostgreSQL을 설치해보자. 설치 방법 및 오류는 아래 포스트에 작성했다.
https://choincnp.tistory.com/76
설치할 때 다음과 같은 화면을 봤을 것이다. 각 옵션들에 대해 알아보자.
- PostgreSQL Server
- 데이터를 보관하고 관리하는 프로그램, 대부분의 일을 한다.
- client는 보통 Server의 데이터에 직접 접근할 수 없으므로 아래 2개의 클라이언트를 이용해서 PostgreSQL Server와 소통한다.
- pgAdmin4(GUI)
- Command Line Tools(CLI, psql)
- 이 클라이언트를 이용해 서버가 다른 컴퓨터에 있더라도, 원격으로 접속하여 데이터를 다룰 수 있다.
- Stack Builder
- postgreSQL과 관련된 여러 추가적인 파일을 설치할 수 있게 해준다.
DB는 어떻게 구성되어 있을까?
- 먼저, 우리가 가장 관심있어 하는 Table이 있다. 이 테이블 안의 여러 데이터를 제어하는 것이 우리가 가장 하고싶은 일이다.
- 연관된 테이블을 묶어서 그룹핑하고, 이름을 붙인 것이 바로 Schema다.
- Database는 많은 스키마들을 묶어서 관리한다.
- 마지막으로, 이 많은 데이터베이스들을 묶은 것이 바로 Cluster(database server)다.
결국 이 클러스터라는 것이 데이터베이스의 실체이다. 그래서 클라이언트는 결국 '클러스터'와 접속을 시도하게 되는 것이다. 그리고 마지막으로 우리는 SQL(Structured Query Language)을 통해 특정 테이블을 제어하는데, 이 과정은 다음과 같다.
1. 특정 DB 서버(클러스터)에 접속한다.
2. DB를 선택한다.
3. Schema를 선택한다.
4. Table을 대상으로 하는 명령어를 날린다.
5. 그리고 이 DB 서버는 요청한 작업의 결과를 다시 클라이언트에 보낸다.
여기까지 우리가 배운것을 정리하면
- postgreSQL이란 무엇인가?
- postgreSQL은 다른 rdbms와 비교해 어떤 차이점이 있는가?
- db는 어떻게 구성되어 있는가?
- db의 테이블을 제어하는 과정은 어떻게 되는가?
이다. 꼭 대답할 수 있어야 한다.
이제 조금전에 설치한 postgreSQL을 사용해보자.
아까 설치한 GUI인 pgAdmin을 실행해서 좌측 메뉴인 Servers를 누르면 password가 나온다.
설치할 때 넣은 비밀번호를 넣고 들어가보자. PostgreSQL 15라는 default database가 여러분들을 반길 것이다.
이제, 본격적으로 클러스터를 만들어보자.
PostgreSQL15 > Register > Server
처음 General 화면에서는 db이름을 설정해두고, connection으로 넘어오자. 나는 MyPG라는 이름을 주었다.
- Host name에서는, 우리는 클라이언트와 서버가 같은 환경에 있으므로 Localhost를 써주자. 127.0.0.1을 써 줘도 된다.
- Port는 기본적으로 PostgreSql server가 5432번 포트에서 리스닝하고 있기 때문에 그대로 놔 두어도 된다. 나머지 옵션도 그대로 두자. password는 아까의 password 그대로 넣자.
그리고 save버튼을 누른다. 그러면 코끼리 모양의 MyPG 클러스터가 생성된 것을 볼 수 있을 것이다.
db가 만들어짐과 동시에 맨 밑의 파란색 사람모양의 postgres는 슈퍼 사용자가 만들어짐을 볼 수 있다.
이제 Database Server를 만들었으니, 하위 개념인 database를 만들어보자.
SQL을 누르면 우리의 db가 어떤 SQL syntax로 생성되고 있는지를 알 수 있다.
db를 만들면 디폴트로 public이라는 스키마가 생성된 것을 알 수 있다.
이제, 우리가 최종적으로 하고 싶었던 table을 만들어 보자.
tables에서 create를 선택하고 columns를 들어가면 row를 만들 수 있다.
이제 테이블 설정을 다 했으니, SQL로 우리가 한 설정이 어떻게 되었는지를 한번 보자.
이제, 테이블에 데이터를 삽입해보자.
먼저, 우리가 만든 테이블에서
view Data를 누르고,
Add row를 누르면 다음과 같은 화면이 등장한다.
여기의 id는 PK이므로 건들지 말고, title과 body에 데이터를 넣고 save를 해보자.
https://postgrescheatsheet.com/#/tables
에서 cheet sheet를 통해 여러가지 명령문을 배워보고, 쿼리 콘솔에서 이런저런 명령어를 써보자.
이 글에서 자세한 SQL syntax는 다루지 않겠다.
이렇게 간단하게 postgreSQL에 대해 알아보았다.
다음에는 EC2를 이용해서 Docker에 postgreSQL을 넣고 cli에서 이걸 다루어보려고 한다.
'DB' 카테고리의 다른 글
ORM이란 무엇인가요? JPA와 MyBatis는 어떤 차이가 있나요? (0) | 2023.12.13 |
---|---|
DOCKER로 MySQL 다루기 (0) | 2023.08.24 |
POSTGRESQL - 분노의 설치 (0) | 2023.08.19 |