[postgreSQL] postgreSQL / ORM

Hyo Kyun Lee·2021년 8월 29일
0

postgreSQL

목록 보기
2/6

상용DBMS인 MySQL과 달리 오픈소스 형태로 제공되는 DBMS이다.

PostgreSQL을 이해하기 전에 먼저 알아두어야 할 개념들을 살펴본다.

1. 데이터베이스에서 데이터를 받아오는 과정

관계형 데이터베이스에서 받아온 데이터를 활용하기 위해선 객체형태이어야 한다.

일전 GraphQL을 통한 웹 어플리케이션을 제작하면서 데이터를 전달받는 방법을 기억해보자.

GraphQL server에 저장된 데이터는 API endpoint(=요청주소)에 존재하는 JSON형태의 문자열이었고, 이를 GraphQL API를 통해 전달받은 데이터는 객체형태였다.

결국 우리의 관점에서 다루어야 하는 데이터는 엑셀과 같은 관계형식이 아닌, 객체형식이다.

우리가 MySQL, PostgreSQL과 같은 RDBMS 체계에서 우리가 기억해야 할 점은

  • 데이터베이스에 저장되는 대규모 데이터들의 저장 형태는 관계형이다.
  • 하지만 우리가 이러한 데이터들을 활용하기 위해선 객체형으로 전환할 필요가 있으며, 이를 어떻게 활용할 수 있을지 / 어떤 방식으로 전환이 가능할지 생각해보아야 한다.

2-1. ORM

Object - relational mapping, 관계형(데이터베이스)의 매핑

위에서 기술한 것처럼 보통 우리가 사용하는 MySQL의 RDBMS에 저장되어 있는 데이터들은, 쉽게 말하면 관계형태로 저장되어 있다.

이 관계형태로 되어있는 데이터들을 객체나 함수형태로 받아오기 위해
객체와 관계형 데이터 간, 즉 class(함수)와 table의 연결을 해주는 과정을 ORM이라 한다.

2-2. (참조) DATABASE 구조

  • 데이터베이스에 저장되어 있는 데이터에 접근하기 위해선 Schema와 이를 구성하는 여러 table로 접근하게 된다.
  • table 내부에는 entity라 불리우는 여러 데이터들이 모여있고, 이 데이터들은 Row/Column의 형태로 되어있는 (쉽게 말하면 excel 형태의) 구조이다.
  • 이러한 Row/Column 형태로 구성된 엔티티(관계형 데이터)들에 대해 1:1 객체 및 함수로 mapping 하는 체계를 ORM이라 한다.

2-3. (참조) PostgreSQL 구조

GraphQL server처럼 PostgreSQL server가 DB 및 memory에 접근하는 구조

  • 클라이언트는 인터페이스 라이브러리(libpg, JDBC, ODBC 등의 다양한 인터페이스)를 통해 서버와의 연결을 요청(1)하면 → DB와 PostgreSQL 간 연결
  • Postmaster 프로세스가 서버와의 연결을 중계(2)한다. → Postmaster 실행
  • 이후 클라이언트는 할당된 서버와의 연결을 통해 질의를 수행(3)한다(그림 5). → 연결된 경로를 통해 사용자가 data 요청

3. ORM을 지원하는 FRAMEWORK

Node.js에서 지원하는 ORM API이자 FRAMEWORK 중 하나이다.

  • Django 자체 지원 ORM
  • Sequelize는 Postgres, MySQL, SQLite 등 RDBMS의 ORM을 지원하는 Promise에 기반하여 비동기 모듈이다(node.js에서 제공).

4. 참조링크

NAVER D2 - postgreSQL 개요
https://d2.naver.com/helloworld/227936

ORM 개념
https://eun-jeong.tistory.com/31
https://www.researchgate.net/figure/ORM-System_fig1_275540078

DBMS/Schema
https://hue9010.github.io/db/mysql_schema/

postgreSQL 이론
http://www.gurubee.net/lecture/2914

0개의 댓글