Ich habe eine Anwendung geerbt, die Daten in mehreren Tabellen in Microsoft Access speichert. Die Access-Datenbank wird nur zur Speicherung verwendet, die gesamte Datenverarbeitung wird von der App (VB.net) übernommen.
Ist das eine gute Praxis? Ich muss eine ähnliche App von Grund auf neu erstellen und bin mir nicht sicher, was "normale" Praxis ist.
Ich habe versucht, die Frage in verschiedenen Formaten zu googeln und zahlreiche Ergebnisse (einschließlich vieler in diesem Forum) durchgesehen, aber alle Fragen scheinen sich darauf zu beziehen, wo Sie in Access programmieren, anstatt sie einfach zur Datenspeicherung zu verwenden.
Ich denke, ich könnte genauer sein und sagen, SQL Server Express oder ähnliches wäre eine bessere Option, und wenn ja, warum?
Wenn Sie diesen Beitrag aufgrund einer ähnlichen Frage lesen, lesen Sie den folgenden Link von @DanielB - /programming/694921/ms-access-mdb-concurrency
Antworten:
MSAccess-Datenbanken werden normalerweise aus mehreren Gründen nicht verwendet. In der Vergangenheit waren sie schuppig und akzeptierten nicht mehrere Verbindungen gleichzeitig. Wenn die MSAccess-Datenbank verwendet wird, wird eine Sperrdatei (ldb) erstellt. Wenn diese Sperrdatei vorhanden ist, kann niemand auf die Datenbank zugreifen. Ich stellte fest, dass sich die Leistung von MSAccess nach einer einmaligen Anwendung nach etwa 50.000 Zeilen erheblich verschlechtern würde. Dies ist jetzt wahrscheinlich besser, aber es wurde sicherlich nicht für größere Anwendungen optimiert.
Typischer ist die Verwendung eines robusteren Datenbanksystems wie Postgres, MySQL oder MSSQL. Für Einzelverbindungsdatenbanken habe ich Derby (mit Java) verwendet.
Was VB betrifft, werden Sie keine professionellen Lösungen finden, die VB als Client-Software für eine Datenbank verwenden. Nun, vielleicht werden einige Lösungen verkauft, aber ich persönlich würde sie vermeiden.
Normalerweise erfolgt Ihre Verarbeitung in einer Sprache wie C #, C ++, Java, Perl, Python oder anderen gängigen Sprachen. Bibliotheken werden verwendet, um eine Verbindung zur Datenbank herzustellen, die von der Sprache getrennt ist. Einige Lösungen verwenden SQL zum Abfragen und Empfangen von Daten, und andere Lösungen verwenden eine Persistenzbibliothek, um Objekte aus den Daten zu erstellen (dies wird immer häufiger).
Was die besten Praktiken angeht, habe ich es immer als am besten empfunden, konsistent zu sein. Wenn Sie ein Geschäft mit vier Personen haben, die MSAccess und VisualBasic verstehen, ist es sehr sinnvoll, dies auf diese Weise fortzusetzen. Wenn es im Unternehmen ein Ziel gibt, sich aufgrund von Fehlern in der Vergangenheit davon zu entfernen, können Sie VB weiterhin verwenden und zu einer anderen Datenbank wechseln. Schauen Sie sich das Verknüpfen von Tabellen in MSAccess an - Ich habe eine VB-Anwendung in einer MSSQL-Datenbank verwendet, indem ich die MSSQL-Tabellen mit einer MSAccess-Datenbank verknüpft habe. Der VB kannte den Unterschied zwischen einer naiven MSAccess-Tabelle und einer verknüpften Tabelle auf einem anderen Server nicht. Die VB-Lösung war immer noch schuppig, funktionierte jedoch mit größeren Datensätzen viel besser.
Hoffe das hilft!
quelle
Ich habe in der Vergangenheit in einem großen Unternehmen einige Erfahrungen mit diesem Thema gesammelt.
Mit zunehmender Benutzerbasis traten Sicherheits- und Leistungsprobleme auf, da die Access-Dateien, in denen sich die Daten befanden, in einem freigegebenen Netzwerkordner gespeichert werden mussten und alle Benutzer W / R-Zugriff darauf hatten.
Dies ist nicht theoretisch, sondern eine reale Erfahrung. Access-Datenbanken lassen sich nicht gut auf Dutzende gleichzeitiger Benutzer skalieren , geschweige denn auf ein paar Hundert geografisch verteilte Benutzer.
Mit kostenlosen und guten Datenbanksystemen wie PostgreSQL gibt es kaum einen Grund, sich für Access zu entscheiden, außer den folgenden: Mangel an technischem Know-how.
quelle
Persönlich, wenn Sie in der Lage sind, sich vom Zugang zu entfernen, habe ich Kunden gehabt, die wirklich gelitten haben, weil sie einfach nicht "in die Kugel beißen" konnten oder wollten.
Wie Kieveli erwähnte, sind Access-Datenbanken beim Speichern großer Datenmengen schrecklich. Denken Sie daran, dass Anwendungen immer so konzipiert sein sollten, dass sie dem Endbenutzer zugute kommen. Stellen Sie sich vor, Sie haben ein Büro voller Leute, die ein schrecklich langsames System haben, das jede Woche Stunden ihrer Zeit verschwendet?
Aus persönlicher Erfahrung ist das Verschieben einer Zugriffsdatenbank auf SQL Server nicht so schmerzhaft, vorausgesetzt, Sie planen richtig. Die Frage ist, ob Sie über die technischen Fähigkeiten verfügen, um auf etwas wie vb.net usw. umzusteigen.
quelle
Zugriffsdatenbanken lassen sich nicht gut skalieren, sind jedoch einfach zu handhaben und zu verteilen. Wenn Sie einen Object Relational Mapper (O / R-Mapper) verwenden, der verschiedene Datenbanktypen als Schnittstelle zu Ihrer Datenbank unterstützt, ist Ihre Anwendung wesentlich weniger von einem bestimmten Datenbanktyp abhängig. Auf diese Weise können Sie mit Access beginnen und später zu einer anderen Datenbank wechseln.
Ich habe dies einmal gemacht und ein Projekt mit Access und einem C # -Frontend gestartet, da Datenbanken mit Access sehr einfach eingerichtet und entwickelt werden können. Später bin ich zu einer Oracle-Datenbank gewechselt, weil mein Kunde eine Oracle-Datenbank hat. In meiner Bewerbung waren nur wenige Änderungen erforderlich.
quelle
Jet-SQL ist schrecklich dokumentiert. Das allein ist ein Grund für mich, mich von Access fernzuhalten.
/programming/11265817/where-can-i-find-a-complete-reference-for-microsoft-access-sql
T-SQL (SQL Server) hingegen ist viel flexibler und Sie finden unzählige Dokumentationen, Blogs und Experten, die Ihnen helfen können.
Natürlich ist Access eine Desktop-Datenbank, während SQL Server eine vollständige Client-Server-Datenbank ist.
Es gibt einige andere Desktop-Datenbanken (ich habe Advantage Database Server verwendet, aber das ist auch ein Nischenprodukt).
quelle