ORM และ ODM ต่างกันอย่างไร


158

ฉันพยายามที่จะเข้าใจว่าความแตกต่างระหว่าง ORM และ ODM เท่าที่ฉันเข้าใจแนวคิด ORM (Object Relational Mapper) จะแมปความสัมพันธ์ระหว่างข้อมูลโดยที่ ODM (Object Document Mapper) เกี่ยวข้องกับเอกสาร ฉันคิดว่า mySQL เป็นตัวอย่างของ ORM และ MongoDB เป็นตัวอย่างของ ODM หรือไม่

อย่างที่ฉันแน่ใจว่าคุณเห็นฉันไม่คุ้นเคยกับทฤษฎีของแนวคิด มีคนช่วยอธิบายความแตกต่างระหว่างสองคนนี้ได้มั้ย

คำตอบ:


173

MySQL เป็นตัวอย่างของฐานข้อมูลเชิงสัมพันธ์ - คุณจะใช้ ORM เพื่อแปลระหว่างวัตถุของคุณในรหัสและการแสดงข้อมูลเชิงสัมพันธ์

ตัวอย่างของ ORMs คือnHibernate , Entity Framework , Dapperและอื่น ๆ ...

MongoDB เป็นตัวอย่างของฐานข้อมูลเอกสาร - คุณจะใช้ ODM เพื่อแปลระหว่างวัตถุของคุณในรหัสและการแสดงเอกสารของข้อมูล (ถ้าจำเป็น)

Mandangoเป็นตัวอย่างของ ODM สำหรับ MongoDB


8
คุณสามารถมีไฮบริดกรอบออม / ODM เช่นmORMot สำหรับ Delphi , หลักคำสอนสำหรับ PHPหรือHibernate OGM สำหรับ Java และฐานข้อมูล SQL บางตัวมีการรองรับเอกสารอย่างมากเช่น PostgresSQL ที่ยอดเยี่ยมซึ่งมีชนิดข้อมูล JSON หรือ JSONBเพื่อให้คุณสามารถผสม RDBMS และที่เก็บเอกสารเชิงภายในตารางเดียวกันรวมถึงดัชนีและแบบสอบถามขั้นสูง!
Arnaud Bouchez

ดังนั้นคุณกำลังบอกว่าเอกสารเป็นเอกสาร ... ที่เหมาะสม!
HashRocketSyntax

พังพอนเป็น ODM หรือ ORM?
YL

1
พังพอน mongoid เป็นของ ODM ทั้งหมด ฉันเดาว่า noSQL เราสามารถมี ODM ได้เท่านั้น
Luna Lovegood

29

ORM แมประหว่างตัวแบบวัตถุและฐานข้อมูลเชิงสัมพันธ์ การแมป ODM ระหว่างตัวแบบวัตถุและฐานข้อมูลเอกสาร MySQL ไม่ใช่ ORM เป็นฐานข้อมูลเชิงสัมพันธ์โดยเฉพาะอย่างยิ่งฐานข้อมูล SQL MongoDB ไม่ใช่ ODM มันเป็นฐานข้อมูลเอกสาร


คำอธิบายที่ดี! ฉันยังไม่ชัดเจนว่า ODM / ORM เป็นเลเยอร์นามธรรมที่จัดทำโดยฐานข้อมูลพื้นฐานหรือโดยไลบรารีไดรเวอร์หรือเป็นเลเยอร์แยกระหว่างไดรเวอร์และฐานข้อมูลหรือไม่ จะมีไดรเวอร์ ORM สำหรับฐานข้อมูลเอกสารและในทางกลับกันได้หรือไม่?
pooya13

10

โดยพื้นฐานแล้ว ORM ใช้ไดร์เวอร์ฐานข้อมูล SQL เช่น ODBC, JDBC หรือ OLEDB เพื่อแปลสัญกรณ์วัตถุเป็นสัญกรณ์เชิงสัมพันธ์และ ODM ใช้ JSON หรือ JSONB api เพื่อแปลสัญลักษณ์เอกสารเป็นสัญกรณ์เอกสาร

มีการใช้งานที่แตกต่างกันภายใต้ประทุน

PS: JSONB เป็นเอกสารข้อความ JSON ที่จัดเก็บในรูปแบบไบนารีที่ใช้โดย MongoDB


1
ในทางเทคนิคแล้ว ODBC และ JDBC เป็น API ข้อมูลจำเพาะที่ใช้กับไดรเวอร์
asgs

2
Postgres ก็รองรับ JSONB
Luna Lovegood

2

Mongoose เป็นตัวอย่างที่ดีสำหรับ ODM (โมเดลข้อมูลวัตถุ) สำหรับ MongoDB ซึ่งคุณสามารถดำเนินการกับวัตถุโดยตรงและได้รับการแปลเป็นแบบสอบถามและสคีมาที่เหมาะสม สามารถพบได้ที่นี่ที่https://mongoosejs.com/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.