[JAVA] Gegevens opslaan zonder DBserver maar eigen datafile*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb een java applicatietje gemaakt die gegevens leest en schijft in een MySQL

Dit werkt perfect me de MySQL jar lib. Nu wil het de software op een andere computer draaien maar dan ben ik ook verplicht om MySQL te installeren.

De reden dat ik een database gebruik is dat ik met ID's werk. Dus ID 1 = jochem die heeft deze (rechten tabel) rechten.

Mijn vraag is wat is nou een goede oplossing om dit te maken zonder dat er een speciale SQL server geinstalleerd hoeft te worden.

Dus gewoon gebruik maken van 1 enkele file. :D

Jochemmol


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 18-09 17:57
MySQL embedden niet een oplossing voor je? Wellicht simpeler dan in feite je eigen DBMS schrijven ;)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Er zijn verschillende varianten van embedded databases. Afhankelijk van het platform (Windows, Web, Linux enz), taal(C, Java, C# etc) en eisen (bijv. stored procedures, views, triggers enz) kan je een oplossing kiezen.

Of het nu een file is of niet maakt toch niet zoveel uit? Vaak krijg je gewoon een lib waarmee je data direct kan opslaan zonder een server applicatie te hebben draaien.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Ik heb goede ervaringen met Apache Derby en db4o als embedded databases. db4o is echt 1 file als dat belangrijk is, alleen is het niet JDBC compatible, het is een ander soort database. Apache Derby werkt met meerdere files, maar is verder "gewoon" JDBC en kun je zo als drop-in replacement voor MySQL inzetten.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Dat je met ID's werkt is natuurlijk helemaal geen valide reden om perse databases nodig te hebben. Een simpele java.util.Map is dan al voldoende. Wil je echt de kortste klap maken dan kun je die gewoon rechtstreeks naar een file serializen.

Een valide reden om een database te gebruiken is eerder dat je ook echt database functionaliteit nodig hebt. Dat je echt een berg data nodig hebt waarbij het gewoon makkelijker is om gewoon een quer te schrijven ipv het zelf 'handmatig' in java te implementeren.

Mocht je toch een database wilen integreren in je applicatie, kijk dan in de post van Gerco. Daar zou ik trouwens nog wel hsqldb aan toe willen voegen. Die gebruik ik zelf ook in een applicatie van mij en dat werkt uitstekend.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Sijmen
  • Registratie: November 2004
  • Laatst online: 16-05 00:07
Als je toch al een SQL variant gebruikt kan SQLite misschien een optie zijn, al weet ik niet zeker hoe dat zit met Java.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Misschien vind je deze site wel handig om een database engine uit te zoeken: Open Source Database Engines in Java.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Bedankt voor deze tips.

Ik heb veel ervan doorgelezen. Ik ga even goed uitzoeken wat voor mij en uiteindelijk voor het distributeren ook het gemakkelijkst is. (zo min mogeljk installeren)

Dank je wel :D

Jochemmol


Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 19-09 17:22
Ik heb zelf hiervoor wel eens Derby gebruikt. Deze is gratis en makkelijk te embedden. De JDBC driver is eigenlijk de hele SQL server die gewoon een bestand leest.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Marcj schreef op maandag 25 februari 2008 @ 11:06:
Ik heb zelf hiervoor wel eens Derby gebruikt. Deze is gratis en makkelijk te embedden. De JDBC driver is eigenlijk de hele SQL server die gewoon een bestand leest.
En mochten jij of een opdrachtgever er support op willen, dan kan je daarvoor bij Sun terecht.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Derby wordt onder de naam JavaDB ook standaard meegeleverd met de recente JDKs (1.6.0) van Sun. Let op: NIET met de JREs, dus gebruikers hebben dit niet standaard geinstalleerd staan.

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik moet me er nog (steeds) eens in verdiepen, maar Google Gears schijnt een leuke DB te hebben die hiervoor misschien geschikt is (gears homepage, architectuur en database) Hmm, wellicht toch niet; maar het hele gebeuren is gebaseerd op SQLite en die schijnt wel weer leuk te embedden te zijn ;)

