# Welche Datenbank



## chuvak (2. Jun 2011)

Ich möchte einen einfachen Sportsimulator programmieren, dessen Daten in einer DB gespeichert werden.
Bisher habe ich immer MySQL verwendet, dieses Projekt habe ich mit JavaDB angefangen, bin aber irgendwie nicht sonderlich zufrieden damit, sodass ich gerne eine andere DB verwenden möchte.
Ich habe mir SQLite angeguckt, dies soll aber primär für C++ eingesetzt werden, PostgreSQL soll relativ langsam sein.

Was haltet ihr davon?
Welche DB nutzt ihr primär mit Java?


----------



## XHelp (2. Jun 2011)

Was spricht gegen MySQL und in welchen Punkten bist du mit JavaDB unzufrieden?
Spielt die Performance in deinem Projekt so eine große Rolle?


----------



## Gast2 (2. Jun 2011)

Wenn die Datenbank nur von deinem einen Programm genutzt werden soll, dann würd ich dir H2 Database Engine empfehlen.
Die kannst du dann im embedded mode laufen lassen


----------



## chuvak (2. Jun 2011)

XHelp hat gesagt.:


> Was spricht gegen MySQL?


Ich möchte eine DB, die man leicht "transportieren" kann.



XHelp hat gesagt.:


> in welchen Punkten bist du mit JavaDB unzufrieden?


In Netbeans musste ich jede Kleinigkeit maskieren, jedes Anführungszeichen, jeden Eigennamen usw. Das war mir zu umständlich, war ich vom flexiblen MySQL nicht gewohnt. Außerdem habe ich keinen Manager gefunden, mit dem ich es leicht verwalten kann, jede kleinste Änderung musste umständlich mit SQL geregelt werden.



XHelp hat gesagt.:


> Spielt die Performance in deinem Projekt so eine große Rolle?


Eher ja.


----------



## XHelp (2. Jun 2011)

chuvak hat gesagt.:


> In Netbeans musste ich jede Kleinigkeit maskieren, jedes Anführungszeichen, jeden Eigennamen usw.


Was meinst du damit? Sowas wie:

```
String sql = "select * from tbl where feld=\"maskiert\"";
```
?


> Außerdem habe ich keinen Manager gefunden, mit dem ich es leicht verwalten kann, jede kleinste Änderung musste umständlich mit SQL geregelt werden.


Was musst du denn da verwalten? Eine Datenbank wird ja nicht anhand der Klickibunti-Manager gemessen.


----------



## chuvak (2. Jun 2011)

XHelp hat gesagt.:


