2008-09-16 17 views
1

Ich muss bis zu 500.000 Einträge für den schnellsten Lesevorgang indizieren. Der Index muss regelmäßig auf der Festplatte neu erstellt werden. Ich versuche, zwischen einer einfachen Datei wie einem Hash auf Datenträger oder einer einzelnen Tabelle in einer eingebetteten Datenbank zu entscheiden. Ich brauche keine RDBMS-Engine.Was ist der beste Weg, um einen Index zu erstellen, um die schnellste Leseantwort zu erhalten?

+0

Was ist das? Ist dies innerhalb eines Datenbankverwaltungssystems (MySQL, etc.?) Indexieren Sie flache Dateien auf der Festplatte? Sind sie binär oder ASCII? Was ist los? –

+0

Es kann eine flache Datei sein. Einträge sind ASCII und bis zu 512 Zeichen. Ich muss speichern und ein Zustandsattribut erhalten. – Notitze

Antwort

0

Dafür wurde MapReduce erfunden. Hadoop ist eine coole Java-Implementierung.

+0

MapReduce hat nichts damit zu tun, die Indexreaktionszeiten in Datenbanken zu reduzieren. –

+0

Nein, tut es nicht. Aber wie ich die Frage verstehe, geht es um das Lesen von der Festplatte. – sblundy

1

Ich gehe davon aus, Sie beziehen sich auf Indizierung Tabellen auf einem relationalen DBMS (wie mySql, Oracle oder Postgres).

Indizes sind sekundäre Datenspeicher, die eine Teilmenge von Feldern für eine Tabelle in einer bestimmten Reihenfolge speichern.

Wenn Sie einen Index erstellen, wird jede Abfrage, die die Teilmenge von Feldern enthält, die in ihrer WHERE-Klausel indiziert sind, schneller ausgeführt.

Durch das Hinzufügen von Indizes wird jedoch die INSERT-Leistung reduziert.

Im Allgemeinen müssen Indizes nicht neu erstellt werden, es sei denn, sie werden beschädigt. Sie sollten im laufenden Betrieb von Ihrem DBMS verwaltet werden.

0

Wenn die Daten nicht vollständig aktuell sein müssen, sollten Sie auch über ein Data Warehousing-Tool für OLAP-Zwecke nachdenken (z. B. MSOLAP). Sie können blitzschnelle schreibgeschützte Abfragen basierend auf vorberechneten Daten durchführen.

1

Vielleicht BDB? Es ist eine hohe Leistung. Datenbank, die kein DBMS verwendet.

1

cdb wenn sich die Daten nicht ändern.

/Allan

1

PyTables Pro behauptet, dass „für Situationen, die schnellen Änderungen oder Löschungen nicht benötigen, OPSI ist wahrscheinlich eines der besten Indizierung Motoren zur Verfügung“. Ich habe jedoch nicht persönlich daran gewöhnt, aber die F/OSS-Version von PyTables gibt bereits gibt Ihnen eine gute Leistung:

http://www.pytables.org/moin/PyTablesPro

Verwandte Themen