[ Voor 13% gewijzigd door RobIII op 25-02-2008 22:20 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik ben bezig geweest met uitzoeken wat de beste embeded database is. Ik heb gekeken wat het precies inhoud en ik ben tot de conclusie gekomen dat het een lib is die in een datafile schijft. Ipv een hele server. Precies wat ik wilde. :P

Ik ben mij gaan richten op apache derby. Omdat dat ook gewoon in de JVM 'omgeving' draait en ik platform onafhankelijk wil zijn. En op OSX en Unix en windows kan ik gebruik maken van de JVM omgeving.
Ik heb netjes het gedownload. en uitgepakt in c:\apache\
Nu staan daar netjes mijn mappen.

Ik heb 2 vraagjes wat ik niet goed begrijp. Ik moet hem installeren. Dit is voor mij niet zo lastig ma ik begrijp niet hoe ik kan zorgen dat dat direct ook geinstalleerd wordt bij het runnen van de software op een andere computer.

mijn tweede vraag is.
je moet hem installeren. Als eerste DERBY_INSTALL en daarna CLASSPATH en daarna run ik setEmbeddedCP.bat

Ik heb in mijn vorige topic begrepen dan het onverstandig is om de CLASSPATH te registreren in de omgevingsvariabelen. Ik heb dat opgelost door in Netbeans bij de instellingen de classpath te zetten. Ik heb dat nu ook gedaan.

Kan ik dat met DERBY_INSTALL ook doen? Ik kan nu in netbeans nergens vinden waar ik eventueel dat kan instellen.

Kan ik uberhaut het wel via netbeans doen. De reden dat ik het via netbeans wil doen is omdat netbeans bij het builden meteen de lib's meekopieerd en in de manifest.mf dit ook meteen toevoegd.

Kan dat ook met deze lib? :? Dit heeft ook invloed op mijn eerste vraag. want als ik hem niet hoef te installeren zoals ik het nu heb gedaan(handleiding apache) en werkt. maar dat netbeans de lib kopieerd en de datafile dan hoef ik niks te installeren op mijn computer en op de andere computers omdat alle benodigde bestanden aanwezig zijn en in de manifest.mf bescheven staat in welke map deze bestanden zich bevinden. of maak ik een verkeerde gedachte kronkel? 8)7

Jochemmol


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
sorry voor mijn vorige post
ik heb nog even op google gezocht en vind dit.
http://www.netbeans.org/kb/50/derby-demo.html 8)7

Als ik dit doorlees dan lees ik nergens install apache derby.

Wel de classpath maar die stel ik in bij de opties van mijn project.

Het werkt nu ook (ook al heb ik netbeans 6.0 ipv tutorial uileg versie 5). Ik heb het nog neit getest op een andere computer maar volgens mij hoef ik hem nu niet te installeren. Dus kan ik het programma ook runnen op een andere computer zonder de classpath enz te moeten installeren

Uit eindelijk blijk ik al zo'n database te hebben namelijk java DB :P

[ Voor 13% gewijzigd door Jochemmol op 26-02-2008 14:07 . Reden: javaDB toegevoegd ]

Jochemmol


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik ben al een hele tijd aan het zoeken maar ik kom er niet meer uit.

Ik heb een programma gemaakt in Netbeans die nu gebruik maakt van een JavaDB. Dit werkt allemaal perfect. Netjes in netbeans de classpath ingesteld enz.

Nu heb ik een jar file gemaakt deze werkt ook op mijn computer.

Nu zet ik hem op een andere computer maar dan werkt hij niet. Nu is dat logisch want de database is niet mee gekopieerd.

Ik kom er niet meer uit hoe ik dat moet doen. Hoe ik mijn database beschikbaar kan maken op een andere computer.

Ik kan natuurlijk het standaard pad van de database wijzigen naar de build map van mijn jar. Maar is dat de oplossing.

Ik kan nergens vinden hoe het precies werkt. en hoe je dat doet kan iemand mij een zetje in de goed richting geven.

Jochemmol


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Je programma zal natuurlijk bij de eerste start de database moeten aanmaken (?create=true) en dan een serie CREATE TABLE statements moeten uitvoeren om deze te initialiseren. Je kunt de database zelf niet meekopieren, want de locatie daarvan komt ergens in de database metadata te staan.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Ik ben ook net begonnen met het gebruik van JavaDB in een app.
Nu las ik op http://java.sun.com/devel...cles/J2SE/Desktop/javadb/ dat de database ook in een .jar kan bestaan. In het geval van mijn app zou dit een mooie oplossing zijn, omdat de gebruikers af en toe een andere PC toegewezen krijgen. In dat geval hebben ze alleen maar de app-jar, de db-jar en de properties file over te kopieren.
A database can be in one of many locations: in the current working directory, on the classpath, in a JAR file, in a specific Java DB database home directory, or in an absolute location on your file system.
Maar echt info over hoe dit te werk te stellen vind ik niet...
Zijn er mensen die ervaring hebben met JavaDB in een .jar?
Of is het beter (of makkelijker O-)) om alles in een subdir van de appdir/homedir te zetten?
excuus voor de bump, vond het nogal lullig om hiervoor een nieuw topic te openen

[GoT] TF2 Clan


Acties:
  • 0 Henk 'm!

Verwijderd

Een suggestie die ik nog niet tegen ben gekomen maar ook perfect als alternatief voor een database kan werken is een XML file in combinatie met Xpath.

Acties:
  • 0 Henk 'm!

  • webschaapje
  • Registratie: Mei 2007
  • Laatst online: 10-06-2024
Wellicht wil je ook eens kijken naar H2 Database. Zie http://www.h2database.com/html/main.html voor meer info. Ik ben sinds kort zelf overgestapt van MySQL naar H2 voor een eigen java project wat veel database interactie heeft.

Ik heb gemerkt dat H2 een enorme boost in performance geeft vergeleken met MySQL. De documentatie op de website is redelijk, en waarschijnlijk kun je zonder al te veel moeite overschakelen van MySQL naar H2. Ik zou zeggen probeer het eens :)
Pagina: 1