Welche Datenbank nehmen?

the_green_hornet

Benutzer
Beiträge
8
Newbie!
Mit welcher Datenbank sollte man seine erste Schritte machen? Wichtig ist mir, das die Datenbank unter Windows und Linux läuft. Programmiert wird mit Lazarus (Free Pascal). Für höhere Programmiersprachen wie C++ bin ich anscheinend zu blöd.
Zur Auswahl stehen MariaDB, Postgresql und Firebird. Wobei mir Firebird dadurch gefällt, das ich die DB Stand-alone meinem Programm so mitgeben kann. Alle anderen brauchen mindestens einen DB-Server. Sqlite3 sagt mir nicht so zu.

mariaDB:
+ große Community
- Braucht DB-Server

postgresql:
+ hält sich sehr strickt an den SQL-Standard
- Komplex

Firebird:
+sehr stabil
- keine große Community
 
Werbung:
Ich kann dir PostgreSQL stark empfehlen, bin dabei bisher auf keine Hürde gestoßen, welche in PgSQL nicht lösbar war.

Habe auch öfters gehört (habe kaum Erfahrungen mit anderen SQL-Sprachen), dass:
a) PostgreSQL näher dem "SQL-Standard" entsprict
b) PostgreSQL vollständige und korrekte Fehlermeldungen gibt
c) PostgreSQL von Firmen im High-End eingesetzt werden (Zalando glaube ich war, was mir gesagt wurde)
d) PostgreSQL hat eine gute Dokumentation online, wo vieles mit Beispielen erklärt wird.

Wenn "komplex" der einzige Grund ist, es "nicht" zu nehmen, wage den Schritt, mir hat es einen Haufen an Freude gebracht (vorallem beim lernen über das Forum hier)

Ich verwese hier (closed) auf meinen ersten längeren Thread in diesem Forum:
mein erster Thread

Darin sollten die ersten Schritte in PostgreSQL erklärt werden.

EDIT: Ich kannte zu den Zeiten:

Code:
DEN

Code-Block noch nicht. Von dem her muss man vl. etwas herauskritzeln, was der Code davon ist.
 
Ist auch nicht komplexer als andere Datenbanksysteme meiner Meinung nach.

Jedes System hat seine Eigenheiten und wenn man die nicht kennt bzw. verstanden hat, dann fühlt sich das System sehr schnell "komplex" an.

Ich verwende MySQL/MariaDB vielleicht einmal im Jahr (oder seltener) und verzweifle regelmässig an deren Benutzerkonzept ("warum ist hans@localhost ein anderer User als hans@my-hostname? Und warum ist der Servername überhaupt Teil des Benutzernamens"?). Wenn man nicht gerade einen Online Shop mit tausenden von Transaktionen pro Minute betreut, dann ist Postgres auch ziemlich "wartungsfrei".

Ich würde sogar behaupten, dass Postgres stabiler ist als Firebird - und auch dort empfinde ich das Setup deutlich "komplexer" als bei Postgres ("Wieso muss ich den Pfad einer Datenbankdatei auf dem Server kennen um mich zu verbinden? Ach da gibt es so etwas wie Aliase..")

Wenn ein "echter" Server akzeptabel ist, würde ich immer Postgres vorziehen. Wenn das mit dem "mitgeben der Datenbank" wirklich wichtig ist, dann führt wohl kein Weg an Firebird vorbei.

Ich kenne Lazarus nicht, aber so weit ich weiß ist es eng mit dem Firebird Ökosystem verbunden. Ich würde vermutlich ein bisschen Zeit investieren und prüfen ob Postgres genauso gut unterstützt wird.
 
Es stellt sich auch ein wenig die Frage, wohin willst du gehen. Willst du nur Software für dich schreiben oder auch für andere? Wird das eher was für den Heimanwender, dann ist Firebird grundsätzlich ein Kandidat. Aufjedenfall geeignet für Einzelplatz-Software die nur wenig Daten speichern muss und wo der Anwender einen Installer durch jagen will und gut. Sollen mehrere Leute in einem Netzwerk damit arbeiten oder von verschiedenen Arbeitsplätzen aus, werden sehr viele Daten verarbeitet, brauchst du irgendwann vielleicht mathematische Berechnungen, besondere Datentypen etc. dann gehe direkt Richtung Postgres.
 
Danke für die Antworten.
Für mich kristallisiert sich folgendes heraus:
- Postgresql oder Firebird; mariaDb wird nicht empfohlen.

Ich plane 2 Projekte:
Projekt 1:
Nachbau/Clone des Programmes Rechnung 11 der Fa. Softwarenetz als Fingerübung. Hier bietet sich Firebird oder sqlite3 an. Ich schau mir mal an wie das ganze mit Postgresql aussehen könnte.

Projekt 2:
Erstellung einer Software für CSV-Import, einschl. div. Ein-/Ausgabe von Daten.
 
Du kann Software auch schreiben, dass unterschiedliche Datenbanken genutzt werden können.
z.B. SQLite für Einzelplatz und Postgres / MySql / MSSQL /Oracle (um die meist verbreitetsten zu verwenden; Wenn man so modular entwickelt kann man auch eine DB nach der anderen hinzuziehen) für Mehrplatz.
 
Das Problem ist die unterschiedliche SQL-Syntax der Datenbanken.
Was mit MS SQL funktioniert, geht gar nicht mit mariadb usw.
Deshalb meine Frage nach der optimalen Datenbank.
Meine Reihenfolge ist immer noch:
1. Firebird (Einzelplatz und Server)
2. Postgres (nur Server)
3. MariaDB (nur Server)

Firebird hat keine so große Community. Ist eher den alten Hasen aus der Turbo-Pascal-Zeit bekannt.
Also werde ich Postgresql einsetzen und für die Anwendung einen Postgresql-Server installieren.
 
