MongoDB에서 ORM 사용

Bilal Shahid 2023년6월20일
  1. 객체 관계 매핑(ORM)
  2. 몽고DB의 ORM
  3. MongoDB용 ORM의 예
  4. 결론
MongoDB에서 ORM 사용

MongoDB는 JSON 스타일로 표현된 문서로 구성된 데이터 저장 및 관리를 위한 NoSQL 솔루션을 도입했습니다. 다른 데이터베이스 시스템과 마찬가지로 MongoDB도 ORM과 함께 작동할 수 있습니다.

이 기사에서는 MongoDB 및 일반적으로 ORM의 개념을 설명합니다.

객체 관계 매핑(ORM)

객체 관계형 매핑은 관계형 데이터베이스 시스템에서 데이터 작업을 보다 쉽게 해주는 기술입니다. 비즈니스 모델과 스토리지 데이터베이스 간의 연결 브리지 역할을 합니다.

ORM은 데이터베이스에 관계로 저장된 데이터를 응용 프로그램 언어의 개체에 매핑하여 작동합니다. 이것은 이제 동일한 프로그래밍 언어를 사용하여 자연스럽고 유연하게 데이터에 액세스할 수 있기 때문에 코드를 작성하는 사람에게 프로그래밍이 쉽다는 이점을 제공합니다.

이것이 어떻게 가능한지 더 자세히 설명하겠습니다.

객체 지향 언어로 작업할 때 프로그래머는 비즈니스 로직 계층에 데이터를 객체로 저장해야 합니다. 이 데이터는 테이블 또는 관계의 형태로 관계형 데이터베이스에 동시에 저장됩니다.

코딩하는 동안 이 관계형 데이터를 객체로 변환하면 보기 흉한 애플리케이션이 될 수 있습니다. 또한 프로그래머가 하나의 애플리케이션에서 두 개의 별도 언어로 작업하고 원시 쿼리를 작성해야 하므로 오류가 발생하기 쉽습니다.

따라서 ORM은 이 프로세스를 단순화하여 이 문제에 대한 솔루션을 제공합니다.

참고: 배송된 후 응용 프로그램에서 ORM을 제거하는 것은 매우 어렵고 비용이 많이 듭니다! 따라서 ORM이 프로세스를 단순화하고 성능 문제를 도입하여 그에 따라 진행할지 여부를 사전에 결정해야 합니다.

몽고DB의 ORM

이제 MongoDB가 NoSQL 솔루션이고 관계를 사용하지 않기 때문에 문제가 발생합니다. ORM이 여전히 적용됩니까? 대답은 예입니다. ORM은 MongoDB에서도 사용할 수 있지만 여기서는 일반적으로 ODM으로 알려져 있습니다.

ODM은 MongoDB가 문서에 데이터를 저장하므로 RelationalDocument로 대체하는 Object Document Mapping의 약자입니다.

MongoDB와 같은 NoSQL 데이터베이스의 경우 ODM을 사용하는 것은 이미 더 단순하기 때문에 그다지 큰 이점이 아닙니다. 그러나 애플리케이션의 전체 성능에 필수적인 개발자 생산성 향상이라는 추가적인 이점을 제공합니다.

그러나 ODM은 여전히 MongoDB에서 광범위하게 사용됩니다. NoSQL에서는 그러한 관계를 식별하는 것이 불가능하기 때문에 ODM이 데이터 간의 논리적 관계를 사용하는 데 도움이 될 수 있기 때문입니다.

ODM이 없으면 프로그래머는 이러한 코드 관계를 수동으로 적용해야 합니다. MongoDB는 문서 지향 아키텍처를 가지고 있기 때문에 문서를 객체라고도 할 수 있으므로 ODM과 통합하기에 매우 적합합니다.

따라서 데이터 모델 계층에 대한 추상화를 제공하기 위해 ODM 프레임워크가 MongoDB와 함께 사용됩니다.

참고: MongoDB를 처음 사용하는 경우 ODM 사용을 건너뛰고 낮은 수준의 추상화로 작업하는 것이 좋습니다. 이렇게 하면 ODM이 제공하는 높은 수준의 추상화 뒤에 숨지 않고 데이터베이스 소프트웨어 작업에 더 익숙해지고 심도 있는 사용법을 익힐 수 있습니다.

MongoDB용 ORM의 예

다양한 언어로 작성된 MongoDB에 사용할 수 있는 수많은 ORM 라이브러리가 있습니다.

그들 중 일부는 오픈 소스이기도 합니다. 이 기사에서 몇 가지 예를 살펴보겠습니다.

몽고이드

Mongoid는 Ruby on Rails 프레임워크를 사용하는 애플리케이션에 적합합니다. Ruby 기반 애플리케이션용 MongoDB ORM으로 ‘Mongoid’ ODM을 사용하면 프로그래머는 ODM 사용의 이점과 마찬가지로 이미 언어에 익숙하기 때문에 데이터베이스 리소스로 더 쉽게 작업할 수 있습니다.

예를 들어, 다음은 Mongoid를 사용하여 데이터베이스에 인스턴스를 삽입하는 코드 조각입니다.

Person.create!(
first_name: "Ali",
last_name: "Raza"
) # => Person instance

다음은 Mongoid를 사용하여 작성된 MongoDB 쿼리의 예입니다.

Person.
where(:dob.gte => "1990-01-01").
in(first_name: [ "Ali", "Raza" ]).
union.
in(first_name: [ "Ahmad" ])

스프링 데이터 몽고DB

MongoDB용 Java 기반 ORM 개발자들 사이에서 가장 인기 있는 선택은 Spring Data MongoDB입니다. 새로운 데이터베이스 프로그래밍을 위한 일관된 Spring 기반 모델을 제공합니다.

<dependencyManagement> 태그 내의 pom.xml 파일에서 다음 종속성을 사용하여 Spring Data MongoDB를 Maven 프로젝트에 통합할 수 있습니다.

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-bom</artifactId>
<version>2022.0.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

참고: 이러한 종속 항목은 2022.0.0 문서를 작성할 때 최신 버전을 사용합니다.

‘몽고엔진’

MongoEngine은 Python에서 MongoDB용 ODM입니다. 간단한 고급 API를 사용하며 Python용 공식 MongoDB 드라이버인 ‘PyMongo’ 위에 구축됩니다.

다음은 Document에서 상속하는 클래스를 정의하여 MongoEngine을 사용하여 Python에서 데이터베이스 스키마를 생성하는 방법의 예입니다.

from mongoengine import *
import datetime


class Page(Document):
    title = StringField(max_length=200, required=True)
    date_modified = DateTimeField(default=datetime.datetime.utcnow)

다음은 데이터베이스에 액세스하기 위한 몇 가지 간단한 쿼리입니다.

for page in Page.objects:
    print page.title
myPage = Page.objects(title="Title")

결론

이 기사에서는 개발 프로세스의 복잡성을 최소화하는 데 유용한 MongoDB의 ORM 사용법에 대해 자세히 설명했습니다. ORM은 데이터베이스 문서를 코딩 중인 언어의 개체로 변환하는 번역기 역할을 하므로 프로그래머가 작업을 간단하게 수행할 수 있습니다.

우리는 또한 조감도에서 MongoDB ORM의 몇 가지 예제 작업에 대해 논의했습니다. 이 문서의 범위 내에서 각각에 대한 세부 정보로 이동하는 것은 불가능합니다.

MongoDB의 ORM 개념에 대해 배웠기를 바랍니다. 계속 공부하다!

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub