ORM (Object Relational Mapping)
- 객체와 관계형 데이터베이스를 연결해주는 작업
: 클래스와 테이블을 매핑
: 객체를 통해 간접적으로 데이터베이스의 데이터를 다루는 것
- 장점
: 객체 지향적 코드를 통해 직관적으로 DB를 다룰 수 있음
ㆍCRUD를 위한 긴 SQL 문장을 작성할 필요가 없어 비즈니스 로직에 집중할 수 있다
※ CRUD
= 데이터테이블을 다루기 위한 Create, Read, Update, Delete 작업
: 매핑 정보가 명확하기 때문에 ERD를 보는 것에 대한 의존도가 낮음
ㆍ재사용 및 유지보수의 편리성 증가
: DBMS에 대한 종속성 감소
ㆍDBMS를 교체해도 비교적 적은 리스크와 시간이 소요됨
- 단점
: 완벽한 DB에 대한 접근을 구현하기 어려움
ㆍ사용하기 편리하나 설계에는 신중함 필요
ㆍ프로젝트가 복잡해질 경우 난이도 상승
: 프로시저가 많은 시스템에서는 ORM의 객체지향적인 장점을 활용하기 어려움
ㆍ프로시저가 많으면 다시 객체로 바꿔야 하는 문제가 발생하여 생산성의 저하와 리스크 존재
※ 프로시저
= 특정 작업을 위한 프로그램의 일부. 함수와 같은 의미
=> ORM은 언어별로 있으며, 별도의 프레임워크를 활용하기도 함
ORM을 위한 프레임워크
Sequelize
- NodeJS에서 가장 많이 사용하고 있는 ORM
: NodeJS에 특화된 ORM
- 지원 DBMS
: MySQL, PostgreSQL, MAriaDB, SQLite, MS SQL
- 특징
: Promise(비동기 작업 제어방식)을 기본적으로 지원
: Chaining을 통해 값을 전달하거나 연속된 일련의 작업 처리 가능
: 트랜잭션, Relation, read replication등을 지원
- 장점
: 복잡한 비동기 코드를 깔끔하고 쉽게 작성 가능
: Error Handling에 대한 깔끔한 처리 가능
Prisma
- GraphQL스키마를 기반으로 데이터베이스를 자동생성
※ GraphQL
= facebook에서 만든 Graph Query Language
= 애플리케이션 쿼리 언어로써 기존의 REST API의 한계점을 극복하고자 나온 통신 규약
- 특징
: 요청메시지의 형태가 값이 없는 JSON과 비슷하며 받는 데이터는 JSON형식임
- 장점
: 단일 요청으로도 원하는 데이터를 한번에 가져올 수 있음
: type system을 지원
: GraphQL 등의 강력한 도구 지원
: 확장성이 높음
=> 공식문서
: https://www.prisma.io/docs/understand-prisma/prisma-introduction-what-why-how-j9ff/
Refference
[DB] ORM이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
ORM이란?
이 포스트에서는 ORM의 기본적인 개념과 장단점을 설명하고 Sequelize와 Prisma의 장단점에 대한 내용을 다룹니다. 🤔ORM이란?? ORM(Object-relatinal mapping)이란 객체(클래스)와 관계(관계형 데이터 베이스)
velog.io
'Database > Database' 카테고리의 다른 글
[백엔드 개발자 로드맵 2020] DATABASE - 인덱스 구조 (Index Structures) (0) | 2021.02.07 |
---|---|
[백엔드 개발자 로드맵 2020] DATABASE - 정규형 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - N+1 쿼리 문제 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - 트랜잭션과 ACID (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] 데이터베이스의 종류 (Database) (0) | 2021.02.06 |