Ich erstelle ein einfaches Buchhaltungsprogramm für den persönlichen Gebrauch (MEAN-Stack). Ich griff nach Mongo, weil ich damit vertraut bin, aber während ich die Schemata ausarbeite, habe ich Zweifel. Ich möchte meine Gedanken vorstellen und nach Vorschlägen für eine andere Möglichkeit fragen.Hinweise zum Schemadesign - MongoDB oder möglicherweise Neo4J
Da die gleiche Transaktion auf dem Konto einer beliebigen Anzahl von Konten angezeigt werden soll, war mein aktueller Gedanke, die Transaktionen nicht als Filialdokumente der Konten zu speichern, sondern als eigene Sammlung (um zu vermeiden, sie zu duplizieren). Weglassen die unwichtigen Bits, es in etwa so aussehen würde:
var accountSchema = new mongoose.Schema({
name: String,
// etc
});
var entrySchema = new mongoose.Schema({
amount: Number,
account: {type: mongoose.Schema.Types.ObjectId, ref: 'Account'}
});
var transactionSchema = new mongoose.Schema({
date: Date,
debits: [entrySchema],
credits: [entrySchema]
});
Während dies scheint mir eine logische Art und Weise die Daten zu speichern, gibt es einige offensichtliche Abfrage betrifft. Wenn ich zum Beispiel das Hauptbuch für ein Konto anzeigen möchte, müsste ich alle Transaktionen für den Zeitraum iterieren und für jedes einzelne sowohl Kredit- als auch Sollsammlungen durchlaufen, um zu prüfen, ob dieses Konto beteiligt war.
Ich habe keine Erfahrung mit Graph dbs, aber ich dachte, dass etwas wie Neo4J besser geeignet sein könnte, diese Art von Daten abzufragen. Meine Frage ist, stimmst du zu oder ist Mongo immer noch eine gute Wahl, aber ich denke über die falschen Schemas nach?
Ich schätze Ihre ausführliche Antwort; Du hast meinen Verdacht bestätigt. Dies wird ein guter Ausgangspunkt sein, um etwas Neues zu lernen, was immer ein Gewinn ist. – amnesia