PostgreSQL vs Firebird vs Derby

Status
Nicht offen für weitere Antworten.

Deadalus

Bekanntes Mitglied
Hallo,

Es geht um ein Projekt im JEE Umfeld. DB Zugriff wird über JPA laufen evtl. werden später mehere DB's in einer XA Ressource benutzt.

Da MySQL aus lizenrechtlichen Gründen für mich nicht in Frage kommt brauche ich eine neue Datenbank. Allerdings bräuchte ich eure Hilfe bei der Entscheidungsfindung.

Was ich bisher so an Infos gesammelt reicht mit bisher noch nich.

Alle 3 Datenbanken sollen eine gute Geschwindigkeit haben und man hört allgmein viele positive Dinge über alle 3. Bisher hab ich nur bei der Dokumentation größere Unterschiede vernommen. Hier soll PostgreSQL führend sein, die Firebird Doku "ok" sein und Derby noch deutlich zu wünschen übrig lassen.

Die Lizenzen sind sich relativ ähnlich wenn es darum geht die DB in einem kommerziellen Projekt zu benutzen. PostgreSQL (BSD) Firebird(IDPL) und Derby(Apache License 2.0)

An Derby finde ich persönlich sympatisch, dass Derby komplett in Java geschrieben wurde. So mann eine bestehende Datenbank einfach auf ein beliebiges OS kopieren ohne Backups und Imports zu machen.

So jetzt bräuchte ich eure Meinungen. Hat jemand schon Efahrungen mit einer oder mehreren der Datenbanken gemacht und möchte diese mit mir teilen? Ich sag schon mal danke im Vorraus.
 
M

maki

Gast
Du willst einen Tipp für eine DB ohne irgendwelche Anforderungen zu stellen ausser
Alle 3 Datenbanken sollen eine gute Geschwindigkeit haben
?

Kannst alle 3 nehmen, ich empfehle Derby (weil es autom. "installiert" werden kann zB. von Ant oder Maven2, gut für autom. Tests), läuft sehr gut mit EclipseLink und ganz gut mit DBUnit.
 

Deadalus

Bekanntes Mitglied
Das mit der Geschwindigkeit war keine Anforderung meinerseits, sondern eine Vermutung auf dem was ich bisher gehört (gelesen) habe.

Mein "Problem" ist viel eher, das alle 3 Datenbanken meine Anforderungen erfüllen und einfach Anregungen brauche warum ich eine den anderen vorziehen sollte. :)
 

musiKk

Top Contributor
Wenn alle die Anforderungen erfüllen, kannst Du ja würfeln. Ich würde nach dem bisherigen Umfeld gehen und auch, was die Leute in meiner Umgebung am besten können... so kam ich jedenfalls zu Postgres.
Wenn Du nicht viele herstellerspezifischen Eigenschaften der DBs (Stichwort SQL-Standard, Postgres vermerkt in der Doku immer, inwieweit sie dem Standard entsprechen oder nicht) nutzt, sollte ein etwaiger Wechsel ohnehin nur wenige Probleme bereiten.
 

JanHH

Top Contributor
Ähm.. also ist Derby nicht lediglich eine kleine "embedded" java-DB, so wie HSQL, daher nur für recht spezielle Zwecke produktiv nutzbar, sonst eher zum Testen? Und PostgresQL eine "grosse" Datenbank wie MySQL, und kann durchaus mit kommerziellen Produkten wie teuren Oracle-Datenbanken konkurrieren? Irgendwie werden da doch Äpfel mit Birnen verglichen, wenn ich mich nicht irre.

Wenns ein grosses Projekt wird, kommt an sich nur Postgres in Frage, bei kleinen Sachen ist es im Grunde ziemlich egal.. und da Du eh mit JPA arbeiten willst, kannst Du die DB sowieso jederzeit austauschen.
 
M

maki

Gast
Derby läuft auch als Server, oder als embedded.
Testen geht damit gut, ist aber langsamer als HSQL, produktiv läuft sich auch gut, würde Derby auch in dieselbe Kategorie wie MySQL einordnen, ist bei mir aber nicht die Kategorie in der DB2 oder Oracle spielen ;)

