New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Abel Avram on Jul 10, 2010
NoRM is a .NET library acting as a wrapper around MongoDB, facilitating .NET programming against the mentioned document database. Some of the features are: strongly-typed interface, supporting LINQ, supporting both .NET and Mono.
The main features of the provider are:
An example of using NoRM (taken from the wiki):
//connString is a URI to the database with the credentials you need.
var coll = (new Mongo(connString)).GetCollection<Product>();
//create a new object to be added to the collection
var obj = new Product();
obj._id = ObjectId.NewObjectID();
obj.Title = "Shoes";
//save the object
coll.Insert(obj);
//find the object
var obj2 = coll.FindOne(new { _id = obj._id}).First();
Another .NET provider for MongoDB is MongoDB-CSharp. According to its author, Steve Wagner, MongoDB-CSharp has been tested on .NET/Windows and Mono 2.0/Ubuntu.
Raven DB, another document database specifically targeting .NET, has been covered by InfoQ when it was released. Unlike MongoDB which is licensed under GNU AGPL v3.0, Raven DB has a free license for open source projects and a paid license for commercial projects.
I don't think it's fair to say NoRM is "strongly typed" and "supporting LINQ to MongoDB".
var obj2 = coll.FindOne(new { _id = obj._id}).First();
The '_id' is an annoymous type, and really offers nothing over doing something like:
var obj2 = coll.FindOne().AddCriteria("_id", obj._id);
It would support linq if it was written like:
var obj2 = coll.FindOne(x => _x._id = obj._id).First();
This article doesn't meet the standards of InfoQ's reporting. It lacks depth or breadth and is not well researched.
It actually does support linq, the author just didn't show it.
github.com/atheken/NoRM/tree/master/NoRM.Tests/...
Ah! Thanks for that. I didn't bother investigating since the article didn't go into depth. Didn't see any reason for using this over Simple MongoDB.
Sam, there is not much to be said about NoRM. It is just a wrapper. What kind of information did you want to get about it?
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
5 comments
Watch Thread Reply