Web workers camp (NoSQL) in Paris 03/07/2010
Post date: Jul 06, 2010 9:58:17 AM
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
ndislocqte
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