lokale Datenbank innerhalb einer Swing-Anwendung

Status
Nicht offen für weitere Antworten.

pinhead84

Aktives Mitglied
Dies ist mein erstes Posting hier im Forum. Also erstmal vorab Hallo in die Runde!

Ihr scheint ja ein kompetenter 'Haufen' zu sein, was Java-Programmierung betrifft, also habe ich mich mal angemeldet, um eure Meinung zu meinem Problem einzuholen. ;)

Zum Background, damit ihr einschätzen könnt, worum es grob geht: Ich habe bereits eine Client-Server-Infrastruktur implementiert, welche ihre Dienste ganz anständig verrichtet. Nun bin ich zur Erkenntnis gekommen, dass innerhalb der Client-Anwendung (basierend auf Swing) eine lokale Datenbank vorliegen sollte, welche in regelmäßigen Intervallen mit der Server-Datenbank synchronisiert wird. Bei häufigen Read-Only-Operationen auf der Datenbank spart dies eine Menge unnötigen Traffic zwischen Client und Server, abgesehen von der geringeren Laufzeit.

So weit so gut. Ich bin nun noch am Rätseln, welche lokale Datenbank man einsetzen könnte. Ich habe mich ein wenig umgeschaut und folgende Kandidaten in Erwägung gezogen:

1. HSQLDB
2. H2 Database Engine
3. Apache Derby

Folgende Anforderungen wären von den Datenbanken zu erfüllen:

1. Muss mit Hibernate verwendbar sein (inkl. Transaktionen etc.).
2. Ausgelagerte Datenbankdateien müssen verschlüsselt gespeichert werden, dass der Anwender mit keinen externen DB-Tools mit diesen Dateien etwas anfangen kann.
3. Je schneller, desto besser. ;)

Ich habe mir die Dokus der 3 Kandidaten angeschaut und konnte nur mit Derby Anforderung 1 & 2 abdecken. HSQLDB und H2 scheinen keine Verschlüsselung der Auslagerungsdateien zu unterstützen, oder habe ich es nicht gefunden?

Nach den Benchmarks auf der Seite von H2, scheint Derby ja nicht das 'Geschwindigkeitsmonster' zu sein. Wie sind da eure Erfahrungen?

Wie verhält es sich mit der Performance der genannten Datenbanken bei größeren Datenmengen (>100.000)?

Könnt ihr mir ggf. Alternativen empfehlen?



Vielen Dank im Vorraus
 

AlArenal

Top Contributor
pinhead84 hat gesagt.:
Wie verhält es sich mit der Performance der genannten Datenbanken bei größeren Datenmengen (>100.000)?

Auf unpräzise Fragen kann man keine präzisen Antworten geben. Wenn DB Speed einzig von der Anzahl Datensätze abhinge, wäre es ja einfach... Du scheinst mit Datenbanken nicht viel Erfahrung zu haben. Immerhin kommen 100.000 Datensätze ziemlich schnell zusammen, sind also nun wirklich keine erwähnenswerte Marke.

Da du eh Hibernate verwenden willst, spricht nichts dagegen, dass du einfach austestest wie sich die Performance in Abhängigkeit von der RDBMS entwickelt.
 

pinhead84

Aktives Mitglied
raiL hat gesagt.:
Vielen Dank für die Info. Da habe ich wohl nicht genau genug gelesen. ;)

AlArenal hat gesagt.:
pinhead84 hat gesagt.:
Wie verhält es sich mit der Performance der genannten Datenbanken bei größeren Datenmengen (>100.000)?

Auf unpräzise Fragen kann man keine präzisen Antworten geben. Wenn DB Speed einzig von der Anzahl Datensätze abhinge, wäre es ja einfach... Du scheinst mit Datenbanken nicht viel Erfahrung zu haben. Immerhin kommen 100.000 Datensätze ziemlich schnell zusammen, sind also nun wirklich keine erwähnenswerte Marke.
Du scheinst die Kompetenz ja mit Löffeln gefressen zu haben. Überlege mal bitte ernsthaft, wie du hier auftrittst.

Dass die Anzahl der DB-Einträge allein nicht ausschlaggebend für die Gesamt-Performance ist, ist nun wirklich keine neue Erkenntnis. Ich finde es faszinierend, wie du aus wenigen Aussagen auf meine Erfahrungen schließen zu können meinst. Ich lasse mich grundsätzlich immer gern eines Besseren belehren, aber doch bitte auf sachliche Art und Weise. Wenn dir eine Information fehlt, frage doch einfach danach. Zumal die Frage nach der Performance nicht die Hauptintention meines Beitrages war.

Die Performance-Frage zielte darauf ab, dass HSQLDB (und warscheinlich auch H2) zum Programmstart komplett in den Speicher geladen werden. Wenn nun die Anzahl der Daten größer als der verfügbare Speicher ist, sollte es doch zu merklichen Performance-Einbrüchen kommen.

AlArenal hat gesagt.:
Da du eh Hibernate verwenden willst, spricht nichts dagegen, dass du einfach austestest wie sich die Performance in Abhängigkeit von der RDBMS entwickelt.
Das hatte ich auch vor. Nur bin ich bis dato davon ausgegangen,

(a) dass nur Derby verwendet werden könne und es also nichts zu testen gibt (da wurde ich eine Besseren belehrt)
(b) dass man hier im Forum bereits Erfahrungen in solchen Fragen hat und bereit ist Andere daran teilhaben zu lassen
 
G

Guest

Gast
Bei H2 wird nicht der ganze Datenbestand in den Speicher verfrachtet. Man kann sogar genau bestimmen, was gecached wird. Steht im Handbuch...
 

pinhead84

Aktives Mitglied
Anonymous hat gesagt.:
Bei H2 wird nicht der ganze Datenbestand in den Speicher verfrachtet. Man kann sogar genau bestimmen, was gecached wird. Steht im Handbuch...
Bisher hab ich nur die Möglichkeit gefunden, dies über die Database-URL zu regeln. Also entweder jdbc:h2:file:/data/sample oder jdbc:h2:mem:<databaseName> . Du meinst vermutlich etwas Anderes?

Ich werde jedenfalls mein Glück mal mit H2 versuchen. Danke für eure Kommentare. ;)
 

pinhead84

Aktives Mitglied
raiL hat gesagt.:
Danke, ich muss wohl mal meine Brille putzen. ;)

raiL hat gesagt.:
Und dass im memory mode alles gecached wird ist wohl auch offensichtlich
Der Memory-Mode kommt für meinen Anwendungsfall auch nicht in Frage. Die Datenbank sollte schon dauerhaft beim Client hinterlegt sein, sonst muss ja zu jedem Programmstart ein 'Rattenschwanz' an Daten abgeglichen werden.

Ich bin mal gespannt, wie die Gesamt-Performance durch die Dateiverschlüsselung beeinträchtigt wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Lokale Datenbank Datenbankprogrammierung 5
R Entfernte MySQL Datenbank für lokale Swing-App Datenbankprogrammierung 8
W MySQL -Server Einstellung -- Zugriff übers lokale Netzwerk Datenbankprogrammierung 1
R Lokale Derby in einer JPA-Anwendung Datenbankprogrammierung 3
F jdbc nur für lokale verwendung Datenbankprogrammierung 2
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
M portable Datenbank Datenbankprogrammierung 2
S Name aus der Datenbank bekommen Datenbankprogrammierung 2
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben