What is NoSql?
Wikipedia defines it as:
NoSql is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases. These data stores may not require fixed table schemas, usually avoid join operations and typically scale horizontally. Academics and papers typically refer to these databases as structured storage.
The NoSQL movement isn’t brand new as it has produced many different flavors over the years such as Document Stores(CouchDB,MongoDB,RavenDB), Graph(Neo4j), Key/Value stores on disk(Memcachedb,Redis,BigTable), Key/Value stores in RAM(Memcached), Eventually-consistent key-value store(Cassandra), Ordered Key-Value stores(MemcacheDB), Multivalue databases(OpenQM), Object databases(Db4o), Tabular(BigTable) and Tuple stores(Jini). There are probably many more.
Raven is an Open Source (with a commercial option) document database for the .NET/Windows platform. Raven offers a flexible data model design to fit the needs of real world systems. Raven stores schema-less JSON documents, allow you to define indexes using Linq queries and focus on low latency and high performance.
- Scalable infrastructure: Raven builds on top of existing, proven and scalable infrastructure
- Simple Windows configuration: Raven is simple to setup and run on windows as either a service or IIS7 website
- Transactional: Raven support System.Transaction with ACID transactions. If you put data in it, that data is going to stay there
- Map/Reduce: Easily define map/reduce indexes with Linq queries
- .NET Client API: Raven comes with a fully functional .NET client API which implements Unit of Work and much more
- RESTful: Raven is built around a RESTful API
CouchDB provides a RESTful JSON API than can be accessed from any environment that allows HTTP requests. There are myriad third-party client libraries that make this even easier from your programming language of choice. CouchDBâ€™s built in Web administration console speaks directly to the database using HTTP requests issued from your browser.
CouchDB is written in Erlang, a robust functional programming language ideal for building concurrent distributed systems. Erlang allows for a flexible design that is easily scalable and readily extensible.
MongoDB bridges the gap between key-value stores (which are fast and highly scalable) and traditional RDBMS systems (which provide rich queries and deep functionality).
MongoDB (from “humongous”) is a scalable, high-performance, open source, document-oriented database. Written in C++, MongoDB features:
- Document-oriented storage: JSON-style documents with dynamic schemas offer simplicity and power.
- Full Index Support: Index on any attribute, just like you’re used to.
- Replication & High Availability: Mirror across LANs and WANs for scale and peace of mind.
- Auto-Sharding: Scale horizontally without compromising functionality.
- Querying: Rich, document-based queries.
- Fast In-Place Updates: Atomic modifiers for contention-free performance.
- Map/Reduce: Flexible aggregation and data processing.
- GridFS: Store files of any size without complicating your stack.