Monday, December 5, 2011

Node.js Databases

Been looking into which database to use with node.js for a mmo/rpg.

Criteria:
Fast
Ability to quickly push/pull small bits
Easy to use
Most online literature / largest online help
FOSS

Below we have a list of modules associated with node.js / databases, so these would be our options.  There's a lot going on there, a lot of information, not a lot of explanation.

Stumbling on: http://nodejsdb.org/ , it looks like they promise something along the lines of 200% increase in speed, from what to what I have no idea.  But this leads to mysql as an option.  In fact quite a lot of literature out there leads to mysql as *the* option.  If you disagree, let me know in the comments.

Taken from: https://github.com/joyent/node/wiki/modules#wiki-database

Database

SQL SERVER

  • node-mssql — A node.js MS SQL Server native driver
  • tedious — A pure Javascript implementation of the TDS protocol, for connecting to SQL Server databases

POSTGRESQL

  • node_postgres — Beginning of bindings to libpg
  • node-postgres — Well tested libpq binding and pure javascript PostgreSQL client
  • FastLegS – PostgreSQL ORM on top of node-postgres.
  • postgres-js — Postgres protocol implemented in pure JS
  • postgres-js — Fork of postgres-js, adds parameterized queries and prepared statements.

MYSQL

  • db-mysql – Binary driver for MySQL (using libmysql). Part of the Node.js DB effort
  • node.dbslayer.js – Interface to DBSlayer (MySQL)
  • node-poormansmysql — Asynchronous MySQL driver for node.js using the mysql command-line tool
  • node-mysql — A node.js module implementing the MySQL protocol
    • node-mysql-pool — connection pool for node.js on top of Felix Geisendörfer’s MySQL client node-mysql.
    • node-mysql-cache — MySQL query cache for node.js on top of Felix Geisendörfer’s MySQL client node-mysql.
  • node-mysql - -Pure JavaScript MySQL async driver [obsolete]
  • node-mysql-native — Yet another pure JS async driver. Pipelining, prepared statements.
  • node-mysql-libmysqlclient — MySQL asynchronous bindings based on libmysqlclient
    • RDX – An object-relational mapper (ORM) for node. Backends: node-mysql-libmysqlclient.
  • node-handlersocket — Pure JavaScript client for HandlerSocket Plugin for MySQL.
  • persistence.js — An object-relational mapper (ORM) for node. Backends: MySQL.
  • sequelize – An easy-to-use MySQL Object-Relational-Mapper (ORM) for Node.JS
  • moose – An ORM for node (Currently only MySQL). Based on node-mysql

SQL LITE

  • node-sqlite — Bindings for SQLite3. Interface conforms to the HTML5 Web SQL API.
  • node-sqlite — Fast asynchronous driver: New evented Node.js look, same great SQLite3 taste
  • node-sqlite3 — Full-featured, asynchronous SQLite bindings with query serialization/parallelization and verbose stack traces

NOSQL AND KEY VALUE

MONGO
  • mongojs — Simple driver that emulates the mongodb API as much as possible.
  • node-mongodb — Basic MongoDB client implementation in JS/C++
  • node-mongodb-native — A pure JavaScript driver for MongoDB.
    • node-mongoskin — A future layer for node-mongodb-native.
    • node-mongodb-wrapper — As close as possible to the command-line driver. Uses node-mongodb-native.
    • mongode — Very thin wrapper around node-mongodb-native that simplifies the API a bit.
    • N-Ext — Use Ext.data packages in your NodeJS apps (includes a MongoDB proxy based on node-mongodb-native)
    • mongoq — MongoDB is: mongoq(‘mongodb://localhost/db’).collection(‘users’).find().toArray(function(error, docs){})
  • node-mongolian — Mongolian DeadBeef is an awesome Mongo DB node.js driver that attempts to closely approximate the mongodb shell
  • mongolia — Flexible wrapper for the nodejs Mongo driver. Lighter than a ORM but easier to use than the driver.
  • mongoose — Mongoose is a JavaScript library that makes working with MongoDB a breeze.
  • mongous — Mongous is a simple MongoDB driver that uses a jQuery styled syntax.
  • nosql-thin – Makes easier to work with MongoDB. Not an ORM. Not production ready.
  • mongoclikker – Simple MongoDB data viewer
  • GridFS – Simple GridFS capabilities built on node-mongodb-native.
  • Official driver – Vote for it on 10gen’s tracker
HIVE
  • node-hive — dead simple hive client using thrift api
  • node-thrift-hive — Hive client with multi versions support and a Readable Stream API.
REDIS
  • redback — a high-level Redis library with support for advanced data structures such as Social Graphs and Full-text Indexes.
  • awesome — a Redis clone in node.js
  • nedis — Redis server implementation written with node
  • redis-node — Comprehensive, high speed Redis client
  • redis-node-client — Redis Client by Fictorial (deprecated)
  • node_redis — Complete Redis client that works well with new node and new Redis
  • redis2json — Easily loads data from Redis into structured JS object
  • nohm — Redis object relational mapper (ORM)
COUCHDB
  • node-couchdb-api — An easy-to-use and powerful wrapper for the CouchDB API that follows Node.JS conventions for async code.
  • LazyBoy — a CouchDB ORM thats easy to use
  • node-couch — a CouchDB connector
  • node-couchdb - -A full API implementation [obsolete]
  • node-couchdb-min — Light-weight client with low level of abstraction and connection pooling.
  • couch-ar — a active record implementation for couchDB (uses cradle)
  • couch-client — a simple wrapper around CouchDB’s http interface
  • PJsonCouch — PJs-on-Couch is a client lib for CouchDB’s HTTP API
  • cradle — a high-level, caching, CouchDB client
  • couchcmd — CouchDB command line utility using cradle
  • data.js — Graph persistence for Node.js with CouchDB
  • couchtato — CouchDB document utility tool
  • nano — Minimalistic driver for CouchDB based on mikeals/request
  • YACA — custom api for your couchdb instance generated through introspection.
NOSQL MISC
  • riak-js — Riak JavaScript client (works on node v0.1.30+)
  • node-mwire — Client for GT.M & Cache databases
  • alfred — a fast in-process key-value store for node.js that has functional indexes, streams, replication, …
  • barricane-db — a transparent object persistence mechanism
  • chaos — Chaos is a Node.js database
  • node-tokyocabinet — Tokyo Cabinet binding
  • node-tyrant — An implementation of the Tokyo Tyrant network protocol for the Node.js
  • kyoto-client — A client for the Kyoto Tycoon key-value store
  • keys — Unified interface for key/value store clients
  • neo4j — Neo4j graph database driver for Node

No comments:

Post a Comment