spooch-db-driver

database driver from NoSQL Spooch database server

npm install spooch-db-driver
4 downloads in the last month

Info

Spooch-db-driver - database driver from NoSQL Spooch database server

Example

var assert = require("assert");
var util = require("util");
var Storage = require("../index");

var RECORDS = 50000;
var CHUNKS = 10;

process.on("insert", function() {
    util.print("\n# inserting...\n");        
    var storage = new Storage(__dirname + "/db", CHUNKS);
    var processed = 0;
    storage.open(function(err, res) {        
        var start = (new Date).getTime();
        for(var i=0; i<RECORDS; i++) {                
            storage.set("test"+i, "hello world"+i, function(err, res) {
                assert.ifError(err);
                util.print("processing " + (100.0 * processed / RECORDS).toFixed(2) + "% \r");
                if (++processed === RECORDS) {
                    util.print("\nspeed " + (((new Date).getTime() - start) / RECORDS) + " ms per record\n");
                    storage.close(function() {
                        storage.disconnect();
                        process.emit("search");
                    });                
                }
            });
        }
    });
});


process.on("search", function() {
    util.print("\n# searching...\n");
    var storage = new Storage(__dirname + "/db", CHUNKS);
    var processed = 0;    
    storage.open(function(err, res) {        
        var start = (new Date).getTime();
        for(var i=0; i<RECORDS; i++) {                
            storage.get("test"+i,function(err, res) {
                assert.ifError(err);                
                util.print("processing " + (100.0 * processed / RECORDS).toFixed(2) + "% \r");
                if (++processed === RECORDS) {
                    util.print("\nspeed " + (((new Date).getTime() - start) / RECORDS) + " ms per record\n");
                    storage.close(function() {
                        storage.disconnect();
                        process.emit("remove");
                    });                
                }
            });
        }
    });    
});


process.on("remove", function() {
    util.print("\n# removing...\n");
    var storage = new Storage(__dirname + "/db", CHUNKS);
    var processed = 0;    
    storage.open(function(err, res) {
        var start = (new Date).getTime();
        for(var i=0; i<RECORDS; i++) {                
            storage.remove("test"+i,function(err, res) {
                assert.ifError(err);                
                util.print("processing " + (100.0 * processed / RECORDS).toFixed(2) + "% \r");
                if (++processed === RECORDS) {
                    util.print("\nspeed " + (((new Date).getTime() - start) / RECORDS) + " ms per record\n");
                    storage.close(function() {
                        storage.disconnect();
                        process.emit("done");
                    });                
                }
            });
        }
    });    
});


process.on("done", function() {
    process.exit();
});




process.emit("insert");

Configurator

I can setup some driver parameters in spooch-db-driver/libs/driver.js


module.exports.CONFIGS = {
    FILE_LRU: {
        CACHE: {
            SIZE: 1024,
            TYPE: "lru"
        },
        DRIVER: {
            TYPE: "htable"
        }
    },
    FILE_SLOT: {
        CACHE: {
            SIZE: 1024,
            TYPE: "slot"
        },
        DRIVER: {
            TYPE: "htable"
        }
    },
    FILE_LRU_BTREE: {
        CACHE: {
            SIZE: 1024,
            TYPE: "lru"
        },
        DRIVER: {
            TYPE: "htable-btree"
        }
    },
    FILE_SLOT_BTREE: {
        CACHE: {
            SIZE: 1024,
            TYPE: "slot"
        },
        DRIVER: {
            TYPE: "htable-btree"
        }
    },
    MEMORY: {
        DRIVER: {
            TYPE: "memory"
        }
    }
};

module.exports.create = function(config, filename) {

    var Driver = require("./drivers/" + config.DRIVER.TYPE);

    if (config.CACHE) {    
        var Cache = require("./cache/" + config.CACHE.TYPE);                
        return new Driver(filename, new Cache(config.CACHE.SIZE));
    }

    return new Driver(filename);
}
npm loves you