Die Community zu .NET und Classic VB.
Menü

FAQ 0042: Welches ist die beste Datenbank für meine Anwendung?

 von 

Frage 

Welches ist die beste Datenbank für meine Anwendung?

Grundsätzliches  

Diese Frage läßt sich nicht pauschal beantworten.
Die beste Datenbank ist ein Zusammenspiel verschiedener Punkte.

Folgende Punkte sollten geprüft werden:

  • Wie viele Benutzer sollen damit arbeiten?
  • Wie viele Benutzer sollen gleichzeitig damit arbeiten können?
  • Wie groß ist die Datenbank und wie groß wird sie maximal?
  • Sind bereits Lizenzen vorhanden oder müssen welche hinzugekauft werden?
  • Wie sieht es mit Schulungen für die Datenbank-Administratoren aus?
  • Wie groß ist das zur Verfügung stehende Budget?

Datenbanken  

Ein paar Eckdaten:

MS Access

... ist eine reine Desktop-Datenbank. Auch wenn Windows wesentlich größere Dateien zuläßt, macht Access bei 2 GB die Schotten dicht. Bei 1 GB Dateigröße ist es bereits spürbar langsamer. Es können zwar beliebig viele Benutzer mit einer Access-Datenbank arbeiten, es ist aber nicht zu empfehlen, mehr als 10 Benutzer gleichzeitig mit einer Datenbank arbeiten zu lassen. Die Benutzer benötigen zudem Schreibrechte auf das Verzeichnis, in dem die Datenbank liegt.

SQL Server

... verkraftet größere Datenbanken. Außerdem ist er multiprozessorfähig (allerdings kostet jeder Prozessor eine Lizenz). Er hat ein gutes Transaktionsmanagement, ist aber teuer. Zugriffsrechte können für Benutzer und für Gruppen vergeben werden.

MSDE

MSDE (Microsoft SQL Server Desktop Engine) ist eine abgespeckte Version des SQL Servers, welcher nur eine bestimmte Anzahl Abfragen gleichzeitig zuläßt.

Anmerkungen von Juergen Caspar:
Die MSDE kann mit Access als Frontend bedient werden und ist damit optimal für Um- und Aufstieger von MS Access. Letzteres hat einen Upsizing Wizard, der die Umstellung der vorhandenen Access-Datenbanken samt Daten/Formulare/Berichte etc. übernimmt. Sollte die MSDE "zu klein" werden, kann es später ohne große Programmänderungen durch den SQL Server ersetzt werden.

Das mit den max. 5 gleichzeitigen Abfragen ist auch nicht so ernst zu sehen, da bei mehr gleichzeitigen(!) Abfragen diese in eine Queue gestellt werden. Man darf das nicht falsch verstehen und denken, es wären nur 5 Benutzer zugelassen.

Durch die Nutzung des Access-Frontends und den Upsizing Wizard erscheint die MSDE die optimale Wahl, wenn Access nicht mehr ausreicht und SQL Server noch zu groß/teuer ist.

MS SQL Server 2005 Express

SQL Server 2005 Express ist der kleine Bruder des SQL Server 2005. Er ist seitens Microsoft als Ersatz für die MSDE vorgesehen.

Er verfügt über die selben Datenzugriffsschnittstellen (ADO.NET, SQL Client, T-SQL) wie sein großer Bruder.
Einzige Unterschiede sind:

  • Enterprise-Funktionalitäten fehlen größtenteils
  • Beschränkung auf eine CPU
  • Nutzung von max. 1 GB Arbeitsspeicher
  • Datenbankmaximalgröße von 4GB

Datenbanken werden wie bei Access als einzelne Dateien abgelegt. Sofern entsprechender Bedarf besteht, können die Datenbanken auch ohne Probleme im großen Bruder verwendet werden.

Der SQL Server 2005 und damit auch die Express-Edition unterstützt viele Funktionsmerkmale der neuesten SQL-Standards. Zudem lassen sich unter anderem Stored Procedures und neue Aggregatfunktionen in den .NET-Sprachen VB.NET und C# einbinden. Hierbei kann das gesamte .NET-Framework verwendet werden. Die Ausführung erfolgt direkt innerhalb des SQL Servers, d.h. es wird kein externer Prozess hierfür gestartet. Der dadurch notwendige Verwaltungs- und Kommunikationsaufwand fällt weg.

SAS

... ist dem SQL Server ähnlich. Jede CPU kostet eine (sehr teure) Lizenz, es ist multiuserfähig (jeder Benutzer kostet eine Lizenz) und in der Datenmenge praktisch unbegrenzt. SAS hat aber einen dicken Nachteil: es besitzt keine Transaktionssteuerung. Diese muß man entweder clientseitig selbst implementieren oder serverseitig ein zusätzliches Tool benutzen.

MySQL

