2016-09-19 4 views
0

Ich habe eine CSV-Datei mit einer sehr großen Anzahl von Zeilen, und ich möchte es in Mongodb speichern. Ich brauche einige Vorschläge beim Entwerfen des Schemas.Mongodb-Schema für große CSV-Datei

Schema Typ 1:

var CsvSchema = new Schema({ 
    col1: String, col2: String, col3: String, col4: String //will save each row of csv file as an object. 
}); 

Schema Typ 2:

var CsvSchema = new Schema({ 
    row: [] //will store each row of csv file as array 
}); 

Ich würde dann müssen diese Daten (Berichts app) eine Menge Leseoperation auszuführen. Meine Annahmen:

  • Datenspeicher mit Schema-Typ-2 wird sehr wenig Platz einnehmen Vergleich zu Typ 1.
  • ich schneller sein Betrieb in Typ 1, dann 2. Art lesen erraten

Jeder Vorschlag, welche Art von Schema ich verwenden sollte, um Daten unter Berücksichtigung der Vor- und Nachteile beider zu speichern ...

Antwort

0

Wenn Sie jede Zeile als Array speichern (Schema 2). Sie benötigen weniger Speicherplatz im Speicher, aber die Indizierung und Datenverarbeitung wird für MongoDB komplizierter.

Es ist wichtig zu wissen, dass MongoDB standardmäßig nur 16MB pro Dokument akzeptiert.

Ich empfehle Ihnen, diesen Artikel über Array-Operationen zu lesen MongoDB mit: http://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/

0

Die primäre Frage, wenn eine keine SQL-Datenbank entwerfen, ist: Wie werden Sie die Daten abfragen?

Wenn Sie also immer nur komplette Datensätze abgerufen werden müssen, müssen nie für bestimmte Felder suchen, und Sie sind ziemlich sicher, dass dies nie througout die Software Lebensdauer ändern, gehen Sie vor und verwenden Typ 2. Aber beachten Sie, dass dies ein Albtraum ist.

Wenn Sie die „normalen“ Suchoperationen verwenden werden, dass jeder aus einem Datenspeicher erwartet (alle Dokumente suchen, wo column1 „x“ und column3 ist nicht „y“), gehen Sie für Typ 1.