본문 바로가기
  • " 집요함 "
  • " 집요함 "
  • " 집요함 "
웹/백엔드 서버

node.js에 postgresql설치 및 설명

by joen00 2022. 4. 19.

1. 데이터베이스의 종류 : 관계형 데이터베이스, 비관계형 데이터베이스

** 관계형 데이터베이스 (RDB) ex) mySQL, Oracle, PostgreSQL

1. 초기 설계 시 시간이 많이 걸린다.

2. 데이터의 신뢰성은 매우 높음 

3. 데이터의 수정과 삭제가 빠르다

4. 중간에 컬럼을 추가하거나, 삭제 하는게 꽤 까다로움

5. 엄격하게 스키마(테이블 구조)가 존재

 

** 비 관계형 데이터베이스 (NoSQL) ex) mogoDB, Elasticsearch

1. 구축이 유연하다, 형태가 자유로움 (데이터베이스 확장이 쉬움)

2. 데이터 삽입이 빠르다. 대신 수정과 삭제는 무진장 느림로깅 작업 → 로깅 작업시 좋다 ex) 유저가 어떤 api를 호출 했다 등, 로그를 남겨 놓음, 버그가 생기면 그때 로그

3. 읽기, 삽입만 많이하는 것에 사용

4. 중복 데이터 체크 x, null 값 체크 x, 그냥 데이터를 다 넣는다.

5. 스키마가 존재하지 않음 ( 데이터를 json형태로 데이터 삽입)

 

DB 공부 시 더 알아두면 좋은 것
ORM : sql문이 아닌 json에 넣어서 보내주는 것
Normalization : table을 정규화 테이블
N+1 Problem : sql을 여러 번 호출 ⇒ 이거 두 개를 하나로 합치는 것

 

2. postgresql

** postgreSQL 장점 **

  • 올해 전세계 비율 3등, 무료이다.
  • 비교적 가벼움, 많은 양의 데이터를 다루더라도 성능 저하가 적다.
  • 편리하다 ⇒ 독특한 자료형이 존재 - array, json 등
  • 계속해서 업데이트가 일어나고 있다 = 미래 지향적이다.

** postgreSQL 구조 **

데이터베이스 => 스키마( 테이블을 묶어주는 것 ) ex) 강의용 account / 관리자용 account식으로 - 테이블

 

** postgreSQL 계정 **

계정을 만들어서 다른 사람한테 줘야 할 수도 있어서 우분투에 있는 계정을 가지고 postgresql에게 계정을 준다. (둘 다 줄 필요가 없다) postgresql설치만 해도 계정이 추가됨 postgres라는 계정을 만들고 거기에 관리자 계정을 줬다.

 

3. node.js에 postgresql 설치 및 DB 만들기

먼저 설치하기

sudo apt install postgresql
sudo apt install postgresql-contrib

** 참고 계정 목록 보는 것 **

cat /etc/passwd | grep bash

현재 ubuntu의 계정에서 시작하는 것이기 때문에 postgres로 계정을 바꿔줘야한다.

sudo su라는 명령어를 사용해 계정을 바꿔줬다.

sudo su //이걸 사용하면 root로 계정이 바뀜
su postgres // 이걸 사용해서 postgres로 계정이 바뀜
psql // postgresql를 사용할 수 있도록 만들어줌
CREATE USER ubuntu WITH LOGIN PASSWORD ‘1234’; // CREATE ROLE이 나옴
CREATE DATABASE test // test 이름의 db를 만들어준다.
GRANT ALL PRIVILEGES ON DATABASE test TO ubuntu; // test db에 GRANT 계정 권한을 넘겨준다.
quit //postgresql 나가기
exit // root계정으로 넘어옴
eixt // ubuntu 계정으로 넘어옴

ubuntu에서 바로 postgresql로 접속할 수 있다.

psql -d test // 아까만든 데이터베이스 이름 (test)에 바로 접속

node.js랑 연동하기

npm install pg

 

4. postgresql 명령어

\l      //은 데이터 베이스가 나온다. 

\c      //다른 데이터베이스로 변경 ⇒ mysql의 use의 역할

\dn     //스키마 목록 ⇒ public은 공통의 스키마

\dt     //테이블 목록
\dt backend.* //backend라는 스키마에 해당하는 테이블 나옴

\du     //권한들

스키마 만들기

CREATE SCHEMA backend;

테이블 만들기

CREATE TABLE backend.account(id VARCHAR(10), pw VARCHAR(10));

테이블에 내용 넣기

INSERT INTO backend.account(id, pw) VALUES('qwer',1234');

테이블 내용 보기

SELECT * FROM backend.account;

 

 

728x90

댓글