Viele Provider bieten MySQL an, auch, weil es kostenlos ist. Subselects sollten nicht zu komplex werden, dieses Funktionsmerkmal ist noch im Beta-Stadium. MySQL kennt (bisher) keine Stored Procedures und auch keine Views.

Anmerkung von Daniel Pramel:
Vielleicht sollte man noch anmerken, daß man auch die MyVbQL-Lib benutzen kann, um eine Verbindung mit einer MySQL-DB aufzubauen. Damit kann man den Overhead, den ODBC und ADO mit sich bringen, vermeiden.
Zu finden ist die Bibliothek unter www.mysql.com. Es handelt sich dabei um eine Wrapperklasse für die in C++ geschriebene LibMySQL.
Die MyVbQL-Bibliothek ist kleiner als die ADO-Bibliotheken, sie orientiert sich aber an ADO.
Sehr praktisch, wenn man ausschließlich mit MySQL-DBs arbeitet.

PostgreSQL

Dabei handelt es sich um eine professionelle Datenbank auf Unix/Linux-Basis. Unter www.postgresql.org kann man sich Informationen zu Kosten und Perfomance holen. Es gibt eine Portierung für cygwin, welche bei cygwin bereits (fertig kompiliert) mitgeliefert wird.

Borland Database Engine

BDE ist eine Datenbank der Firma Borland/Inprise. Für eine Einschätzung der Datenbank fehlen mir aber Erfahrungen mit dieser.

Informix

Informix ist eine professionelle Datenbank der Firma IBM, welche unter Unix läuft. Sehr performant, aber auch sehr teuer.

Anmerkung von Konrad Doblander:
Es gibt auch eine Version für DOS und Windows.

Oracle 9i

Oracle Database Server ist wohl eine der größten, leistungsfähigsten und skalierbarsten Datenbanken.
Neben der teuren Standard-Version (oder noch teureren Enterprise-Version) gibt es eine kostenlose Ausgabe namens Oracle 10g Express Edition (XE).

PowerTree

Am meisten unterschätzt wird die Datenbank PowerTree B+Tree Manager von PowerBasic. Der Preis ist absolut OK und es fallen keine weiteren Lizenzgebühren an. Eine einzige DLL und schon funktioniert es. Absolut problemlos bei der Installation.
Diese Datenbank ist, wenn man nicht gleich eine ganze Firma vernetzen will, eigentlich schon durch die hohe Geschwindigkeit ein Muß.
(Eingesandt von Bruno Pawlowski)

SQLite

SQLite ist eine Datenbank-Engine die alle Tabellen und Indexe in eine Datei schreibt. Damit sind die Datenbanken (ähnlich ACCESS) sehr leicht zu transportieren. Die SQLite-Engine umfasst beinahe den gesamten SQL92-Standard und ist extrem schnell.

Für VB gibt es kommerzielle (SQLitePlus COM-DLL unter www.eztools-software.com) als auch freie (SQLiteDB unter www.terrainformatica.com/sqlitedb) Wrapper für diese Datenbank.

Weitere Informatinen, Geschwindigkeitsvergleiche und weitere Wrapper sind zu finden unter www.sqlite.org.
(Eingesandt von Volker Schmid)

Btrieve/Pervasive

Die meisten werden die DB noch aus Novells Zeiten kennen, hier gab es die DB zum Novell kostenlos dazu. Sie war bereits schon damals mit allem ausgestattet, was wir heute von Datenbanken erwarten: transaktionsprotokolliert, verschlüsselbar, relational usw.
Sie ist mit eine der ältesten DBs und wird auch heute noch umfangreich eingesetzt, besonders da wo Performance und Sicherheit eine große Rolle spielen (bis hin zur Bank von England).

Mittlerweile ist die DB als selbständiges Produkt (also aus dem Novellumfeld heraus) beziehbar und heißt nun nicht mehr "Btrieve" sondern "Pervasive" (es gab auch mal Derivate/Zwischenvarianten wie Xtrieve usw.)
Für Entwickler gibt es auch selbstverständlich eine umfangreiche SDK mit Beispielen usw.
(Eingesandt von Stefan Schrader)

Tsunami

Eine weitere interessante Datenbank (als Freeware) ist der Tsunami Recordmanager. Ähnlich wie Classic BTRIEVE, kein Overhead (nur eine DLL) und sehr schnell (solange keine BLOBs > 5MB / Datensatz gespeichert werden). Daten können im Terabyte-Bereich gespeichert werden. Beispiele und Dokumentationen sind auf der Homepage zu finden.
(Eingesandt von Michael Schmidt)

Weitere Datenbanksysteme

Hier eine Liste weiterer Datenbanksysteme.
Sie ist weder vollständig noch ausführlich, bei einigen DBS ist nur der Name, bei einigen zusätzlich der Hersteller bekannt.

Sollten Sie noch andere Datenbanksysteme kennen, die hier nicht aufgeführt sind, scheuen Sie sich nicht, einen Ergänzungstext an zu senden.

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.