Qual è la differenza tra SQLite e Berkeley DB?
Prima le somiglianze: entrambi sono database incorporati, il che significa che si compilano in librerie per l'accesso diretto ai dati, piuttosto che connettersi a un processo di database attraverso un socket di rete. Rispetto a un RDBMS tradizionale, questo ha il vantaggio di un overhead molto ridotto, soprattutto nel caso di chiave/valore, dove la mancanza di un parser SQL lo rende abbastanza veloce. Entrambi sono open source; Berkeley DB è rilasciato sotto la GPL, SQLite sembra essere semplicemente di dominio pubblico.
SQLite è principalmente focalizzato su casi d'uso a thread singolo con piccoli set di dati. Per questo scopo, è una scelta molto buona. Così buona in effetti che sia Apple che Google hanno scelto di usarla rispettivamente in iOS e Android, tra gli altri. Per saperne di più, vedi qui:
Usi appropriati per SQLite
Ci sono diverse versioni di Berkeley DB, quella che è più simile a SQLite è la libreria C (compatibile anche con C++/C#). Nel caso qualcuno sia curioso, gli altri due sono Berkeley DB JE, un database Java puro, e Berkeley DB XML, che come probabilmente avete indovinato è usato per memorizzare documenti XML.
Tutti e tre sono archivi di dati chiave/valore, ma dal 2010 la libreria C ha anche un'API SQL. L'API SQL è basata su SQLite, quindi sono API compatibili. Potete trovarla qui:
Berkeley DB
Se ci concentriamo quindi solo sulla libreria C, BDB ha due punti di confronto: API SQL e chiave/valore. Confrontando l'API SQL, Berkeley DB è pensato per applicazioni che richiedono grandi insiemi di dati o concorrenza. In questi tipi di casi d'uso, Berkeley DB supererà SQLite. Un altro è la crittografia, che non è disponibile da SQLite senza una licenza.
Confrontare la libreria C chiave/valore è un po' come mele e arance, ma qui va: in generale, se volete le più alte prestazioni e non avete bisogno/volete la struttura che SQL fornisce, o se vi piacerebbe implementare il vostro stile orientato agli oggetti di accesso ai dati, andate con BDB. Se conoscete già SQL e siete a vostro agio con esso, avete un piccolo set di dati e non avete bisogno di alta concorrenza, SQLite è probabilmente ciò che volete.
Berkeley DB ha anche un'opzione di alta disponibilità per lo scaling in lettura. Se avete bisogno di scalare sia in lettura che in scrittura, c'è Oracle NoSQL Database, che è costruito sopra Berkeley DB JE.
Abbiamo clienti in produzione con set di dati da terabyte che usano Berkeley DB.
Eric Jensen
Oracle PM