Du kann Software auch schreiben, dass unterschiedliche Datenbanken genutzt werden können.
Nach meiner Erfahrung bedeutet "datenbankunabhängige Anwendung" letztendlich, dass die Anwendung auf allen Plattformen gleichmäßig schlecht läuft und auf keiner so richtig gut.

Was mit MS SQL funktioniert, geht gar nicht mit mariadb usw.
Man kann bis zu einem gewissen Punkt SQL schreiben, das auf allen System läuft.

Das hat aber zwei Nachteile: leider haben einige Hersteller sogar die einfachsten Syntaxregeln des SQL Standards nicht umgesetzt (z.B. || zum Verketten von Zeichenketten oder die Verwendung von bool'schen Ausdrücken).

Was aber meiner Meinung nach noch schwerer wiegt: wenn man sich auf den kleinsten gemeinsamen Nenner beschränkt, dann kann man die Features der einzelnen Datenbanken eigentlich niemals wirklich ausnutzen.
 
Ich würde auf jeden Fall Postgres empfehlen!
- Du bist Anfänger und willst einen Standard lernen
- Du willst Stabilität
- Du willst eine gute Community
- Du willst (vermutlich) keine Lizenzprobleme bekommen, wenn Deine Anwendungen mal steil gehen
- Du willst vermutlich keine Lizenkosten

plus, relevant aus Spaß oder wenn es Ernst wird (erfolgreiches Projekt mit echter Last und großen Datenmengen):
- Du willst vielleicht etwas mehr Funktion(s-Vielfalt), auch wenn es kein SQL Standard ist (kennt eh keiner)
- Du willst vielleicht andere, verwandte Systeme einsetzen, die letztlich von Postgres abgeleitet sind oder es halt als DB nutzen
- Du willst wenig "coden", sondern Datenverarbeitung auf dem Server "machen lassen"
- ..

Mit einem kleinsten gemeinsamen Nenner kannst Du sicher Postgres genau wie andere Systeme (Firebird, mySQL, Maria, Oracle, MSSQL, ..) mit Lazarus einsetzen. Da gibt es m.E. keine pros und cons die für oder gegen bestimmte Systeme sprechen.

Firebird oder SQLite (und MSDE, gibts das noch? ok, sogar access), eigenen sich gut für lokale Datenhaltung mit Lazarus/Delphi. Heute würde ich dafür wahrscheinlich einfach json nehmen, wenn die lokale Datenhaltung nicht sehr umfangreich ist.

SQLite hat in den letzen Jahren einigen Funktionszuwachs erhalten, der offenbar direkt von Postgres abgeleitet ist. Das zeigt die Qualität von PG (auch im Sinne von open source), SQLite würde ich dennoch nicht empfehlen, weil es einen sehr spezifischen Umgang mit Datentypen hat. Das ist gerade für Anfänger nicht ohne.

Fang mit Postgres an und folge dieser Idee:
Entwickele ein Programm, dass möglichst nahe am Standard (SQL) ist und lerne SQL.
Stelle "danach" (es ist eh nie fertig) Dein Programm auf andere Datenbanken um und schau Dir an, wo es Probleme bei der Kompatibilität gibt.

Wenn Du mit einem "abgespeckten" System mit wenig Funktionsumfang und viel proprietären Funktionen anfängst, hast Du am Ende sehr viel Aufwand, einen Umzug hinzubekommen und noch viel schlimmer:
Du baust dann für die neue DB in einem guten Datenbanksystem proprietäre Funktionen nach, die es gemäß Standard viel besser und komfortabler gibt, die überhaupt keinen Programm Code benötigen würden, sondern einfach in SQL abgearbeitet werden könnten.

Noch ein Hinweis:
Datenimport und Datenexport ist dabei ein besonderes Thema. Es ist wirklich sehr herstellerspezfisch. Aber auch hier muss sich Postgres nicht verstecken. Vereinheitlichung kommt da wahrscheinlich am ehesten über Lazaruskomponenten. Wenn es schnell sein soll, landest Du wieder, wie immer bei reinen Datenbankverfahren.

Und was das Thema Geschwindigkeit allgemein angeht noch ein Hinweis. Die Hardware ist heute idR so leistungsfähig und Speicher so billig und verfügbar, dass Performance eigentlich gar kein Problem ist, selbst bei schlechter Programmierung. Erst der Erfolg (viele User, viele Daten) bringt die Probleme. Dann spätestens muss man optmieren. Das soll nicht heißen, dass man darauf nicht achtet. Man kann sich aber schonmal mit dem Gedanken anfreunden, dass die ersten eigenen Ideen manchmal nicht lange halten. Falls das am Erfolg liegt, ist das ja sogar irgendwie cool.
 
Werbung:
Newbie!
Mit welcher Datenbank sollte man seine erste Schritte machen? Wichtig ist mir, das die Datenbank unter Windows und Linux läuft. Programmiert wird mit Lazarus (Free Pascal). Für höhere Programmiersprachen wie C++ bin ich anscheinend zu blöd.
Zur Auswahl stehen MariaDB, Postgresql und Firebird. Wobei mir Firebird dadurch gefällt, das ich die DB Stand-alone meinem Programm so mitgeben kann. Alle anderen brauchen mindestens einen DB-Server. Sqlite3 sagt mir nicht so zu.

mariaDB:
+ große Community
- Braucht DB-Server

postgresql:
+ hält sich sehr strickt an den SQL-Standard
- Komplex

Firebird:
+sehr stabil
- keine große Community
Nur so als Info: PostgreSQL braucht auch einen DB Server. So wie MariaDB
 
Zurück
Oben