Asynchronous reading from a Constant Database (CDB)
A CDB is an associative array mapping strings to values using a hash lookup.
This is a rewrite of D. J. Bernstein's Constant Database program.
More information on CDB here: http://cr.yp.to/cdb.html
npm install node-cdblib
git clone github.com:jukebox42/node-cdblib.git cd node-cdblib npm install # to install deps
var CDB_Read = require'./../node-cdblib'CDB_Reader;var reader = filepath:CDB_FILE_LOCATIONcdbfindKEYconsole.logvalue;;;
CDB_Reader(opts, callback) - The CDB Reader object. returns a cdb object that has the find and find_all functions
- filepath (string) - string contains the path to the file (required)
- cache (string) - boolean that when set to true will cache table location and size within the cdb. false by default. setting this will speed up the lookups at a small memory increase (optional)
find(key,callback,offset) - Finds the first instance of a key and returns the value in the callback. false if the key was not found.
key (string) - they key to look up the value for callback (function) - The callback function. will contain one return value(string). false if key was not found offset (int) - when dealing with CDB files with multiple of the same key tyou can use offset to traverse them. defaults to 0 (optional)
find_all(key, callback) - Finds all instances of a key and returns the array of values in the callback. false if they key was not found.
key (string) - they key to look up the value for callback (function) - The callback function. will contain one return value(array). false if key was not found.
- On init a watcher will monitor the CDB file for changes/replacements and will restart a request if it occurs. This will allow you to replace the CDB file on the fly without pausing or otherwaise haulting the process. Please note that for the moment this feature may cause strange results when using find_all since it wont retry the entire find_all request. Future versions will correct this.
- I do plan on adding the ability to write. Haven't got there yet.
- Has not been load tested yet. Getting there.
- Code is fully commented if you get curious.
- May contain bugs. Use at own risk.