Domanda

Ho bisogno di un database che possa essere archiviato su un'unità di rete e consenta a più utenti (fino a 20) di utilizzarlo senza alcun software server.

Sto considerando MS Access o Berkeley DB.

Puoi condividere la tua esperienza con i database di file?
Quale hai usato, hai avuto problemi?

È stato utile?

Soluzione

io suggerirei SQLite perché l'intero database è archiviato in un singolo file e gestisce in modo abbastanza sicuro più utenti che vi accedono contemporaneamente.Sono disponibili diverse librerie che è possibile utilizzare per l'applicazione client e non è necessario alcun software server.

Uno dei punti di forza è che imita i server SQL così fedelmente che se è necessario convertire l'utilizzo di un file di database in un SQL Server completo, la maggior parte delle query nel client non dovrà essere modificata.Dovrai solo migrare i dati sul nuovo database del server (cosa che non mi sorprenderebbe se ci fossero programmi per convertire i database SQLite in database MySQL, ad esempio).

Altri suggerimenti

Non penso davvero che i database basati su file possano superare una mezza dozzina di utenti.L'ultima volta che ho avuto un database Access (è vero, è successo parecchio tempo fa) ho dovuto lavorare davvero duramente per farlo funzionare per 8-9 persone.

È davvero molto più semplice installare Ubuntu su un vecchio computer spazzatura con PostgreSQL o MySQL.Questo è quello che dovevo fare anche quando conservavo il front-end di Access.

Fai attenzione ai database basati su file, è probabile che abbiano tutti gli stessi problemi.La tua situazione richiede davvero una soluzione client/server.

Dalle domande frequenti su SQLite

Una buona regola empirica è che tu dovrebbe evitare di usare SQLite in situazioni in cui la stessa banca dati si accederà simultaneamente da Molti computer in rete filesystem.

http://www.sqlite.org/whentouse.html

L'accesso può essere una stronzata.Mi sono trovato nella posizione in cui dovevo andare in giro e dire a 20-50 persone di chiudere l'accesso in modo da poter andare in "modalità progettazione" per modificare il design dei moduli e forse di una colonna.Non è affatto divertente.(Vecchio accesso e potrebbe trattarsi solo di una configurazione errata)

Ayende recentemente ho provato a prendere una decisione simile e ho provato una serie di cosiddetti database incorporati.Speriamo che sia suo osservazioni posso aiutarti.

Utilizzo Access da tempo e in diverse situazioni, anche on-line.Ho scoperto che Access funziona bene se è configurato correttamente secondo il file linee guida.Un vantaggio di Access è che include tutto in un unico pacchetto:Moduli, creazione di query, report, gestione di database e VBA.Inoltre, funziona bene con tutte le altre applicazioni di Office.Il runtime di Access 2007 può essere ottenuto gratuitamente da Qui, il che rende la distribuzione meno costosa.L'accesso è certamente inadatto per operazioni di grandi dimensioni, ma dovrebbe essere abbastanza adatto per venti utenti.MODIFICARE: Microsoft pone il numero di utenti simultanei a 255.

È possibile configurare Access per supportare 10-20 utenti?SÌ.Tuttavia, così come tutti i database basati su file, utilizzano il file system per il blocco e il controllo della concorrenza.Inoltre, i file di dati di Access sono più suscettibili alla corruzione del database rispetto ai server di database.E, anche se puoi configurarlo per questo, DEVI, come menzionato sopra da David Fenton, seguire le migliori pratiche, se vuoi ritrovarti con un sistema affidabile.

Personalmente, trovo che, dati i passaggi da superare per garantire che una soluzione Access sia ragionevolmente priva di problemi, sia molto meno problematico implementare un'istanza di MSDE/SQL Server Express o postgreSql.

Berkeley DB supporta un elevato grado di concorrenza (molto più di 20), ma lo fa principalmente utilizzando memoria condivisa e mutex (possibilmente anche la replica), strutture che non funzionano bene quando BDB viene distribuito come file archiviato su un'unità di rete.

Per sfruttare le funzionalità di concorrenza DBD dovrai creare un'applicazione attorno ad essa.

La domanda originale non ha senso per me, in quanto le opzioni non vanno d'accordo.BerkeleyDB è solo un motore di database, mentre Access è uno strumento di sviluppo di applicazioni fornito con un motore di database predefinito basato su file (ovvero non server) (Jet).Avendo collocato Access a Berkeley, sembra ovvio che ciò che serve lo sia soltanto un motore di database e nessuna applicazione, ma non lo so come gli utenti finali utilizzino Berkeley DB senza front-end (l'ho usato solo dalla riga di comando).

Coloro che non possono eseguire un Jet MDB con 20 utenti simultanei semplicemente non sono competenti per fornire consigli sull'utilizzo di Jet come archivio dati.È completamente fattibile purché vengano seguite le migliori pratiche.Consiglierei, oltre alla pagina Web sulle migliori pratiche di Microsoft, Le migliori pratiche di Tony Toews, E Domande frequenti sulla corruzione di Tony (ovvero, cose che vuoi evitare di fare per avere un'applicazione stabile).

Dubito fortemente che l'interrogante originale non stia creando alcuna applicazione front-end, ma poiché non indica il tipo di front-end coinvolto, è difficile consigliare un back-end che lo accompagni.Access ha il vantaggio di offrirti entrambe le parti dell'equazione e, se utilizzato correttamente, è perfettamente affidabile per più utenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top