Un sistema di database molto semplice con JSON

1

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?

    
posta Basj 23.12.2014 - 11:03
fonte

1 risposta

2

Non c'è niente di sbagliato in questo per lo sviluppo . Se ha un nome, suppongo che sarebbe un database fittizio. Non è raro creare un database fittizio in grado di emulare funzionalità di base. Hai il vantaggio aggiuntivo di iniziare da un database zero ogni volta, quindi sai che il tuo programma potrebbe funzionare anche per un potenziale database nosql vuoto per lo stesso motivo.

Tuttavia questa non è una soluzione permanente ragionevole con qualsiasi mezzo.

La maggior parte dei programmatori, a causa del piccolo overhead, andrà semplicemente avanti e lo farà funzionare con un database nosql. Potrebbe richiedere un po 'più di tempo, si sta anche programmando direttamente per lavorare in produzione e non si è costretti ad adattare il programma e testarlo in anticipo.

La scalabilità è un non-problema perché lavori sempre nello sviluppo. Se si blocca il proprio computer, non è un grosso problema. Il limite di un tale database sarebbe solo quello della tua RAM (o della RAM del computer che esegue il server), tuttavia penso che ti accorgerai che il programma diventerà molto lento prima che tu raggiunga il punto in cui il tuo programma si bloccherà.

Forse potresti adattare un meccanismo di ricerca per il database di simulazione, ma se hai intenzione di risolvere il problema, vai avanti e usa un database nosql corretto. Se perdi letteralmente più di 1 ora di lavoro su questo database fittizio, hai perso tempo.

    
risposta data 23.12.2014 - 12:08
fonte

Leggi altre domande sui tag