Utilizzare RocksDB in Node.js

Mattepuffo's logo
Utilizzare RocksDB in Node.js

Utilizzare RocksDB in Node.js

RocksDB è un database embedded key-value ad alte prestazioni sviluppato da Meta (Facebook).

È basato su LevelDB di Google, ma con numerose ottimizzazioni e funzionalità aggiuntive.

RocksDB è progettato per applicazioni che richiedono accesso rapido ai dati su storage locale (SSD o dischi fissi) con grandi volumi di scritture e letture.

Viene usato principalmente come motore di storage sottostante per sistemi più complessi, piuttosto che come database standalone.

In questo articolo vediamo come usarlo in Node.js usando una libreria apposita: rocksdb!

Potete installarla tramite npm:

npm install rocksdb

Qui sotto un pò di codice:

const rocksdb = require('rocksdb');

const path = './my_db';
const db = rocksdb(path);

db.open({ createIfMissing: true }, async (err) => {
    if (err) throw err;

    console.log("Database aperto con successo");

    try {
        await put(db, 'key1', 'value1');
        await put(db, 'key2', 'value2');

        console.log("Dati inseriti");

        db.get('key1', (err, value) => {
            if (err) {
                if (err.notFound) console.log("Key not found");
                else throw err;
            } else {
                console.log(`Retrieved: ${value.toString()}`);
            }
        });

        console.log("Iterazione in corso:");

        const iterator = db.iterator({ gte: 'key1' });

        const next = () => {
            iterator.next((err, key, value) => {
                if (err) throw err;
                if (!key && !value) {
                    return iterator.end(() => {
                        db.del('key1', (err) => {
                            if (err) throw err;

                            console.log("Chiave 'key1' eliminata");

                            db.close(() => console.log("DB chiuso"));
                        });
                    });
                }

                console.log(`${key.toString()}: ${value.toString()}`);

                next();
            });
        };

        next();
    } catch (error) {
        console.error("Errore:", error);
    }
});

function put(db, key, value) {
    return new Promise((resolve, reject) => {
        db.put(key, value, (err) => {
            if (err) reject(err);
            else resolve();
        });
    });
}

Enjoy!


Condividi

Commentami!