blog‎ > ‎

Web workers camp (NoSQL) in Paris 03/07/2010

posted Jul 6, 2010, 2:58 AM by Jean-Michel Garnier
25 projects Bruno Michel AF83

bases nosql

redis: coup de coeur key / value, easy to expire some keys (start_with funk*)

mongodb: Doc DB, learning curve to learn easy to learn from SQL

riak: doc DB, more complex than mongodb, less operator, Map Reduce on documents, content _type bin / json. Easy to set up a distributed archi, not mature, graphs DB

cassandra: for hackers, made in facebook. Very high volumes (twitter) . Dynamo / Bigtable (google DB)
Hard to learn / deploy, riak is easier

neo4J: graphs DB, for some problematics: friends of friends. 1 machine only, no scaling

resque: queuing, made in github, 

beanstalkd: is also good, replacing crontab, very simple

puppet / chef : data center automation

chefsolo : for 1 machine

vagrant: I missed

eventmachine: ruby library, fast simple

ErrorNot : af83 Web UI from multiple machines, open source . ruby / php / python

LamsonProject: MVC for email with routes, mailing list management, antispam

Processing.js : graphics on js, ruby binding

Strophe.js : XMPP from browser (eg: presence)

Jasmine: BDD js with plugins for testing node.js

http-console: in node.js command line for http, manage cookies very easily, for stuff hard to test with firebug


hummingbird: node.js analytics on node.js, real time. Nice to look at but no real value

Realie: real time collaborative code editor node.js, hard to install

sass : ruby

less.js : js port of less in ruby in node.js or run directly in browser. Syntax same as standard CSS + variables, easier for designer

ShakaCSS : af83, cross browser js bookmarklet , features which are not available in web developer. Visual

bcat: pipe to browser utility. tail -f mylog.log | bcat some browser, ruby ?

node.js : no package management, hard to set up some stuff

h1. node.js

Ryan : for scripting network programs
HTTP lib -> streaming : faster than nginx, thin; Due to V8 VM+ callbacks

* default response: chunked & keep alive

* Long point requests; like in a chat, we don't want to ping back the server to check if there is more data
Web sockets will do that but IE 6-7 won't ...

* HTTP Parser: no buffer, 28 bytes / HTTP stream : very little memory

* exec some system commands, err / output within a callback

* spawn

* sys.pump()

Rails waits for the response while querying the DB

Latency: DISK & NETWORK r 41M & 24M cycles : very very far
calculate is 2 cycles ....

Multithreading is not free, context switching takes memory
nginx does that well

Node.js : callbacks

Single process single thread single execution stack model w/ event callbacks. NEVER block on I/O

js suits very well this style: anonymous functions, closures, 1 callback at the time