nosql databases for the .net developer
DESCRIPTION
TRANSCRIPT
NOSQL Databases for the .NET Developer
Jesus RodriguezCEO, Co-Founder Tellago, IncCEO, Co-Founder Tellago Studios, Inc
About me….
• Hackerpreneur• Co-Founder Tellago, Tellago Studios, Inc• Microsoft Architect Advisor• Microsoft MVP• Oracle ACE• Speaker, Author• http://moesion.com • http://weblogs.asp.net/gsusx • http://jrodthoughts.com
Agenda
• Why NOSQL DBs• NOSQL DBs for the .NET Developer• Types of NOSQL DBs: Document, Key-Value,
Graph, Objects• NOSQL DBs in the Cloud• Demo Demo Demo Demo
If You Are Here It Is Because You Are Different
NOSQL DBs?
NOSQL != NoSQL or NOSQL != (!SQL)
The Data World is Changing
Big Data
Concurrency
Unstructured Data
Fast Reads, Scalable Writes
CAP Theorem
NOSQL & .NET
NOSQL & .NET
• .NET is a primary platform supported by NOSQL databases
• Native .NET clients• Interoperable HTTP/REST APIs• Native .NET NOSQL DBs: Trinity, RavenDB,
AppFabric Cache
Types of NOSQL DBs?
Key Value Stores
• Focus on scaling to huge amounts of data• Designed to handle massive load• Based on Amazon’s Dynamo paper• Data model: (global) collection of Key-Value pairs• Dynamo ring partitioning and replication• Examples:
– Dynomite– Voldemort– Tokyo{Tyrant, Cabinet, etc...}– Redis
Key Value Stores & .NET
• Native .NET Interfaces: Redis, MemcacheDB• HTTP Interface: Riak• Hard to interoperate with .NET: Voldemort,
Tokyo Cabinet
Demo: Using Redis from .NET
Document Stores
• Similar to Key-Value stores, but the DB knows what the Value is
• Inspired by Lotus Notes• Data model: Collections of Key-Value collections• Documents are often versioned• Examples:
– CouchDB– MongoDB– RavenDB– OrientDB– JackRabitt
Document Stores & .NET
• Native .NET Interfaces: MongoDB, RavenDB• HTTP Interface: CouchDB, OrientDB• Hard to interoperate with .NET: JackRabbit
Demo: Using MongoDB from .NET
Graph Databases
• Focus on modeling the structure of data - interconnectivity
• Scales to the complexity of the data• Inspired by mathematical Graph Theory ( G=(E,V) )• Data model: “Property Graph” ‣Nodes
– Relationships/Edges between Nodes (first class)– Key-Value pairs on both– Possibly Edge Labels and/or Node/Edge Types
• Examples:– Trinity– Neo4j– AllegroGraph– FlockDB
Graph Databases & .NET
• Native .NET Interfaces: Trinity• HTTP Interface: Neo4J, AllegroDB• Hard to interoperate with .NET: FlockDB
Demo: Using Neo4J from .NET
Object Databases
• Neither gaining nor loosing traction• •Not part of the NOSQL community• •Still a good solution to a lot of problems• •Focuses on matching object oriented programming
paradigm– Simplicity to integrate– Ease of use
• Examples:– Db4O– Versant
Object Databases & .NET
• Native .NET Interfaces: DB4O• HTTP Interface: --• Hard to interoperate with .NET: Versant
Demo: Using DB4O from .NET
Big Data Clones
• Like column oriented Relational Databases, but with a twist
• Tables similarly to RDBMS, but handles semi-structured
• Based on Google’s BigTable paper• Data model: ‣Columns → column families → ACL
– ‣Datums keyed by: row, column, time, index– ‣Row-range → tablet → distribution
• Examples:– HBase– Hypertable– Cassandra– LINQ To HPC???
Object Databases & .NET
• Native .NET Interfaces: LINQ To HPC• HTTP Interface: HBase• Hard to interoperate with .NET: Cassandra
NOSQL & The Cloud
NOSQL Cloud Databases
• NOSQL is the predominant model for cloud databases
• Native NOSQL cloud databases– Azure Table Service– Amazon Simple DB
• NOSQL Databases in PaaS platforms– DotCloud– CloudFoundry– Heroku
Demo: Using AWS SimpleDB from .NET
Summary
• NOSQL Databases are becoming one of the predominant data storage models in the enterprise
• There are different models of NOSQL Databases: Document, Key-Value, Graph, BigTable
• NOSQL databases are the predominant data storage model for cloud infrastructures
• There is a large variety of NOSQL interfaces available to a .NET developer.
• Start small, iterate
http://www.tellago.com http://weblogs.asp.net/gsusx
http://jrodthoughts.com