NoSQL in Perspective
Upcoming SlideShare
Loading in...5

NoSQL in Perspective






Total Views
Views on SlideShare
Embed Views



1 Embed 6 6



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

NoSQL in Perspective NoSQL in Perspective Presentation Transcript

  • NoSQL in Perspective Jeff Smith
  • NoSQL on Wikipedia92 databases8 types6 sub-types
  • Easy QuestionsIs this a graph?Do I already have XML or JSON?Is this a caching problem? View slide
  • Paul Grahamon Programming Languages Lisp C View slide
  • Math ProblemLisp is just math.Math doesnt get stale.What in databases is just math?
  • Putting the R in RDBMSes Relation Attributes Tuples
  • Database AnalogyC is to LispasRelational Algebra is to Relational CalculusC: Lisp::Relational Algebra: Relational Calculus
  • Relational Algebra in ActionRelational Algebra:R ⋉S = { t : t R, s S, Fun (t s) }SQL:SELECT * FROM audience WHERE clue > 0;
  • Relational Calculus in Action?Relational Calculus:{ t : {name} | ∃ s : {name, wage} ( Employee(s) ∧ s.wage = 50.000 ∧ = ) }Relevant Implemented Language:This space under construction.
  • Relational Model UtilityEssentially, all models are wrong, but some are useful.- George E. P. Box
  • When relations are wrongSparse dataIrregular dataPoorly understood interrelationshipsNo definable indexesBig dataNo vertically scalable hardware
  • Papers Read Around the WorldGoogles BigTable: bigtable.htmlAmazons Dynamo: 2007/10/amazons_dynamo.html
  • Lessons from Functional ProgrammingMapReduce: mapreduce.html
  • MapReducemap(String key, String value):// key: document name// value: document contentsfor each word w in value: EmitIntermediate(w, "1");reduce(String key, Iterator values):// key: a word// values: a list of countsint result = 0;for each v in values: result += ParseInt(v);Emit(AsString(result)); [1]
  • CAP TheoremConsistencyAvailabilityPartition tolerance
  • CAP Theorem? Availability Consistency Partition Tolerance
  • Sacrifice Availability Consistency Partition Tolerance
  • Then, sacrifice what? Availability Availability Consistency Partition Tolerance
  • PACELCIn the event of a Partition, does the system prioritize Availability or ConsistencyElse does the system prioritize Latency or Consistency?
  • PACELC as a Tree Partition ElseAvailability Consistency Latency Consistency
  • Traditional RDBMSes: PC/EC Partition Else Consistency Consistency
  • Eventually Consistent: PA/EL Partition ElseAvailability Latency
  • ELC: Replication Options1. Update all nodes2. Update the master node first3. Update an arbitrary node first
  • Best of both worlds? SQL
  • HadoopDB
  • MySQL Cluster
  • Riak DemoN: persisted copiesR: read copiesW: write copiesStrong Consistency: R+W>N
  • Thanks Jeff Smith