17day - DataBase, DBeaver, TypeORM

이주영·2022년 11월 28일
0

CORS(Cross Origin Resource Sharing)

예전에는 origin과 같은 백엔드로만 데이터 요청이 가능했었다. 이것을 SOP정책이라고 하고 이 불편함을 완화하기 위해 CORS정책이 나왔다.

openAPI도 CORS가 허용되어 있는 것만 가져다 쓸 수 있었다.

처음에 브라우저에서 백엔드로 내가 요청할 수 있는 데이터가 무엇인지 preflight 요청을 보낸다.
이 때 백엔드는 사용할 수 있는 데이터가 무엇인지 알려주면서 CORS의 yes/no 여부도 알려준다.
그리고나서 두 번째로 실제 API 요청을 보낸다.

셋팅은 백엔드에서 하지만 CORS 여부에 따라 차단할지 말지를 결정하는 것은 사실 브라우저이다.

모바일 앱이나 백엔드에서 요청하는 것은 CORS 여부와 상관없이 가능하다. (브라우저가 차단을 하는 것이기 때문에)

CORS를 막아둔 openAPI에 대해서는 브라우저에서 어떻게 데이터를 받아올 수 있을까?

브라우저에서 같은 백엔드로 요청을 보낸다.
그리고 백엔드에서 백엔드로 요청을 보낸 후, 그 받아온 결과를 브라우저에 넘겨준다.
이 백엔드를 대리서버, proxy server라고 한다. 이렇게 openAPI를 사용할 수 있다.

CORS를 브라우저에서 차단하는 이유
브라우저에는 쿠키라는 것이 있다.
state나 변수처럼 데이터를 저장할 수 있는 공간인데, 이 쿠키에 데이터를 담게 되면 브라우저에서 백엔드에 요청을 보낼 때마다 무조건 이 쿠키가 첨부된다. 보안적인 문제가 있을 수 있기 때문에 브라우저에서는 차단을 하게끔 만들어준 것이다.

DataBase

DB는 누군가의 접속을 기다리는, 24시간 켜져 있어야 하는 프로그램이다.
DB는 두 가지로 나눌 수 있다.

표 형식의 데이터 베이스 - SQL이라고 부른다.
서류봉투에 저장하는 데이터 베이스 - NoSQL이라고 부른다.

표 형식은 우리가 흔히 생각하는 엑셀 형식이라고 보면 된다.
표는 게시글 테이블, 유저 테이블 이런 식으로 여러 개 만들 수 있는데, 그 여러 개의 시트를 합쳐줄 수도 있다. 이것이 엑셀과의 차이점이다. 그래서 관계형 데이터 베이스(RDB)라고 부른다.
서류봉투 형식은 객체로 저장이 된다.
두 가지의 공통점은 한 개씩 저장이 된다는 점이다. 표 형식의 한 줄, 서류봉투 형식의 a4용지 한 장이 동일하다고 보면 된다.

SQL에는 POSTGRES, MySQL, MSSQL, ORACLE 등의 데이터베이스들이 있다.
NoSQL에는 MongoDB, Firebase 등이 있다.

데이터를 입력할 때 엑셀처럼 입력하고 저장하는 것이 아니라 명령어를 사용해주어야 한다.(SQL Query문)
이 명령어들을 일일이 외우기 힘들기 때문에 ORM(Object Relational Mapping), ODM(Object Document Mapping)라는 툴을 설치하면 자동으로 쿼리문을 만들어준다.
SQL은 ORM, NoSQL은 ODM을 사용해준다.
ORM에는 prisma, sequalize, typeorm 등이 있고, ODM에는 mongoose가 있다.

0개의 댓글