More Related Content Similar to Dirty - How simple is your database? (20) Dirty - How simple is your database?8. 150 lines of code
Lines of code
Dirty
CouchDB
Redis
0 5.000 10.000 15.000 20.000
9. Append-only JSON log
$ cat dirty.db
{"key": "first", "val": {"foo": "bar"}}
{"key": "second", "val": "A string"}
{"key": "a-number", "val": 23}
10. No Networking
var db = require('dirty')('test.db');
db.set('foo', 'bar');
db.get('foo'); // => bar
11. No Networking
var db = require('dirty')('languages.db');
db.set('javascript', {age: 15});
db.set('python', {age: 19});
db.set('perl', {age: 23});
db.forEach(function(key, doc) {
console.log('%s is %d years old.', key, doc.age);
});
16. dirty.set()
With flushing to disk
Numbers 256 byte string
200 kHz 70 kHz
(200-thousand / s) (70-thousand / s)
18. The Wall
• Dirty is a wonderful database as long as
you have < 1 million records
• After that, you hit “The Wall”
20. 22.000 2010
The Internet
20.000
18.000
16.000
2009
14.000
12.000
PB / month
2008
10.000
8000
2007
6000
2006
4000
2005
2000 2004
2003
2002
2000
0
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
Year
23. Memory / Disk Hybrids
• “Memcached” built into your database
• Better knowledge about your data than any
general purpose algorithm
24. Replication
• Node.js = perfect for streaming between
instances
• Node could “hold” the connection if a not-
yet replicated key is being requested
25. Web Services
• Node.js could act as a proxy for different
database backends (written in node or not)
• One could query 3rd party services for
information
27. Get it
$ npm install dirty
or
http://github.com/felixge/node-dirty
31. Sources
• Internet traffic numbers: http://en.wikipedia.org/wiki/Internet_traffic
• Wonderful dino-rider vs. volcano image: Jesse Star / http://www.geekologie.com/
2009/10/dinorider_geekologie_writer_vs.php
32. Memory overhead
(for setting numeric key / values)
• 20mb overhead / 1 million records
• 20 bytes / key