und da Du eh mit JPA arbeiten willst, kannst Du die DB sowieso jederzeit austauschen.
Naja, Oracle erzeugt Ids per Sequence, das können nicht so viele andere DBs ;)
 

JanHH

Top Contributor
Also in meiner Weltvorstellung gibt es grob drei kategorien von (relationalen) Datenbanken:

- kleine, in java geschrieben, embedded nutzbare, die nur für kleine Anwendungen, zum Testen oder rumspielen geeignet sind, dafür im embedded mode teilweise sehr schnell (HSQLDB, Derby, JavaDB, H2)
- "grosse freie" Datenbanken, die für den richtigen Produktivbetrieb geeignet sind und mit grossen Datenmengen klarkommen (MySQL, PostgreSQL)
- grosse Kommerzielle Datenbanken (oracle)

wobei die beiden letzten Kategorien ein bisschen ineinander verschwimmen. Ich bin aber auch Neuling auf dem Gebiet, aber das ist so das Bild, was man bekommt, finde ich.

Wie die IDs nun generiert werden, ist aber doch an sich egal, wenn man alles sauber per JPA macht und schön kapselt..
 
M

maki

Gast
- kleine, in java geschrieben, embedded nutzbare, die nur für kleine Anwendungen, zum Testen oder rumspielen geeignet sind, dafür im embedded mode teilweise sehr schnell (HSQLDB, Derby, JavaDB, H2)
- "grosse freie" Datenbanken, die für den richtigen Produktivbetrieb geeignet sind und mit grossen Datenmengen klarkommen (MySQL, PostgreSQL)
Derby == JavaDB ;)
Derby ist aber nicht so schnell wie H2 oder HSQL, denn Derby ist keine richtige In-Memory DB, wie gesagt, Derby gehört für mich in dieselbe Kategorie wie MySQL & PostgreSQL.

Wie die IDs nun generiert werden, ist aber doch an sich egal, wenn man alles sauber per JPA macht und schön kapselt..
JPA Hausmittel reichen dafür nicht aus:
Java:
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
Müsste man wieder ändern wenn man statt Oracle eine andere DB einsetzen will.
Datanucleus (ehem. JPOX) kann damit umgehen, da dort explizit noch ein Mappingfile unterstützt wird, da wird das nur mit @Id annotiert und erst im Mappingfile (orm.xml) festgelegt wie die ID erzeugt wird, da braucht man den Javaquellcode im nachhinein nicht zu ändern, andes als bei nacktem JPA.
Man merkt schon immer wieder den qualitativen Unterschied zwischen JPA und JDO imho.
 

musiKk

Top Contributor
Bei den IDs kocht irgendwie jede Datenbank ihr eigenes Süppchen. Postgres benutzt z. B. auch Sequenzen für automatisch generierte IDs und dort muss die Annotation [c]@GeneratedValue(strategy=GenerationType.IDENTITY)[/c] lauten. In dem Fall wird es aber wohl daran liegen, dass Oracle einen Trigger benötigt (laut diversen Google-Fünden), während Postgres die Möglichkeit hat, das Resultat einer Funktion als Defaultwert zu verwenden (in diesem Fall die Funktion [c]nextval()[/c] angewandt auf die Sequenz).

Aber wie auch immer. Eine Datenbank auszutauschen, wird in den meisten Fällen nicht reibungslos gehen. Selbst JPA-Provider lassen sich nicht immer völlig transparent austauschen. Ich habe eine Weile mit EclipseLink und Hibernate experimentiert und da gibt es doch ein paar Unterschiede. Siehe auch Leaky Abstraction.

da wird das nur mit @Id annotiert und erst im Mappingfile (orm.xml) festgelegt wie die ID erzeugt wird, da braucht man den Javaquellcode im nachhinein nicht zu ändern, andes als bei nacktem JPA.

Was meinst Du mit nacktem JPA? Eine orm.xml kann man ja immer definieren und vorhandene Annotations überschreiben. Das ist ja nicht speziell für Datanucleus, sondern steht in der JPA-Spezifikation.
 
M

maki

