Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is an ORM redundant with a NoSQL API?

with MongoDB (and I assume other NoSQL database APIs worth their salt) the ways of querying the database are much more simplistic than SQL. There is no tedious SQL queries to generate and such. For instance take this from 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(); 

How could an ORM even simplify that? Is an ORM or other "database abstraction device" required on top of a decent NoSQL API?

like image 913
Earlz Avatar asked Apr 22 '10 19:04

Earlz


People also ask

Can ORM be used with NoSQL?

A good use case advocating use of ORM tools is migration of applications (built using ORM tool) from RDBMS to NoSQL database. (or even from one NoSQL database to another). This requires (at least in theory) little or no programming effort in business domain.

Does MongoDB need ORM?

Using MongoDB removes the complex object-relational mapping (ORM) layer that translates objects in code to relational tables. MongoDB's flexible data model also means that your database schema can evolve with business requirements.

Is ORM only for relational database?

ORM is Object Relational Mapping, basically a technique to query or perform CRUD (Create, Read, Update, Delete) operations to the database, mainly RDBMS (Relational Databases), using an object-oriented paradigm. With the help of ORM, you don't actually need to use SQL at all.

Which type of replication is supported by NoSQL database?

The Peer-to-Peer NoSQL Data Replication works in the concept that every database copy is responsible to update its data. This can only work when every copy contains an identical format of schema and stores the same type of data. Furthermore, Database Restoration is a key requirement of this Data Replication technique.


2 Answers

Well, yes, Object-Relational mappers are redundant with MongoDB because MongoDB isn't a relational database, it's a Document-Oriented database.

So instead of SQL, you write queries in JSON. Unless you really, really want to write raw JSON, as opposed to, say, Linq, then you're still going to want to use a mapper. And if you don't want to create coupling against MongoDB itself, then you don't want to pass actual Document objects around, you want to map them to real POCOs.

The mapping is much easier with a document-oriented DB like MongoDB, because you have nested documents instead of relations, but that doesn't mean it goes away completely. It just means you've substituted one type of "impedance mismatch" for a different, slightly-less-dramatic mismatch.

like image 169
Aaronaught Avatar answered Sep 19 '22 20:09

Aaronaught


I think an "ORM" on MongoDb can be useful, not only for "serializing" and "deserializing" objects into the db (Norm seems to do a great job) but also for making it more easy to execute aggregation queries.

It is nice if an "ORM" can generate MapReduce jobs for grouping and detecting duplicates. Some people have written code to automatically convert an sql statement into a mapreduce job: http://rickosborne.org/blog/index.php/2010/02/19/yes-virginia-thats-automated-sql-to-mongodb-mapreduce/

like image 34
TTT Avatar answered Sep 20 '22 20:09

TTT