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
standsObject 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
'Research > Database' 카테고리의 다른 글
DB_Optimistic Lock vs. Pessimistic Lock (0) | 2023.02.24 |
---|---|
TypeORM_QueryBuilder_Select (0) | 2023.02.24 |
mongoDB_userNewUrlParser, userUnifiedTopology 옵션은 무엇인가? (0) | 2023.02.06 |
mongoDB Atlas_데이터 다루기(CRUD) 기본 (0) | 2022.11.21 |
mongoDB_list메소드 누락 문제 (0) | 2022.11.21 |
댓글