Document DBMS in Javascript. Crumbdb JS is a Node.js-based minimalistic JSON database library that stores documents as individual JSON files. It supports safe concurrent access using async file locking and includes optional backup functionality via ZIP compression. CrumbDB is designed and built for solving a problem with data file size limits.
PLEASE USE THE LATEST VERSION.
- Added number of file descriptor limit and batching system. The default is 512.
Nothing for now
npm i crumbdb
npm run test
CrumbDB or CrumbFiles can be used for document database management.
import { CrumbDB } from 'crumbdbjs';
// Need an instance that will manage file locking, you can pass number of file descriptor limit, default is 512
// For example, global.crumbdb = new CrumbDB(256);
global.crumbdb = new CrumbDB();
async function example()
{
// Add data, return false when data exists
await global.crumbdb.add(dirname, databasename, collectionname, documentname1, value1, encoding = 'utf8');
await global.crumbdb.add(dirname, databasename, collectionname, documentname2, value2, encoding = 'utf8');
// Update data, return false when data does not exist
await global.crumbdb.update(dirname, databasename, collectionname, documentname1, value1, encoding = 'utf8');
// Get data
await global.crumbdb.get(dirname, databasename, collectionname, documentname1, encoding = 'utf8');
// Get all data
await global.crumbdb.getAll(dirname, databasename, collectionname, encoding = 'utf8')
// Get multiple data
await global.crumbdb.getMultiple (dirname, databasename, collectionname, position, count, encoding = 'utf8')
// Remove data
await global.crumbdb.remove (dirname, databasename, collectionname, documentname1)
// Backup Data to a zip file
await global.crumbdb.backup (sourceDir, zipPath)
// Restore Data from a zip file
await global.crumbdb.restore (zipPath, destDir)
}
import { CrumbFiles } from 'crumbdbjs';
// Need an instance that will manage file locking
global.crumbfiles = new CrumbFiles();
async function example()
{
// Add data, return false when data exists
await global.crumbfiles.add(dirname, documentname1, value1, encoding = 'utf8');
await global.crumbfiles.add(dirname, documentname2, value2, encoding = 'utf8');
// Update data, return false when data does not exist
await global.crumbfiles.update(dirname, documentname1, value1, encoding = 'utf8');
// Get data
await global.crumbfiles.get(dirname, documentname1, encoding = 'utf8');
// Get all data
await global.crumbfiles.getAll(dirname, encoding = 'utf8')
// Get multiple data
await global.crumbfiles.getMultiple (dirname, position, count, encoding = 'utf8')
// Remove data
await global.crumbfiles.remove (dirname, documentname1)
// Backup Data as a zip file
await global.crumbfiles.backup (sourceDir, zipPath)
// Restore Data from a zip file
await global.crumbfiles.restore (zipPath, destDir)
}
MIT, See LICENSE.