現在、データを単純な階層に格納するアプリケーションに取り組んでいます。モデルは次のようになります (C# に似た構文で表されます)。
class Box {
int Id { get; set; }
}
class Gadget {
int Id { get; set; }
int ParentBox { get; set; }
}
つまり、私は数千個のボックスを持っており、ボックスに属するガジェットは 0 個以上あります。データにアクセスするために、すべてのボックスまたはそれらのサブセットを照会できる小さな REST API を作成しました。API 経由の応答は、ボックスに属するすべてのガジェットを含むデータ転送オブジェクトです。一般的な JSON の回答は次のようになります。
{ "Boxes": [
{ "Id: 1,
"Gadgets": [
{ "Id": 100 }
{ "Id": 101 }
]
},
{ "Id: 2,
"Gadgets": [
{ "Id": 200 }
{ "Id": 201 }
]
}
}
残念ながら、パフォーマンスはお粗末であることが判明しました。データを取得するロジックは次のとおりです (これも C# に似た構文です)。
var boxes = Db.Select<Boxes>();
foreach (var box in boxes) {
var boxDto = new BoxDto();
boxDto.Gadgets = ConvertToDto(Db.Select<Gadget>().Where(q => q.Box == box.Id));
}
私の解決策が単純であることはわかっています。私は何万もの箱を持っており、それぞれの箱には何十ものガジェットが入っています。私の質問は次のとおりです。
- この種の関係を効率的に管理するためのパターンはありますか? 私はこの問題を最初に抱えているわけではありませんが、ウェブ上で何も見つけられません.
- データモデルを変更する必要がありますか? もしそうなら、どのように?
アイデア/フィードバックをいただければ幸いです。