このペーパーhttp://arxiv.org/abs/0806.3115で説明されている有理数を使用して、ネストされたセット DB モデルを Redis に実装しようとしています。
しかし、2 週間の研究の後、私はデザインに行き詰まっています...ここに私のスキーマがあります
入れ子集合モデル
**Add Nodes**(name, is_root= nil, namespace=nil){
$id = INCR namespace:nodes:counter *//generate unique id for every node*
HSET namespace:nodes:by_id = field:$id value: {Json object with numerator and denominator of node and next sibling}
HSET namespace:nodes:by_name field:hash($node name) value:$id *// For search with node name*
*// the score is obtained with numerator/denominator, the set contains all item ids of a category*
Create an entry on ZSET namespace:nodes_list
if is_root{
*//for performance purpose instead of calculate the root nodes with filter on ZSET, store all here*
Insert id into SET named: namespace:root_nodes:ids
}}
**Get whole Node Tree** {
For each id stored on namespace:root_nodes:ids($id){
GET namespace:nodes:$Id values nv dv snv sdv
*//stuck here*
}
}
私の設計では、ツリー全体をまともな速度で取得することは可能ですか? ヒント?
別のデータ構造の方が良いかもしれませんが、何も知りませんか?
複数のカテゴリに存在するアイテムを含む amazon のようなカテゴリがあります。アイテムが子猫に存在する場合、親猫にもアイテムが含まれます。