# RamDisk erstellen



## krautbert (9. Nov 2013)

Hi Leute,

weiß jemand, bzw geht es überhaupt, wie man mit Java eine RamDisk erstellt? 

Grüße

Edit: Auf einem Windows-PC


----------



## Phash (9. Nov 2013)

wozu das denn?

xvm mit mehr ram starten lassen, und gut is...

btw. sollten moderne Betriebssysteme in der Lage sein, selbständig zu cachen...

wenn du eine Ramdisk erstellst, ist diese flüchtig - du musst erst reinladen, und kannst danach erst profitieren.
In der Zeit, in der du das reinlädst, kannst du es auch normal starten - erst beim zweiten Start ist es schneller... Linux merkt sich, wsa im Ram war, und läd es nicht erneut - Win sollte das mittlerweile auch machen


----------



## krautbert (9. Nov 2013)

Phash hat gesagt.:


> wozu das denn?
> 
> xvm mit mehr ram starten lassen, und gut is...
> 
> ...



Das ist mir alles klar. Wenn ich eine Frage in einem Forum stelle habe ich mir auch vorher gedanken gemacht. 
Deswegen würde ich mich eher über eine produktive Antwort freuen.

Nachmal: Wie erstelle ich eine (dynamische) Ramdisk mit einer Java applikation?

Grüße


----------



## DrZoidberg (9. Nov 2013)

Eine Ramdisk, die nur von Java Programmen verwendet wird, ist kein Problem.
Wenn aber auch andere Anwendungen darauf zugreifen sollen, wirds schwierig.
Du könntest aber auch einen FTP Server schreiben, der seine Dateien im Ram ablegt. Darauf kannst du dann von jedem beliebigen Programm aus zugreifen.


----------



## krautbert (9. Nov 2013)

Ne, nur mein Java Programm soll auf die Ramdisk zugreifen.


----------



## DrZoidberg (10. Nov 2013)

Das einfachste wäre eine HashMap. Da kannst du dann jede Art von Daten reinschreiben. Auch ganze Dateien z.B. mittels ByteArrayOutputStream.


----------



## Phash (10. Nov 2013)

windows - How can I create a RAM disk programmatically? - Stack Overflow

musst das halt als lib machen, und dann mit java callen..


----------



## Tobse (10. Nov 2013)

krautbert hat gesagt.:


> Das ist mir alles klar. Wenn ich eine Frage in einem Forum stelle habe ich mir auch vorher gedanken gemacht.
> Deswegen würde ich mich eher über eine produktive Antwort freuen.



Ob du es glaubst oder nicht - das macht höchstens die Hälfte derer, die hier postet.

Andere Frage: Wozu brauchst du denn eine Ramdisk? Ist das wirklich die einzige Möglichkeit, dein Problem zu lösen?


----------



## krautbert (10. Nov 2013)

Tobse hat gesagt.:


> Ob du es glaubst oder nicht - das macht höchstens die Hälfte derer, die hier postet.
> 
> Andere Frage: Wozu brauchst du denn eine Ramdisk? Ist das wirklich die einzige Möglichkeit, dein Problem zu lösen?



Außnahmen bestätigen wohl die Regel :bae:

Ich wollte DB-Tabellen in einer RamDisk ablegen um performantere Fulltext-Suchen durchführen zu können


----------



## Tobse (10. Nov 2013)

Naja, kommt ja jetzt drauf an, was für Tabellen das sind. Wenn sie zu einem externen Datenbank-Server gehören gibts zur Ram-Disk wohl keine Alternative. Für diesen Fall musst du - wie gesagt - ein natives Programm schreiben und es über JNI oder ProcessBuilder starten.
Wenn du dann auch nur einzelne Tabellen (und nicht die ganze Datenbank) auf die Ram-Disk legen willst, wirst du viel symlinking brauchen.

Wenn du aber das Format der Datenbank kennst (also wenn es z.B. serialisierte HashTable's o.ä.) sind, macht es wohlmehr sind, die Tabellen komplett in einer leicht/schnell lesbaren Form direkt in den RAM zu laden.


----------



## DrZoidberg (10. Nov 2013)

Dann schreib die ganzen Strings halt in eine ArrayList oder HashMap.


----------



## turtle (11. Nov 2013)

> Ich wollte DB-Tabellen in einer RamDisk ablegen um performantere Fulltext-Suchen durchführen zu können



Da vermute ich, das du nicht an der richtigen Stelle anfängst...

Ich würde eine Fulltext-Suche an die DB (welche?) delegieren und dort optimieren.

Wenn das da nicht gut geht, würde ich eine gute Such-Engine (z.B. Lucene) nutzen.


----------



## Phash (11. Nov 2013)

turtle hat gesagt.:


> Da vermute ich, das du nicht an der richtigen Stelle anfängst...
> 
> Ich würde eine Fulltext-Suche an die DB (welche?) delegieren und dort optimieren.
> 
> Wenn das da nicht gut geht, würde ich eine gute Such-Engine (z.B. Lucene) nutzen.



Bitte... der TE hat sich mit dem Thema bereits ausgiebig befasst, bevor er die Anfrage ans Forum gestellt hat. Er möchte eine Ramdisk


----------



## krautbert (11. Nov 2013)

turtle hat gesagt.:


> Da vermute ich, das du nicht an der richtigen Stelle anfängst...
> 
> Ich würde eine Fulltext-Suche an die DB (welche?) delegieren und dort optimieren.
> 
> Wenn das da nicht gut geht, würde ich eine gute Such-Engine (z.B. Lucene) nutzen.



Das Problem ist in dem Fall, dass die Anfragen an ein MySQL-Cluster im WAN gehen.
Da kann ich leider nur eine Engine nehmen.


----------

