# Search in DatenBank schneller oder in JAVA?



## fatfox (17. Feb 2011)

Hallo alle,

ich möchte mal fragen,Search in Datenbank schneller oder in JAVA Programm schneller?

Also: ich habe eine große Daten, z.B ein Telephonbuch mit 20,000,000 Einträge:
-----------------------------
Name | Age | Tel.
-----------------------------
A       |  25 | ....
B       |  60 | .... 
C       |  38 | .... 
D       |  22 | .... 

Wenn ich die Einträge, die "age" zwischen 20-30 finden möchte, kann ich entwerder direkt in MySQL importieren und suchen(Datenbank Methode) oder erzeuge ich 3 Arrays(Name, Age, Tel.) und suche ich die Age.(JAVA Methode, aber das braucht viel RAM).

Welche Methode ist schneller?

Vielen Dank für eure Bemühungen!


----------



## ice-breaker (17. Feb 2011)

Es gibt kein pauschales schneller.

Musst du die Daten erst noch in MySQL speichern bevor du sie da suchen kannst, oder sind die schon drinne? Falls ersteres klingt der Java-Ansatz deutlich sinnvoller.

Aber auch beim Java-Ansatz musst du dir noch eine Suchmethodik ausdenken, so wie es aussieht klingt aber die Suche direkt in der Datei ohne erst das Telefonbuch komplett in den Ram zu kopieren als die sinnvollste Lösung.


----------



## fatfox (17. Feb 2011)

ice-breaker hat gesagt.:


> Es gibt kein pauschales schneller.
> 
> Musst du die Daten erst noch in MySQL speichern bevor du sie da suchen kannst, oder sind die schon drinne? Falls ersteres klingt der Java-Ansatz deutlich sinnvoller.
> 
> Aber auch beim Java-Ansatz musst du dir noch eine Suchmethodik ausdenken, so wie es aussieht klingt aber die Suche direkt in der Datei ohne erst das Telefonbuch komplett in den Ram zu kopieren als die sinnvollste Lösung.



Hi ice-breaker,

Die Daten ist schon in Datenbank.

Wenn ich direkt search in Datei, wird es schneller als in Datenbank? Ich denke, wenn ich oft search muss (z.B, das erste Mal: age > 10, das zweites Mal: Name = Conny, ...), dann ist deutlich Datenbank schneller, oder? (Weil Text Datei muss oft geöffnet werden und wieder vom Kopf an suchen.)

Wenn ich die ganze in Java suche, (also, kopiere ich die ganze Daten in den Ram), und oft suchen muss, dann erzeuge ich 3 Arrays, "Name", "Age", "Tel." Aber ich denke, jedes mal, wenn ich suche, dann muss ich jedes mal mindestens eine Array von Kopf bis Fuß fertig lesen. (Jeder Array hat Length 20,000,000, das ist viel!  HashMap Methode ist zu groß, passt in meine Ram nicht mehr, deshalb kann ich nur Array nehmen.)

Was sagst du dazu? Ich kenne Datenbank nicht so gut, ich weiß nicht, welche Methode benutzt Datenbank bei Suche...


----------



## Gast2 (17. Feb 2011)

Wenn es die Datenbank schon gibt ist es auf jeden Fall schneller. Da kann man auch noch gut optimieren z.B. mit Indexen.


----------



## fatfox (17. Feb 2011)

fassy hat gesagt.:


> Wenn es die Datenbank schon gibt ist es auf jeden Fall schneller. Da kann man auch noch gut optimieren z.B. mit Indexen.



Hi Fassy, wenn ich auch oft die Daten verändern muss, ist trotzdem Datenbank schnell? Ich denke, beim Schreiben ist Datenbank vielleicht langsam, stimmt das oder nicht???


----------



## ARadauer (17. Feb 2011)

> stimmt das oder nicht???


man kann solche Sachen nicht einfach pauschalieren... die DB muss ja auf die Platte schreiben, klar ist das langsamer als eine Referenz im RAM zu halten...

Vom Suche  her... 20 Mio Einträge in einem Array vs optimierte Index Strukturen einer Datenbank... da ist die DB viel schneller...


----------

