RDBMS란?
RDBMS : Relational Database Management System
데이터를 테이블에 나누어 담고 테이블 간 관계를 정의하여 사용하는(이 부분에서 불필요한 테이블 생성과 관계 정의 과정이 발생) 형식의 데이터 베이스
SQL Database 특징: Strict Schema, Relations
Sequelize
Node.js 기반의 ORM으로 PostgreSQL, MySQL, MariaDB, SQLite, MS-SQL을 지원한다.
프로미스 기반의 ORM이기 때문에 비동기 처리에 용이하다.
table 대신 modeling을 통해 객체 형태로 table을 짠다.
기본적인 query문은 아래와 같다.
ORM?
Object Relational Mapping, 객체-관계 매핑
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
객체 간의 관계를 바탕으로 SQL을 자동 생성해서 sql 쿼리문 없이도 데이터베이스의 데이터들을 다룰 수 있다.
ORM의 장점
객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
재사용 및 유지보수의 편리성이 증가한다.
특정 DB에 한정 되지 않기 때문에 나중에 어떤 DB로든 쉽게 migration 가능하다
ORM의 단점
완벽하게 ORM으로만 서비스를 구현하기가 어렵다.
프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다
ODM: Object Document Mapping
ORM과 동일하게 객체 관계로 정의한 내용을 NoSQL 형태로 매핑(연결)해주는 도우미 역할을 한다.
NoSQL의 특징
flexibility(유연성): noSQL은 빠르고 반복적인 개발을 요구하는 환경에서 유연한 스키마를 제공한다.
scalability(확장성): noSQL은 서버를 증축하는 대신 하드웨어의 분산형 클러스터(여러 개의 데이터베이스에 데이터를 분할 할 수 있음)를 통해 확장할 수 있도록 설계되어서 확장성이 높다.
high-performance(높은 성능): noSQL은 문서, 키-밸류, 그래프 형식을 갖춘 데이터 모델에 최적화되어 있어 관계형 데이터베이스보다 더 높은 성능을 보장한다.
highly functional(높은 기능성): noSQL은 데이터모델에 맞춘 api를 제공한다.