PostgresSQL?
PostgresSQL?
오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다. 약 20여년의 오랜 역사를 갖는 PostgreSQL은 다른 관계형 데이터베이스 시스템과 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있다.
PostgresSQL 구조
PostgresSQL은 클라이언트/서버 모델을 사용한다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 대신하여 데이터베이스 액션을 수행한다.
PostgresSQL의 특징
1. Portable
ANSI C로 개발되었으며, 지원하는 플랫폼의 종류로는 Windows, Linux, MAC OS/X, Unix 등 다양한 플랫폼을 지원하고 있다.
2. Reliable
ACID(트랜잭션 속성)와 로우 레벨 라킹 등에 대한 구현 및 MVCC(다중 버전 동시성 제어)
참고! MVCC(다중 버전 동시성 제어)?
동시 접근을 허용하는 데이터베이스에서 동시성을 제어(DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미한다.) 하기 위해 사용하는 방법 중 하나이다.
3. Scalable
PostgreSQL의 멀티 버젼에 대해 사용과 대용량 데이터 처리를 위한 Table Partitioning과 Tables Space 기능 구현이 가능하다.
4. Secure
DB 보안은 데이터 암호화, 접근 제어 및 감시의 3가지로 구성되었고,
호스트-기반의 접근 제어, Object-Level 권한, SSL 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터를 암호화 등 지원한다.
5. Recovery & Availability
Streaming Replication을 기본으로, 동기식/비동기식 Hot Standbt 서버를 구축과 WAL Log 아카이빙 및 Hot Back up을 통해 Point in time recovery 가능하다.
6. Advanced
pg_upgrade를 통해 업그레이드를 할 수 있으며, 웹 또는 C/S 기반의 GUI 관리 도구를 제공하여 모니터링 및 관리 그리고 튜닝까지 가능하다. 또한 사용자 정의 Procedural로 Perl, Java, Php 등의 스크립트 언어 지원이 가능하다.
음 우린 도커를 이용하여 해본다고 했고,,,,
도커 안에는 컨데이너라는 것이 있어서
그 안에서 실행해주는 것이다.

먼저 docker-compose.yml 이라는 파일을 생성해준다.
yml 는 주로 설정할때 많이 사용된다.
파일 안에 이렇게 작성해준다.
혹시라도 다운이 되면 재시작할 수 있게 always로 해준다.
컨테이너 안에 있는 포트와 외부에 있는 포트를 말한다.
컨테이너가 사라지면 거기에 있는 정보도 없어지는데 그걸 방지하기 위해 컴퓨터에 저장한 다음 컨테이너에 가져와서 사용한다. volumes에 있는 것은 경로를 매핑하는 것이다.
도커가 실행중인 것을 확인 후,
"docker-compose up"
명령어를 입력해줘야 한다.
참고로
그 파일이 있는 경로여야 한다.
시간이 꽤 걸려서 지켜보고 있었다,,,,ㅎㅎ
혹시 몰라 공용으론 안되게 하고 프라이빗으로만 했다.


성공적으로 잘 실행이 되었다.
컨테이너는 잘 실행되어있으니 npm run dev만 실행해주면 연결이 되는 것이다.

잘 연결이 되어있는 걸 볼 수 있다!!
하지만 사실 이 과정에서 알아야 하는 부분이 있다.
에러가 발생했던 것인데,,

db 연결이 안되는 것 같았다,,
음 그래서

이 부분에서 host를 127.0.0.1로 바꿔주었다...
근데도 안돼서 확인해보니까 도커를 실행하면서 중간에 서버가 꺼진 상태가 된 것 같아 이를 다시 켜주니
앞서 올린 것처럼 연결되는 데에 성공하였고 오류는 극복하였다는 말씀,,,
이 글을 덧붙여서 올리는 이유는 음 나 같은 초보는 일일이 다 확인하긴 어려운 부분이 있을 수 있다는 것이다.
그래서 더 꼼꼼히 하나하나 확인해보고 신경써야 한다는 점이다...
알고는 있었지만 도커가 꺼져있는지 실행되고 있는지부터 오류가 발생했는지 아니면 뭐가 설치되지 않았는지 등 살펴보는 것이 중요하다고 와닿는 일이 아니였을까 싶다.
좌절하지 말고,,, 천천히 배워나가보자,, 급하면 오히려 망칠수 있으니까,, 그냥 천천히 조금씩 발전해져 익숙해지는 그 날까지,,, 파이팅 하자