ORM과 ODM의 차이점은 무엇입니까?
ORM과 ODM의 차이점이 무엇인지 알아보려고 하는데, 개념을 이해하면 ORM(Object Relational Mapper)은 데이터 간의 관계를 매핑하고 ODM(Object Document Mapper)은 문서를 다룹니다.제 SQL이 ORM의 예이고 MongoDB가 ODM의 예라고 가정하는 것이 맞나요?
보시다시피, 저는 그 개념에 대해 잘 모릅니다.누가 그 둘의 차이점을 설명해 주실 수 있습니까?
MySQL은 관계형 데이터베이스의 한 예입니다. 코드의 개체와 데이터의 관계형 표현 사이에서 ORM을 사용하여 변환합니다.
ORM의 예로는 nHibernate, Entity Framework, Dapper 등이 있습니다.
MongoDB는 문서 데이터베이스의 한 예입니다. 코드에 있는 개체와 데이터의 문서 표현(필요한 경우) 사이에서 ODM을 사용하여 변환합니다.
Mandango는 MongoDB의 ODM의 한 예입니다.
ORM은 개체 모델과 관계형 데이터베이스 사이를 매핑합니다.ODM은 객체 모델과 문서 데이터베이스 사이를 매핑합니다.MySQL은 ORM이 아니라 Relational Database, 더 구체적으로 SQL Database입니다.몽고DB는 ODM이 아니라 문서 데이터베이스입니다.
기본적으로 ORM은 ODBC, JDBC 또는 OLEDB와 같은 SQL 데이터베이스 드라이버를 사용하여 객체 표기를 관계 표기로 변환하고 ODM은 JSON 또는 JSONB api를 사용하여 객체 표기를 문서 표기로 변환합니다.
후드 아래에는 다양한 종류의 구현이 있습니다.
PS: JSONB는 MongoDB에서 사용하는 이진 형식으로 저장된 JSON 텍스트 문서 표기법입니다.
ORM과 ODM의 차이를 이해하기 위해서는 먼저 관계형 데이터베이스와 문서 데이터베이스의 차이를 검토하는 것이 도움이 될 것으로 생각합니다.그렇게 하도록 하겠습니다.
관계형 데이터베이스는 아마 익숙하실 겁니다.데이터를 테이블에 저장하는 것은 다음과 같습니다.
관계형 데이터베이스의 일반적인 예로는 MySQL, Postgres 및 SQLite가 있습니다.관계형 데이터베이스를 조회하려면 SQL을 사용합니다.
문서 데이터베이스는 어떻습니까?문서 데이터베이스를 사용하면 데이터가 테이블 대신 JSON에 저장됩니다.
사실 그건 100% 정확하지 않습니다.MongoDB는 다음과 같이 설명합니다.
문서는 필드 값 쌍으로 데이터를 저장합니다.값은 문자열, 숫자, 날짜, 배열 또는 개체를 포함한 다양한 유형과 구조일 수 있습니다.문서는 JSON, BSON, XML과 같은 형식으로 저장할 수 있습니다.
그렇다면 ORM은 무엇이고 ODM은 무엇이며 그들은 어떻게 비교합니까?
ORM은...사실, 이 대답이 설명하도록 하겠습니다.
ORM(Object-Relational Mapping)은 객체 지향 패러다임을 사용하여 데이터베이스의 데이터를 쿼리하고 조작할 수 있는 기술입니다.ORM에 대해 이야기할 때, 대부분의 사람들은 Object-Relational Mapping 기법을 구현하는 라이브러리를 언급하고 있으므로 "a ORM"이라는 문구가 있습니다.
기본적으로 응용 프로그램 코드에서는 대개 개체를 다루고 있습니다.하지만 데이터베이스에는 테이블이 있습니다.ORM은 둘 사이를 매핑하는 라이브러리입니다.위키피디아에서는 다음과 같이 설명합니다.
이것은 사실상 프로그래밍 언어 내에서 사용할 수 있는 "가상 객체 데이터베이스"를 만듭니다.
여기 예가 있습니다.액티브 레코드(Active Record)는 루비 온 레일스(Ruby on Rails)의 인기 ORM입니다.Active Record를 사용하면 다음과 같은 작업을 수행할 수 있습니다.User.find_by(name: 'David')
다 을 돌려받습니다.{ id: 1, name: 'David' }
과 같은 따라서 ORM은 다음과 같은 매핑을 수행합니다.
그리고 ODM을 사용하면 문서 데이터베이스를 제외하고는 기본적으로 동일한 작업을 수행합니다.응용프로그램 코드의 개체에서 데이터베이스의 문서로 매핑됩니다.몽구스는 ODM의 좋은 예입니다.몽고DB와 연동됩니다.
Mongoose는 MongoDB용 ODM(Object Data Model)의 좋은 예로, 객체를 사용하여 직접 연산을 수행할 수 있으며 적절한 쿼리와 스키마로 변환됩니다.여기 https://mongoosejs.com/ 에서 확인할 수 있습니다.
Mongoose는 객체 모델과 MongoDB 사이를 매핑하는 ODM의 예입니다.Mongoose는 모델 클래스의 컬렉션에서 문서를 조회하고 편집할 수 있는 많은 기능과 수동 쿼리를 만들 수 있는 풍부한 쿼리 클래스를 제공합니다.
Sequelize는 객체 모델과 SQL DB 사이를 매핑하는 ORM의 현대적인 예입니다. Sequelize는 Postgres, MariaDB, SQLite, MySQL, Oracle 및 SQL Server와 같은 많은 Relational Database와 함께 작동합니다.Sequelize는 Mongoose와 매우 유사한 인터페이스를 가지고 있는데, TypeScript에서 (컬렉션 대신) 테이블을 모델로 정의하는 것으로 시작합니다.
언급URL : https://stackoverflow.com/questions/12261866/what-is-the-difference-between-an-orm-and-an-odm
'programing' 카테고리의 다른 글
열 이름 MySQL Workbench MariaDB (0) | 2023.10.16 |
---|---|
C에서 댓글을 #정의할 수 있습니까? (0) | 2023.10.16 |
대기 없이 비동기 메서드 호출 #2 (0) | 2023.10.16 |
이전 워드프레스 블로그 게시물 URL을 새 것으로 리디렉션하는 방법 (0) | 2023.10.16 |
JS를 통한 우커머스 변경 상품 변경 (0) | 2023.10.16 |