私は、個人的な使用のための簡単な会計プログラム(平均スタック)を構築しています。私はそれに精通しているので、私はMongoに達しましたが、私はスキーマを洗い流しているので、私は疑問を持っています。私は自分の考えを提示し、おそらくそれを行う別の方法についての提案を求めたい。スキーマ設計に関するアドバイス - MongoDBまたは潜在的Neo4J
任意の数の勘定科目の元帳に同じ取引が表示されているので、私の現在の考えは、トランザクションをアカウントのサブ文書としてではなく、独自のコレクションとして(複製を避けるため)保管することでした。
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]
});
これは私には、データを格納するための論理的な方法思えますが、いくつかの明白なクエリの懸念があります:重要でないビットを残して、それは次のようになります。たとえば、口座の元帳を表示する場合は、その期間のすべてのトランザクションを繰り返す必要があります。それぞれのトランザクションについて、そのアカウントが関与しているかどうかを確認するために、クレジットとデビットの両方のコレクションを繰り返します。
私はグラフのdbsの経験はありませんが、私はNeo4Jのようなものがこのタイプのデータを照会する方が適しているかもしれないと考えていました。私の質問は、あなたは同意しますか、それともMongoはまだ良い選択ですが、スキーマについて間違っていると思いますか?
詳細な回答をいただきありがとうございます。あなたは私の疑惑を確認した。これは、私が新しい何かを学ぶための良い出発点になります。これは常に勝利です。 – amnesia