Подтвердить что ты не робот

Является ли ORM избыточным с NoSQL API?

с 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 или другим "устройством абстракции базы данных", которое требуется поверх достойного API NoSQL?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 5

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

Ответ 6

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

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

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

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