Frage

Ich benötige eine Datenbank, die auf einem Netzlaufwerk gespeichert werden kann und mehreren Benutzern (bis zu 20) die Nutzung ohne Serversoftware ermöglicht.

Ich denke über MS Access oder Berkeley DB nach.

Können Sie Ihre Erfahrungen mit Dateidatenbanken teilen?
Welches hast du verwendet, hattest du irgendwelche Probleme damit?

War es hilfreich?

Lösung

ich würde vorschlagen SQLite weil die gesamte Datenbank in einer einzigen Datei gespeichert ist und der gleichzeitige Zugriff mehrerer Benutzer problemlos möglich ist.Es gibt mehrere verschiedene Bibliotheken, die Sie für Ihre Clientanwendung verwenden können, und es ist keine Serversoftware erforderlich.

Eine der Stärken besteht darin, dass es SQL-Server so genau nachahmt, dass die meisten Ihrer Abfragen in Ihrem Client nicht geändert werden müssen, wenn Sie von der Verwendung einer Datenbankdatei auf einen vollwertigen SQL-Server umsteigen müssen.Sie müssen lediglich die Daten in die neue Serverdatenbank migrieren (was mich nicht wundern würde, wenn es beispielsweise Programme zum Konvertieren von SQLite-Datenbanken in MySQL-Datenbanken gäbe).

Andere Tipps

Ich glaube wirklich nicht, dass dateibasierte Datenbanken für mehr als ein halbes Dutzend Benutzer geeignet sind.Als ich das letzte Mal eine Access-Datenbank hatte (das ist zugegebenermaßen schon eine ganze Weile her), musste ich wirklich hart arbeiten, um sie für 8-9 Personen zum Laufen zu bringen.

Es ist wirklich viel einfacher, Ubuntu mit PostgreSQL oder MySQL auf einem alten Junk-Computer zu installieren.Das musste ich auch tun, als ich mein Access-Frontend behielt.

Seien Sie vorsichtig bei dateibasierten Datenbanken, da diese wahrscheinlich alle die gleichen Probleme haben.Ihre Situation erfordert wirklich eine Client/Server-Lösung.

Aus den SQLite-FAQ

Eine gute Faustregel ist, dass Sie in Situationen, in denen die gleiche Datenbank gleichzeitig von vielen Computern über ein Netzwerkdateisystem zugegriffen wird, vermeiden sollten, SQLite zu verwenden.

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

Der Zugang kann eine Schlampe sein.Ich befand mich in der Situation, dass ich 20 bis 50 Personen sagen musste, sie sollten den Zugriff schließen, damit ich in den „Designmodus“ wechseln und das Design der Formulare und vielleicht einer Spalte ändern konnte.Überhaupt kein Spaß.(Alter Zugriff, möglicherweise handelt es sich einfach um ein schlechtes Setup)

Ayende Ich habe kürzlich versucht, eine ähnliche Entscheidung zu treffen, und habe eine Reihe sogenannter eingebetteter Datenbanken ausprobiert.Hoffentlich seines Beobachtungen kann dir helfen.

Ich nutze Access schon seit einiger Zeit und in den unterschiedlichsten Situationen, auch online.Ich habe festgestellt, dass Access gut funktioniert, wenn es gemäß den Richtlinien ordnungsgemäß eingerichtet ist Richtlinien.Ein Vorteil von Access besteht darin, dass alles in einem Paket enthalten ist:Formulare, Abfrageerstellung, Berichte, Datenbankverwaltung und VBA.Darüber hinaus funktioniert es gut mit allen anderen Office-Anwendungen.Die Access 2007-Laufzeitumgebung kann kostenlos unter bezogen werden Hier, was den Vertrieb kostengünstiger macht.Für große Betriebe ist der Zugriff sicherlich ungeeignet, für zwanzig Benutzer dürfte er aber durchaus geeignet sein.BEARBEITEN: Microsoft beziffert die Anzahl der gleichzeitigen Benutzer auf 255.

Kann Access so eingerichtet werden, dass es 10–20 Benutzer unterstützt?Ja.Allerdings nutzen sie, wie auch alle dateibasierten Datenbanken, das Dateisystem zum Sperren und zur Parallelitätskontrolle.Und Access-Datendateien sind anfälliger für Datenbankbeschädigungen als Datenbankserver.Und obwohl Sie es dafür einrichten können, MÜSSEN Sie, wie David Fenton oben erwähnt, Best Practices befolgen, wenn Sie am Ende ein zuverlässiges System erhalten möchten.

Persönlich finde ich, dass es angesichts der Hürden, die man überwinden muss, um sicherzustellen, dass eine Access-Lösung einigermaßen störungsfrei ist, viel weniger Probleme bereitet, eine Instanz von MSDE/SQL Server Express oder PostgreSql zu implementieren.

Berkeley DB unterstützt ein hohes Maß an Parallelität (weit mehr als 20), dies geschieht jedoch hauptsächlich durch die Nutzung von gemeinsam genutztem Speicher und Mutexes (möglicherweise sogar Replikation) – Funktionen, die nicht gut funktionieren, wenn BDB als bereitgestellt wird Datei, die auf einem Netzlaufwerk gespeichert ist.

Um die DBD-Parallelitätsfunktionen nutzen zu können, müssen Sie eine Anwendung darauf aufbauen.

Die ursprüngliche Frage ergibt für mich keinen Sinn, da die Optionen nicht zusammengehören.BerkeleyDB ist nur eine Datenbank-Engine, während Access ein Anwendungsentwicklungstool ist, das mit einer standardmäßigen dateibasierten (d. h. nicht serverbasierten) Datenbank-Engine (Jet) geliefert wird.Aufgrund der Bereitstellung von Access bei Berkeley scheint es offensichtlich, dass dies erforderlich ist nur eine Datenbank-Engine und überhaupt keine Anwendung, aber wie Endbenutzer Berkeley DB ohne Frontend verwenden, weiß ich nicht (ich habe es nur über die Befehlszeile verwendet).

Wer keine Jet-MDB mit 20 gleichzeitigen Benutzern betreiben kann, ist einfach nicht in der Lage, Ratschläge zur Verwendung von Jet als Datenspeicher zu geben.Es ist durchaus machbar, solange die Best Practices befolgt werden.Ich würde zusätzlich zur Best Practices-Webseite von Microsoft empfehlen, Die Best Practices von Tony Toews, Und Tonys Korruptions-FAQ (d. h. Dinge, die Sie vermeiden möchten, um eine stabile Anwendung zu haben).

Ich bezweifle stark, dass der ursprüngliche Fragesteller keine Front-End-Anwendung erstellt, aber da er nicht angibt, um welche Art von Front-End es sich handelt, ist es schwierig, ein passendes Back-End zu empfehlen.Access hat den Vorteil, dass es Ihnen beide Teile der Gleichung bietet und bei richtiger Verwendung für mehrere Benutzer absolut zuverlässig ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top