Gast
Was meinst Du mit nacktem JPA? Eine orm.xml kann man ja immer definieren und vorhandene Annotations überschreiben. Das ist ja nicht speziell für Datanucleus, sondern steht in der JPA-Spezifikation.
Ooops.. hast recht :oops:
 

homer65

Top Contributor
Hallo,
Alle 3 Datenbanken sollen eine gute Geschwindigkeit haben und man hört allgmein viele positive Dinge über alle 3. Bisher hab ich nur bei der Dokumentation größere Unterschiede vernommen. Hier soll PostgreSQL führend sein, die Firebird Doku "ok" sein und Derby noch deutlich zu wünschen übrig lassen.

Ich protestiere, die Dokumentation von Derby ist ok. Sie wird direkt mit der Software im Unterverzeichnis docs geliefert.
 

Deadalus

Bekanntes Mitglied
Ich protestiere, die Dokumentation von Derby ist ok. Sie wird direkt mit der Software im Unterverzeichnis docs geliefert.

Ich habe ja auch nur wiedergegeben, was ich gehört hatte. Allerdings hoffe ich mal, dass du noch andere Gründe hast warum die Derby Doku ok ist außer, dass sie direkt mit der DB ausgeliefert wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
L PostgreSQL Abfrage mit EclipseLink Datenbankprogrammierung 7
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Husamoli345 JSF Postgresql DatabaseConnection Datenbankprogrammierung 1
D hibernate mit postgreSQL Datenbankprogrammierung 3
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
Ghostman1711 PostgreSQL Lock Row Exclusive Mode Transaktionsblock Datenbankprogrammierung 0
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
E Java und Postgresql Datenbankprogrammierung 8
F PostgreSQL Hibernate & PostgreSQL Datenbankprogrammierung 3
S JBoss und PostgreSQL DB Datenbankprogrammierung 3
J Mit Java Programm - PostgreSQL backup und restore Datenbankprogrammierung 5
B JDBC Verbindung mit Postgresql Datenbankprogrammierung 13
S PostgreSQL Datenbankstruktur exportieren und importieren Datenbankprogrammierung 2
V PostgreSQL langsam (Blob) Datenbankprogrammierung 10
D PostgreSQL Von JTable -> Datenbank Datenbankprogrammierung 6
N csv datei in PostgreSQL datenbank einlesen Datenbankprogrammierung 1
B fehlerhafte PostgreSQL-Verbindung Datenbankprogrammierung 4
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
S PostgreSQL Verbindung kommt nicht zu stande Datenbankprogrammierung 3
G PostGreSQL - Die Abfrage lieferte kein Ergebnis Datenbankprogrammierung 3
S Postgresql DB - Performancetest - Programm, Logfile etc. Datenbankprogrammierung 2
G Postgresql Datenbankprogrammierung 5
T PostgreSQL db Datenbankprogrammierung 5
T Treiber laden PostgreSQL Datenbankprogrammierung 3
Z jdbc-Verbundung unter Windows zur Postgresql DB sehr langsam Datenbankprogrammierung 3
B hibernate - postgresql - Sequenz setzen Datenbankprogrammierung 3
M Zugriff auf PostgreSQL mit JAva! Datenbankprogrammierung 7
H logging von postgresql statements Datenbankprogrammierung 5
F MySQL / PostgreSQL: Verschlüsselung Datenbankprogrammierung 3
O Verbindungsproblem zu Firebird DB Datenbankprogrammierung 3
C firebird problem Datenbankprogrammierung 5
C Firebird Datenbank Datenbankprogrammierung 2
S Firebird NoClassDefFoundError trotz erfolgreichem Class.forName(...) unter Linux Datenbankprogrammierung 5
T Firebird .fdb: Öffnen und Exportieren Datenbankprogrammierung 1
E Dringend Hilfe Firebird/Jaybird verbindet nicht; im jar file Datenbankprogrammierung 4
K jar Datei startet nicht aufgrund Firebird(?) Datenbankprogrammierung 3
G FireBird installieren Datenbankprogrammierung 3
P fireBird/ IF EXISTS Datenbankprogrammierung 4
D Firebird Embedded dlls Datenbankprogrammierung 3
S Auf Firebird 2.0 zugreifen mit Jaybird Datenbankprogrammierung 6
G Umlaut-Problem mit Firebird Datenbanken Datenbankprogrammierung 8
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
J Welche Firebird Variante kann ich hosten Datenbankprogrammierung 6
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
F Derby Datenbankprogrammierung 5
T importierte Derby DB währen der Laufzeit einlesen Datenbankprogrammierung 2
L Derby/JavaFX Fehlermeldung Datenbankprogrammierung 3
R findet Derby.DB nicht !? Datenbankprogrammierung 5
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
J Derby/JavaDB Datenbankanbindung Eclipse und Derby Datenbankprogrammierung 7
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
T Datenbankfeld in Derby 255 Zeichen Datenbankprogrammierung 3
M Derby/JavaDB Derby SQL Insert mit AUTO_INCREMENT, welche ID wurde vergeben? Datenbankprogrammierung 6
C Derby auf Server Datenbankprogrammierung 6
R derby : in squirrel url zu db von tomcat Datenbankprogrammierung 4
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
H Probleme mit Unicodedarstellung in Derby DB Datenbankprogrammierung 1
S Dringend Netbeans Derby DB random() function Datenbankprogrammierung 6
M HSQLDB oder DERBY - warum SCRIPT Datei? Datenbankprogrammierung 0
B Derby/JavaDB Einrichten der Derby DB / JAVA DB Datenbankprogrammierung 2
A Eclipse + Derby + Delete Row Datenbankprogrammierung 3
D Derby Datenbank bei Export zu JAR-Datei nicht möglich Datenbankprogrammierung 8
D Embedded Derby Datenbank Datenbankprogrammierung 4
reibi Derby/JavaDB Derby DB löschen Datenbankprogrammierung 5
L Derby Datenbank speichert nicht Datenbankprogrammierung 9
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S Derby/JavaDB Derby zu MySQL Datenbankprogrammierung 6
H Derby/JavaDB Eine verschlüsselte Derby-Datenbank wieder entschlüsseln Datenbankprogrammierung 4
G Derby/H2 Welches u. Wie installieren/verwenden? Datenbankprogrammierung 10
L Derby/JavaDB Derby macht Probleme Datenbankprogrammierung 4
zilti Derby/JavaDB EclipseLink und Derby: "Abschneidefehler" bei @Lob Datenbankprogrammierung 2
B Derby Databankabfrage liefert Ergebnisse nicht korrekt Datenbankprogrammierung 2
H Derby SQL-Abfragen in Datei abspeichern Datenbankprogrammierung 2
H Flat Files in Derby importieren Datenbankprogrammierung 3
reibi Derby/JavaDB Derby russty manager deaktivieren Datenbankprogrammierung 3
L Derby Dezimal-Spalte die Größe ändern Datenbankprogrammierung 2
P Zugreifen auf Derby Datenbank mit java (ÜBERARBEITET) Datenbankprogrammierung 2
R Lokale Derby in einer JPA-Anwendung Datenbankprogrammierung 3
S Derby ein zweites mal als Read-only öffnen Datenbankprogrammierung 9
M Derby insert, ID auslesen Datenbankprogrammierung 3
J Derby Datenbankprogrammierung 7
S Derby Datenbank "offline" und "online" Datenbankprogrammierung 5
L Apache Derby Management-Tool Datenbankprogrammierung 3
A JavaDB(Derby) als ODBC-Datenquelle eintragen Datenbankprogrammierung 4
T Derby und Foreign Keys Datenbankprogrammierung 4
I JAVADB (Derby) OneToMany Datenbankprogrammierung 2
T Zugriff auf Derby-Datenbank will einfach nicht klappen Datenbankprogrammierung 22
M Gelöst: JavaDB - Derby Inhalt in Jar Datei speichern Datenbankprogrammierung 5
O Derby/JavaDB anwenden von Regular Expressions Datenbankprogrammierung 2
O Derby Performance Probleme? Datenbankprogrammierung 4
H Derby in Java 6 direkt integriert? Wie nutzt man das? Datenbankprogrammierung 3
Z derby abfrage von einem Timestamp Datenbankprogrammierung 2
GilbertGrape Allgemeines zu Derby Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben