nosql databases for the .net developer

35
NOSQL Databases for the .NET Developer Jesus Rodriguez CEO, Co-Founder Tellago, Inc CEO, Co-Founder Tellago Studios, Inc

Upload: jesusmrv

Post on 18-Dec-2014

3.244 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: NOSQL Databases for the .NET Developer

NOSQL Databases for the .NET Developer

Jesus RodriguezCEO, Co-Founder Tellago, IncCEO, Co-Founder Tellago Studios, Inc

Page 2: NOSQL Databases for the .NET Developer

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

Page 3: NOSQL Databases for the .NET Developer

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

Page 4: NOSQL Databases for the .NET Developer

If You Are Here It Is Because You Are Different

Page 5: NOSQL Databases for the .NET Developer

NOSQL DBs?

Page 6: NOSQL Databases for the .NET Developer

NOSQL != NoSQL or NOSQL != (!SQL)

Page 7: NOSQL Databases for the .NET Developer
Page 8: NOSQL Databases for the .NET Developer

The Data World is Changing

Page 9: NOSQL Databases for the .NET Developer

Big Data

Page 10: NOSQL Databases for the .NET Developer

Concurrency

Page 11: NOSQL Databases for the .NET Developer

Unstructured Data

Page 12: NOSQL Databases for the .NET Developer

Fast Reads, Scalable Writes

Page 13: NOSQL Databases for the .NET Developer

CAP Theorem

Page 14: NOSQL Databases for the .NET Developer

NOSQL & .NET

Page 15: NOSQL Databases for the .NET Developer

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

Page 16: NOSQL Databases for the .NET Developer

Types of NOSQL DBs?

Page 17: NOSQL Databases for the .NET Developer

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

Page 18: NOSQL Databases for the .NET Developer

Key Value Stores & .NET

• Native .NET Interfaces: Redis, MemcacheDB• HTTP Interface: Riak• Hard to interoperate with .NET: Voldemort,

Tokyo Cabinet

Page 19: NOSQL Databases for the .NET Developer

Demo: Using Redis from .NET

Page 20: NOSQL Databases for the .NET Developer

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

Page 21: NOSQL Databases for the .NET Developer

Document Stores & .NET

• Native .NET Interfaces: MongoDB, RavenDB• HTTP Interface: CouchDB, OrientDB• Hard to interoperate with .NET: JackRabbit

Page 22: NOSQL Databases for the .NET Developer

Demo: Using MongoDB from .NET

Page 23: NOSQL Databases for the .NET Developer

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

Page 24: NOSQL Databases for the .NET Developer

Graph Databases & .NET

• Native .NET Interfaces: Trinity• HTTP Interface: Neo4J, AllegroDB• Hard to interoperate with .NET: FlockDB

Page 25: NOSQL Databases for the .NET Developer

Demo: Using Neo4J from .NET

Page 26: NOSQL Databases for the .NET Developer

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

Page 27: NOSQL Databases for the .NET Developer

Object Databases & .NET

• Native .NET Interfaces: DB4O• HTTP Interface: --• Hard to interoperate with .NET: Versant

Page 28: NOSQL Databases for the .NET Developer

Demo: Using DB4O from .NET

Page 29: NOSQL Databases for the .NET Developer

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???

Page 30: NOSQL Databases for the .NET Developer

Object Databases & .NET

• Native .NET Interfaces: LINQ To HPC• HTTP Interface: HBase• Hard to interoperate with .NET: Cassandra

Page 31: NOSQL Databases for the .NET Developer

NOSQL & The Cloud

Page 32: NOSQL Databases for the .NET Developer

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

Page 33: NOSQL Databases for the .NET Developer

Demo: Using AWS SimpleDB from .NET

Page 34: NOSQL Databases for the .NET Developer

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

Page 35: NOSQL Databases for the .NET Developer

[email protected]

http://www.tellago.com http://weblogs.asp.net/gsusx

http://jrodthoughts.com