DevNexus 2011
Upcoming SlideShare
Loading in...5
×
 

DevNexus 2011

on

  • 6,328 views

"An Introduction to NoSQL"

"An Introduction to NoSQL"
DevNexus talk 3/21/2011

Statistics

Views

Total Views
6,328
Slideshare-icon Views on SlideShare
3,862
Embed Views
2,466

Actions

Likes
17
Downloads
112
Comments
1

16 Embeds 2,466

http://www.nosqldatabases.com 1322
http://nosql.mypopescu.com 813
http://www.nosqlbr.com.br 270
http://static.slidesharecdn.com 37
http://www.linkedin.com 5
https://www.linkedin.com 5
http://paper.li 3
http://10.150.200.76 2
http://feeds.feedburner.com 2
http://flavors.me 1
http://nosqldatabases.squarespace.com 1
http://fasoulas.posterous.com 1
resource://brief-content 1
http://translate.googleusercontent.com 1
http://www.slideshare.net 1
http://preacherspen.org 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

DevNexus 2011 DevNexus 2011 Presentation Transcript

  • An Introduction to NoSQLBrad Anderson - DevNexusMarch 21, 2011
  • Me‘boorad’ most places (twitter, github, etc.)Erlang Programmer Cloudant BigCouch, Ericsson Monaco, Verdeeco Java, Python, D, Javascript, Common LispNoSQL East - October 2009Data Warehousing / Big Datapre-lunch talks... always.
  • AgendaNoSQL is BULLSHITYou Don’t Need ItYou Can’t Query It
  • The NamePlay on MySQL (Eric Evans, Rackspace)Not Only SQL (Emil Eifrem)Broad UmbrellaShitty Marketing Term and we’re stuck with it
  • Why do you need NoSQL?
  • Why do you need NoSQL? YOU DON’T!
  • Seriously, you don’t...Vastly different performance characteristicsImmature APIs and tools / ecosystemsBugs, most are actively being developedYour situation doesn’t warrant it
  • Why do they exist?Every one of these new data storage systemscame from a particular pain someone washaving.Each system was created to specifically solvethe pain point the authors were experiencing.This pain usually involves a metric shit-tonne ofdata and distributed processing is required.Schema-free
  • Prediction: Pain
  • ExamplesGoogle - index Internet (mapreduce/bigtable)Yahoo - keep up with Google (Hadoop)Amazon - shopping cart (Dynamo)Facebook - inbox search (Cassandra)Lotus - Notes legacy restrictions (CouchDB)Cloudant - physics research (BigCouch)Basho - CRM product (Riak)Neo - graph traversal (Neo4J)
  • Pain of ScalingScale Reads with master-slave replicationScale Writes with master-master replicationPartitioning Vertically (by functional groups)Partitioning Horizontally (by key, i.e. ‘date’)Caching works, kinda
  • What to do?Distribute both data and processing horizontal scalingOrganize data differentlyUse appropriate on-disk storage
  • Sorting Hat Says...Distribution ModelData ModelDisk Data Structure
  • Distribution ModelEmbedded (no distribution)Replication / ShardingChord - peer to peerDynamo consistent hashing, vnodes, vector clocks
  • No DistributionBDBNeo4J
  • Replication / ShardingDistributionMongoDBCouchDBRedis
  • Dynamo DistributionBigCouchRiakVoldemortCassandra no vnodes no vector clocksHibari ?
  • Dynamo - how does it work? N=3 W=2 Node 1 26 No de A B C D de No B 2 C B C A DZ E C N od e D 3 E F D No de E 4 F G 17
  • Dynamo - how does it work?PUT http://boorad.cloudant.com/dbname/blah?w=2 N=3 W=2 Node 1 26 No de A B C D de No B 2 C B C A D Z E C N od e D 3 E F D No de E 4 F G 17
  • Dynamo - how does it work?PUT http://boorad.cloudant.com/dbname/blah?w=2 N=3 W=2 Node 1 26 No de A B C D de No B 2 C B C A D Z E C N od e D 3 E F D No de E 4 F G 17
  • Dynamo - how does it work?PUT http://boorad.cloudant.com/dbname/blah?w=2 N=3 W=2 Node 1 26 No de A B C D de No B 2 C B C A D Z hash(blah) E C N od e D 3 E F D No de E 4 F G 17
  • Dynamo - how does it work?PUT http://boorad.cloudant.com/dbname/blah?w=2 N=3 W=2 Node 1 26 No de A B C D de No B 2 C B C A D Z hash(blah) E C N od e D 3 E F D No de E 4 F G 17
  • CAP TheoremPick Two (at any given time) Consistency Availability Partition ToleranceCP refuses requests, AP eventually consistentMust Read: http://codahale.com/you-cant-sacrifice-partition-tolerance/
  • Data ModelKey/ValueDocumentColumnGraph
  • Key / ValueBDBRiakVoldemortRedisHibari
  • DocumentCouchDBMongoDBSimpleDB
  • Column StoresHBaseCassandraHypertable
  • Graph DatabasesNeo4JAllegroGraphFlockDB
  • Disk Data Structurebtree - many different kindsmmap - compact bsonmemtable/sstable or log structured merge treelog-structured linear hashingadjacency lists / adjacency matrices
  • Querying NoSQLKey Lookups fast, easy, limitingSecondary Indexes Immature part of most systems Roll your own MapReduceMongo query language
  • Polyglot Persistence RDBMS batch processes CacheRaw Hadoop NoSQL AppsData NoSQL
  • DriversSpring commons, hadoop, kv, document, graph membase, hbase, cassandra comingSerialization Thrift, Protocol Buffers, AvroNative Cassandra, Hadoop, Voldemort JInterface to Erlang?
  • Good Luck! You’ll Need It.
  • Questions?