ODM, ORM

Seo·2020년 4월 20일
2

CS

목록 보기
3/5
post-thumbnail

ODM : Object-Document Mapper

: NoSQL에서 Document Database를 지원하기 위해 데이터를 변환하는 프로그래밍 기법

NoSQL(Not Only SQL)

  • 관계형 데이터베이스 뿐만 아니라 다양한 데이터베이스를 명칭함
  • 빅데이터를 다룰 때 RDBMS로만 트래픽을 감당하기 어려워져 이를 해결하기 위해 탄생한 것

MongoDB

: NoSQL DBMS의 중 가장 많이 사용되는 DBMS. mongo는 humongous를 줄인 표현

특징

  1. Join이 없으므로 Join이 필요 없도록 데이터 구조화가 필요
  2. 다양한 종류의 쿼리문을 지원(필터링, 수집, 정렬, 정규표현식 등)
  3. 관리의 편의성
  4. 스키마 없는(Schemaless) 데이터베이스를 이용한 신속 개발. 필드를 추가하거나 제거하는 것이 매우 쉬워짐
  5. 쉬운 수평 확장성
  6. 인덱싱 제공

mongoose

: mongoose : node.js 기반이고 MongoDB와 프로그램 사이 데이터를 변환해주는 ODM

ORM : Object-Relational Mapper

: 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법

ORM(Object-relatinal mapping)이란 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미한다. 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용하는데 객체 모델과 관계형 모델간에 불일치가 존재 하는데 이 객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것이 ORM.

예를 들면,

  • DB : MySQL
  • ORM : MyBatis
  • Program : Java Application

객체(Class) <- ORM -> DB 데이터

장점

  1. 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와줌
  2. 재사용 및 유지보수의 편리성
  3. DBMS에 대한 종속성이 낮음

단점

  1. 복잡성이 올라갈 수록 난이도가 높아짐
  2. 프로시저가 많은 시스템을 전환하기가 어려움

종류

  • Sequelize : Node.js에서 가장많이 사용되고 있는 ORM이며 MySQL, PostgreSQL, MariaDB, SQLite, MSSQL을 지원
  • Prisma : GraphQL스키마를 기반으로 DB를 자동생성 해줌
  • myBatis : 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper
  • jdbc : DB에 접근할 수 있도록 Java에서 제공하는 API
  • jpa : JPA는 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것, JPA의 대표적인 구현체로는 Hibernate, EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등
  • hibernate : HQL(Hibernate Query Language)이라 불리는 매우 강력한 쿼리 언어를 포함

SQL vs NoSQL

https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174384/mongodb%EB%9E%80

sql_vs_nosql

sql_vs_nosql_lang

profile
개발관심자

0개의 댓글