(2010-05-30) Zed No No Sql
Zed Shaw has a No No Sql idea that provides a single JSON-based interface to a variety of Data Store-s, both SQL and No[[SQL]]. What I did was combine 0mq (ZeroMQ) with SQLite-3, Tokyo Cabinet, and finally, the File System, to create a server that lets you do all four at once using the 0mq scalability and speed building blocks. In theory this thing should be dead easy to scale out, shard, cluster, whatever you need to do. Right now of course it doesn't but the potential is there.
Jun30 update: he has renamed it Mullet D B triggered by his Silicon Valley Mullet (jeans and blazer) joke.
Aug21 update: no changes to wiki or code since late May.
- I think this became his Mongrel-2 Web Server project.
- tonight I was hacking on a cool new Web Server now that I'm done with Mullet D B... I figured out how to merge the ZeroMQ event polling system with the libtask coroutine library so that you can use libtask to handle tons of TCP/UDP and ZeroMQ sockets in a single thread. I then took this very cool hack, and started building a web server using my Mongrel HTTP parser, but I modified the parser so that the same server on the same port can handle HTTP or Flash X M L Sockets transparently. The next step is to get this server to route HTTP and X M L Socket JSON messages to arbitrary ZeroMQ backends.
- Ever since I wrote Mongrel and got stuck doing Ruby I've wanted a Web Server that loved all Programming Language-s. A web server that broke the strict request/response pattern and let you scale out your application so that one browser request could be mapped to as many backends as you needed. A server that let you do both HTTP, Flash Sockets, and WebSockets on the same port with no configuration. A web server simply written in C that loved all languages equally... a server that servers both Flash Sockets and HTTP traffic on the same port with routing to TCP and 0mq backends. Connect to mongrel2.org:6767 with a browser and Mongrel2 figures out it's HTTP. Connect with telnet and it's a J S Socket. Connect and give the Flash Socket stanza and it's a Flash Socket. This is done with enhancing the Mongrel HTTP parser with extra rules for the other protocols, and means that when WebSockets are available Mongrel2 will be ready to go. All of these are then sent to backend servers using either raw TCP/IP or ZeroMQ. The HTTP requests are proxied to an NginX server, with full keep-alives and all. The J S Socket JSON messages are routed to the Python backend and it does all of the control to implement the chat service. There isn't any more logic in the Mongrel2 code than is necessary to move requests to backends and maintain sockets.
- Mar'2013: found this note from "2 years ago": I may bring this back in the future, but for now it's just a joke project I did for fun to make fun of the various No[[SQL]] idiots out there. It's simple a thin ZeroMQ wrapper around SQLite-3, disk storage, and Tokyo Cabinet storage. There's a sample python client in clients/python.
Edited: | Tweet this! | Search Twitter for discussion