2009-06-23 22 views
19

Ich habe einen ziemlich großen Datensatz und möchte ihn lieber in einer Datei als in einem RDBMS speichern.SQLite für große Datenmengen?

Die Haupttabelle im Datensatz ist etwas mehr als 1 Mio. Zeilen, 30 Spalten und etwa 600 MB groß als CSV.

Ich erwäge SQLite. Ist SQLite eine Untersuchung für Datensätze dieser Größe wert?

Antwort

16

SQLite wird diese Datei gut behandeln; Stellen Sie sicher, dass die Datensätze in eine Transaktion importiert werden, damit sie nicht viel Zeit darauf verwenden, Indizes zu erstellen, bis alles importiert ist.

+0

Danke für den zusätzlichen Tipp Paul. –

8

Ich untersuchte kürzlich SQLite für eine ähnliche Anwendung. Die SQLite-Dokumentation besagt, dass SQLite-Datenbanken Terabytes groß sein können und dass die primäre Einschränkung von SQLite die Parallelität ist (viele Benutzer gleichzeitig). Obwohl wir nicht in diese Richtung gegangen sind (wir haben unser eigenes binäres Speicherformat), war ich ziemlich zuversichtlich, dass SQLite Dateien dieser Größe verarbeiten kann.

2

sqlite sollte für Sie gut funktionieren. Ich habe einen Datensatz dieser Größe sogar in einem eingebetteten Gerät ausgeführt, und die SQLite-Leistung war ziemlich vernünftig.

Wie bereits erwähnt, ist der größte Engpass die Nebenläufigkeit. Ziel ist es, Ihr System so zu gestalten, dass pro Datenbankdatei höchstens ein Datenbankhandle geöffnet ist.

5

sqlite ist schnell, wenn Sie Transaktionen verwenden und nicht zu oft committen. Die Verwendung von vorbereiteten Anweisungen mit Parametern beschleunigt auch die Dinge. Sqlite muss nicht jede SQL-Anweisung analysieren, wenn Sie parametrisierte Abfragen verwenden. Ein Beispiel: How do I get around the "'" problem in sqlite and c#?

Ich speichere 2 Gigabyte in einem SQL-Db, es funktioniert sehr gut. Ein großer Vorteil von sqlite über einer flachen Datei ist die Möglichkeit, Ihre Daten zu indizieren.

3

Sie haben bereits Ihre Antwort, aber ich möchte mein aktuelles Experiment teilen: Ich habe Milliarden von Datensätzen im Wert von 793 GiB an Daten in einer einzigen SQLite-Datenbank verloren und Leseabfragen sind immer noch überraschend schnell (unter 1m).

Die Erstellungszeit dauerte etwas mehr als 22 Stunden und die Post-Index-Erstellung dauert etwa 4 Stunden pro Spalte.

+0

Beeindruckend ... Wenn ich 10% davon erreiche, wird es eine Menge sein. Verkauft. – ppumkin

Verwandte Themen