Se abbiamo bisogno di memorizzare alcuni dati in un database , ma senza la necessità di funzionalità SQL avanzate, possiamo usare questo schema (scritto qui in Javascript / node.js):
// the DB will be in RAM !
var myDb = {};
// read DB from disk if file exists
try { myDb = JSON.parse(fs.readFileSync(DBFILENAME)); } catch(e) { }
// serialize to disk every minute or when process terminates
function serialize() { fs.writeFile('./myDb.json', JSON.stringify(myDb)); }
setInterval(serialize, 60 * 1000);
process.on('SIGTERM', serialize); process.on('SIGINT', serialize);
myDb['record1'] = 'foo';
myDb['record2'] = 'bar';
// ...
Vedi la versione più lunga qui come sintesi (8 righe di codice).
1) Questa pratica DB ha un nome? È veramente così cattivo? È possibile utilizzare un sistema di 10 righe di codice DB , anche nella produzione dei siti web che hanno < 1 GB di database?
2) Scalabilità: fino a che dimensioni funzionerebbe questo sistema senza problemi di prestazioni?
vale a dire. funzionerebbe fino a 2 GB di dati su un normale server Linux con 4 GB di RAM? O ci sarebbero veri problemi di prestazioni?
Nota: un minuto sembra sufficiente per scrivere dati da 2 GB su disco ... Naturalmente ammetto che è al 100% non ottimizzato, potremmo aggiungere diff
tra n-1
th e n
scrivendo su disco ...
3) Ricerca: posso usare strumenti pronti per fare qualche ricerca in un database così "semplice"? Lucene, ElasticSearch, Sphinx, ecc. qualcos'altro?