ORM избыточен с NoSQL API? - PullRequest
       8

ORM избыточен с NoSQL API?

30 голосов
/ 22 апреля 2010

с MongoDB (и я предполагаю, что другие API-интерфейсы для баз данных NoSQL достойны своей цели), способы запросов к базе данных намного более просты, чем SQLТам нет утомительных запросов SQL для генерации и тому подобное.Например, возьмите это из mongodb-csharp:

using MongoDB.Driver; 
Mongo db = new Mongo(); 
db.Connect(); //Connect to localhost on the default port. 
Document query = new Document(); 
query["field1"] = 10; 
Document result = db["tests"]["reads"].FindOne(query); 
db.Disconnect();

Как ORM может даже упростить это?Требуется ли ORM или другое «устройство абстракции базы данных» поверх достойного NoSQL API?

Ответы [ 6 ]

21 голосов
/ 23 апреля 2010

Ну, да, Object- Реляционные преобразователи избыточны с MongoDB, потому что MongoDB не является реляционной базой данных, это документ-ориентированная база данных.

Таким образом, вместо SQL вы пишете запросы в формате JSON. Если вы действительно действительно не хотите писать сырой JSON, в отличие от, скажем, Linq, то вам все равно захочется использовать маппер. И если вы не хотите создавать связь с самим MongoDB, то вы не хотите передавать фактические Document объекты вокруг, вы хотите отобразить их в реальные POCO.

Отображение намного проще с документно-ориентированной БД, такой как MongoDB, потому что у вас есть вложенные документы вместо отношений, но это не значит, что они полностью исчезают. Это просто означает, что вы заменили один тип «несоответствия импеданса» на другое, чуть менее драматическое несоответствие.

2 голосов
/ 23 апреля 2010

Я думаю, что «ORM» в MongoDb может быть полезным не только для «сериализации» и «десериализации» объектов в базу данных (кажется, что Norm отлично справляется с работой), но и для упрощения выполнения запросов агрегации.

Хорошо, если «ORM» может генерировать задания MapReduce для группировки и обнаружения дубликатов. Некоторые люди написали код для автоматического преобразования оператора SQL в задание mapreduce: http://rickosborne.org/blog/index.php/2010/02/19/yes-virginia-thats-automated-sql-to-mongodb-mapreduce/

1 голос
/ 28 октября 2012

Другим решением является PlayOrm, который может также выполнять объединения при необходимости с языком Scalable-SQL (просто добавляет префикс к обычному SQL, в основном, для добавления информации о разделе).

1 голос
/ 19 августа 2012

зависит от того, насколько зрелым драйвер снабжен базой данных NoSQL. Эта ссылка обсуждает актуальность инструментов ORM для базы данных NoSQL: http://xamry.wordpress.com/2012/08/10/sqlifying-nosql-are-orm-tools-relevant-to-nosql/

1 голос
/ 05 сентября 2011

Взгляните на Кундера: https://github.com/impetus-opensource/Kundera, ORM на mongodb, cassandra, HBase.

0 голосов
/ 23 апреля 2010

Все, что вам действительно нужно, это сериализатор / десериализатор для этой работы.

Норма отлично справилась с этой задачей. Облегчает получение простых объектов poco и просто сохраняет их в mongo с помощью одной строки кода.

Они называют Norm ORM, но на самом деле это просто оболочка poco к словарю mongo.

Орм - просто дополнительная церемония для этих операций. Если ваши операции с данными абстрагируются в репозиторий, это не будет проблемой в любом случае, потому что преобразование в другое хранилище резервных копий является объектом для каждого объекта, базис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...