본문 바로가기
Research/Database

DB_ODM vs. ORM

by RIEM 2023. 2. 23.
728x90

ODM, ORM은 왜 생겨났나?

  • DB를 사용하기 위해선 query문을 사용해야 하는데, query문 또한 SQL(Structured Query Language), 즉 또 다른 언어로 되어있다.
  • ODM, ORM은 SQL문 없이도 자신이 사용하는 언어로 DB를 제어하기 위해 만들어졌다.

ORM vs. ODM?

RDBMS는 ORM(Object-Relation Mapping)을 쓴다.
NoSQL는 ODM(Object-Document Mapping)을 쓴다.

ORM, ODM의 장점은 무엇인가?

  • SQL 쿼리문에 신경안쓰고 비즈니스 로직에 집중하게 해준다
    • CRUD를 위한 SQL문을 구구절절 쓸 필요 없다
    • 객체 지향적 코드로 쓸 수있기에 가독성이 좋다
    • SQL의 절차적 접근이 아닌 객체적 접근으로 생산성 향상
  • 재사용과 유지보수가 편하다
    • 독립적으로 존재하기에 재사용이 편하다
  • DBMS에 의존을 줄인다
    • DBMS 변경 시 비용을 줄일 수 있다

ORM, ODM의 단점은 무엇인가?

  • 프로젝트의 복잡도가 올라갈 수록 추상화로 인해 파악이 어려워진다
  • 프로시저가 많은 시스템의 경우 ORM의 객체 지향적 장점을 활용하기 힘들다
  • ORM, ODM만으로 모든 것을 구현하기 힘들다

ODM?

ODM이란?

  • NoSQL에서 Document Database 지원을 위해 데이터를 변환하는 프로그래밍 기법
  • 객체 모델(Object Model)과 Document Database 간 매핑을 도와준다. MongoDB는 Document Database.

ODM의 특징은?

  • JOIN이 없다
  • 쿼리문의 유형이 다양하다. 필터링, 수집, 정렬, 정규표현식 등
  • 관리가 편하다
  • 스키마없는(Schemaless) DB를 이용하여 빠른 개발이 좋다
  • 수평적 확장이 좋다
  • 인덱싱을 제공한다

대표적인 ODM은 무엇인가?

  • mongoose : node.js 기반 MongoDB와 프로그램 사이 데이터를 변환해준다

ORM?

![[Screen Shot 2022-12-29 at 4.00.02 PM.jpg|400]]

ORM이란?

  • ORM stands Object Relational Mapping
  • handle DB with object-oriented paradigm.
  • ORM(Object Relational Mapping)은 객체(Object)와 관계(관계형 DB) 간 서로 호환되지 않는 시스템 간의 데이터를 변환해주는 것
  • 객체 모델(Object Model)과 RDBMS 간 매핑(설정)을 의미한다.

ORM은 왜 쓰나?

  • 객체 지향 프로그래밍은 객체(클래스) 기반인 반면 관계형 DB는 테이블을 사용한다. 이 두 다른 모델간 접점을 찾기가 어렵다는 문제가 생긴다.
  • ORM을 사용하면 객체-관계형 간 SQL을 자동으로 생성해준다

ORM의 유형은 어떤 것이 있는가?

  • Sequelizer : Node.js의 ORM. Mysql, PostgreSQL, MariaDB, SQLite, MSSQL을 지원한다
  • Prisma : GraphQL 스키마 기반 DB 자동으로 생성
  • myBatis : 개발자 커스텀 sql, 저장 프로시저, 고급 매핑 지원
  • jdbc : DB 접근을 위한 JAVA의 API
  • jpa : ORM 사용을 위한 표준 인퍼테이스 모음

Reference

https://medium.com/spidernitt/orm-and-odm-a-brief-introduction-369046ec57eb
https://velog.io/@namezin/ODM-ORM
https://donghunee.github.io/study/2019/09/07/etc/
https://velog.io/@alskt0419/ORM%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C...-iek4f0o3fg

728x90

댓글