> Was meinst du damit? Sowas wie:
> 
> ```
> String sql = "select * from tbl where feld=\"maskiert\"";
> ...


Unter anderem.



XHelp hat gesagt.:


> Was musst du denn da verwalten? Eine Datenbank wird ja nicht anhand der Klickibunti-Manager gemessen.


Natürlich nicht, aber würdest du etwa bestreiten, dass es komfortabler ist?
Wenn ich die Wahl zwischen Performance und Komfort hätte, würde ich natürlich Performance nehmen, aber wenn man beides haben kann?
Deshalb bin ich ja auch auf der Suche nach einer DB, die nach Möglichkeit beides bietet.


----------



## F.S.WhiTeY (2. Jun 2011)

> Deshalb bin ich ja auch auf der Suche nach einer DB, die nach Möglichkeit beides bietet.



Ja und was spricht da nun gegen MySQL und einem demendsprechenden "Plugin" ?

PHP-MyAdmin, Webmin, MySQL Workbench ?


----------



## chuvak (2. Jun 2011)

F.S.WhiTeY hat gesagt.:


> Ja und was spricht da nun gegen MySQL und einem demendsprechenden "Plugin" ?


Wie bereits erwähnt, möchte ich, dass meine DB "portierbar" ist. Es sollte also eine embedded DB sein.


----------



## F.S.WhiTeY (2. Jun 2011)

Ich sag nur MySQL Embedded (OEM/ISV).... MySQL kann das ^^


----------



## chuvak (2. Jun 2011)

F.S.WhiTeY hat gesagt.:


> Ich sag nur MySQL Embedded (OEM/ISV).... MySQL kann das ^^



Kann es sein, dass es kostenpflichtig ist?


----------



## F.S.WhiTeY (2. Jun 2011)

Alle Datenbanksysteme von Oracle bis MySQL sind kostenpflichtig wenn du damit geld verdienen wills. Bist du Softwarehersteller der seine Programme verkauft ist es Kostenpflichtig, machst du Opensource ist es das nicht.


----------



## Guybrush Threepwood (2. Jun 2011)

F.S.WhiTeY hat gesagt.:


> Alle Datenbanksysteme von Oracle bis MySQL sind kostenpflichtig wenn du damit geld verdienen wills. Bist du Softwarehersteller der seine Programme verkauft ist es Kostenpflichtig, machst du Opensource ist es das nicht.



Nein, das ist falsch. HSQLDB, H2 und Derby stehen beispielsweise unter Lizenzen, die einen kommerzielle Verwendung ohne Lizenzabgaben ermöglichen. Wenn es portabel sein soll, dann nimm H2 im embedded Modus. Der Vorteil im Gegensatz zu Derby/JavaDB ist (neben der Geschwindigkeit), dass die Datenbank in einem einzelnen File ist.


----------



## F.S.WhiTeY (2. Jun 2011)

> HSQLDB, H2 und Derby



Gut die beiden kannte ich noch nicht aber die gängigen bzw. am meisten bekannten kosten im Kommerziellen gebrauch halt. Was ich auch in Ordnung finde.


----------



## Gast2 (3. Jun 2011)

H2 bietet dir außerdem auch noch nen webinterface (ähnlich zu PHPMyAdmin, kann aber etwas weniger)


----------



## maki (3. Jun 2011)

Anführungszeichen musst du auch in MySQL maskieren, Apostrophe auch: MySQL :: MySQL 5.0 Reference Manual :: 8.1.1 Strings
k.A. wie du darauf kommst dass man das in MySQL nicht machen müsste.

Wenn du PreparedStatements nutzt, macht das der Treiber, egal mit welcher DB.
Änderungen "umständlich mit SQL regeln" ist doch der Normalfall, bei einem RDBMS dass mit SQL angesteuert wird 

Derby kann man sehr leicht transportieren, sogar zwischen Plattformen, verstehe ehrlich gesagt nicht warum deine Anforderungen angeblich gegen Derby und für MySQL sprechen sollen, mit Ausnahme der MySQL Workbench.

Unter MySQL hast du natürlich das Lizenzproblem, wenn du nix zahlen möchtest.


----------



## F.S.WhiTeY (3. Jun 2011)

maki hat gesagt.:


> Unter MySQL hast du natürlich das Lizenzproblem, wenn du nix zahlen möchtest.



Aber auch nur wenn du keine Opensource Software Bastelst. ^^ Solange kein Projekt unter die GPL oder ähnliches Fällt ist es egal.


----------



## maki (3. Jun 2011)

F.S.WhiTeY hat gesagt.:


> Aber auch nur wenn du keine Opensource Software Bastelst. ^^ Solange kein Projekt unter die GPL oder ähnliches Fällt ist es egal.


Das MySQl Lizenzmodell für den Connector ist eigentlich sehr einfach: Man zahlt für eine Lizenz, oder das Projekt ist automatisch GPL.

Ausnahmen gibt es nur für PHP.


----------



## F.S.WhiTeY (3. Jun 2011)

F.S.WhiTeY hat gesagt.:


> ^^ Solange kein Projekt unter die GPL oder ähnliches Fällt ist es egal.



War ein Tippfehler. Es sollte heissen:

Solange ->dein<- Projekt


----------



## chuvak (3. Jun 2011)

maki hat gesagt.:


> Derby kann man sehr leicht transportieren, sogar zwischen Plattformen, verstehe ehrlich gesagt nicht warum deine Anforderungen angeblich gegen Derby und für MySQL sprechen sollen, mit Ausnahme der MySQL Workbench.



Wo habe ich das denn gesagt?


----------



## maki (3. Jun 2011)

chuvak hat gesagt.:


> Wo habe ich das denn gesagt?


Ok, mein Fehler 

Aber der Rest deiner Einwände ist trotzdem nicht nachvollziehbar


----------



## xote (6. Jun 2011)

Ich verwende auch sehr gerne H2.

H2 ist als Nachfolger für HSQLDB für nahezu alle Einsatzzwecke geeignet. Dank JDBC ist es aber auch nicht schwierig später auf eine größere DB-Engine umzusteigen (zB postgres).


----------

