ORM ve ODM arasındaki fark nedir?


158

ORM ve ODM arasındaki farkın ne olduğunu anlamaya çalışıyorum, kavramı anladığım kadarıyla, ORM (Nesne İlişkisel Eşleyici), ODM (Nesne Belgesi Eşleyici) belgelerle ilgilenen veriler arasındaki ilişkileri eşleştirir. MySQL'in ORM ve MongoDB'nin ODM örneği olduğunu varsayar mıyım?

Gördüğünüz gibi, kavramın teorisine çok aşina değilim. Birisi ikisi arasındaki farkları açıklığa kavuşturabilir mi?

Yanıtlar:


173

MySQL ilişkisel bir veritabanı örneğidir - koddaki nesneleriniz ve verilerin ilişkisel temsili arasında çevirmek için bir ORM kullanırsınız.

ORM örnekleri nHibernate , Entity Framework , Dapper ve daha fazlasıdır ...

MongoDB, belge veritabanına bir örnektir - koddaki nesneleriniz ve verilerin belge gösterimi (gerekirse) arasında çeviri yapmak için bir ODM kullanırsınız.

Mandango , MongoDB için bir ODM örneğidir.


8
Delphi için mORMot , PHP için Doctrine veya Java için Hibernate OGM gibi karma ORM / ODM çerçeveleriniz olabilir . Ve bazı SQL veritabanları, JSON veya JSONB veri türlerini içeren büyük PostgresSQL gibi belgeler için güçlü bir desteğe sahiptir, böylece dizinler ve gelişmiş sorgu da dahil olmak üzere RDBMS ve Belge odaklı depolamayı aynı tabloda karıştırabilirsiniz!
Arnaud Bouchez

Yani belgelerin belgeler olduğunu söylüyorsun ... bu mantıklı!
HashRocketSyntax

mongoose bir ODM veya ORM olduğunu?
YL

1
Firavun faresi, Firavun faresi bütün ODM'ler Sanırım bir noSQL için sadece ODM alabiliriz.
Luna Lovegood

29

Bir ORM, Nesne Modeli ile İlişkisel Veritabanı arasında eşleşir. ODM, bir Nesne Modeli ve Belge Veritabanı arasında eşleşir. MySQL bir ORM değil, İlişkisel Veritabanı, daha spesifik olarak bir SQL Veritabanıdır. MongoDB bir ODM değil, bir Belge Veritabanıdır.


Harika bir açıklama! ODM / ORM, temel veritabanı veya sürücü kitaplıkları tarafından sağlanan soyutlama katmanları veya sürücü ve DB arasında ayrı bir katman olup olmadığını hala açık değilim? Belge Veritabanı için bir ORM sürücüsü olabilir mi?
pooya13

10

Esasen, bir ORM, nesne gösterimini ilişkisel gösterime çevirmek için ODBC, JDBC veya OLEDB gibi bir SQL veritabanı sürücüsü kullanır ve ODM, Nesne gösterimini Belge göstergesine çevirmek için JSON veya JSONB api kullanır.

Davlumbazın altında farklı uygulamalar vardır.

Not: JSONB, MongoDB tarafından kullanılan ikili biçimde saklanan bir JSON metin belgesi gösterimidir.


1
teknik olarak ODBC ve JDBC, sürücünün uyguladığı API Spesifikasyonlarıdır.
asgs

2
Postgres de JSONB'u destekliyor
Luna Lovegood

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.