Michael Schröpl: 25.000.000 Datensätze in mySQL ???

Beitrag lesen

Hi,

Kann ich allen Ernstes solche Datenmengen in eine
mySQL-Datenbank stopfen?

Ja, sicher.

Du solltest Dir aber Gedanken darüber machen, wann und wie Du die Indexe aufbaust:
a) Zuerst Indexe definieren, dann 25 Millionen Datensätze einfügen dauert unglaublich lange (es kann sich nicht nur um Stunden, sondern um Tage handeln).
b) Zuerst 25 Millionen Datensätze einfügen, dann indexen geht viel schneller, benötigt aber enorm viel RAM und eine hinreichend große mySQL-Konfiguration. (Mit der "kleinen" Konfiguration bin ich in einem solchen Fall schon in mySQL-Endlosschleifen mit 100% CPU-Auslastung geraten; mit der "mittleren" habe ich mal 14 Millionen Datensätze in einem Rutsch geindext, was dann eine halbe Stunde auf einer Solaris-Maschine gedauert hat.)
In eine Tabelle mit solchen Datenmengen sollte man möglichst nicht ständig etwas einfügen oder etwas aus ihr löschen (sonder degeneriert der Index zu schnell). Aber sie als readonly-Tabelle zu halten, nur um etwas darin zu suchen, dafür ist mySQL m. E. ausgezeichnet geeignet.

und mit sinnvoller Geschwindigkeit auch wieder auslesen?

Das ist kleine Frage der Datenmenge, sondern der Projektivität Deines Index.
In Deinem Fall würde ich sagen "kein Problem", weil Dein Index ja nur eindeutige Treffer liefern wird, also phantastisch gut filtert.

Wäre es besser, wenn ich versuche, das aus der
Textdatei (Matrixform) direkt auszulesen?

Bestimmt nicht. Du bräuchtest ja jedes Mal einen full table scan, weil Deine Textdatei keine vernünftigen Zugriffspfade erlaubt. Das ist viel zu langsam.

Wenn nicht: Was mach' ich statt dessen?

Die Idee, alles ins RAM zu ballern, wäre natürlich noch schneller (sofern Du so viel RAM hast).
Aber im Prinzip kannst Du genau das auch mit mySQL erreichen, wenn Du die Konfiguration entsprechend einstellst. (Bei der Beschreibung der innoDB-Tabellen habe ich mal gelesen, daß das der Tabellentreiber sogar selbst entscheidet, ob er eine Tabelle vollständig ins RAM einlagert oder nicht ...)

Viele Grüße
      Michael