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;
'웹 > 백엔드 서버' 카테고리의 다른 글
| MongoDB (NoSQL 데이터베이스) & 우분투 mongodb설치 (0) | 2022.04.26 |
|---|---|
| SSL 프로토콜 & SSL 설치 (0) | 2022.04.26 |
| DNS ( Domain name system ) (0) | 2022.04.19 |
| API 최적화 & API의 명세서 (0) | 2022.04.19 |
| node.js에 mariaDB로 게시판과 게시글페이지 만들기 (0) | 2022.04.18 |
댓글