私は次のような機能を持つデータベースシステムを探しています:各次元で階層型の順序付けされたキー値ストア?
- 階層(多次元)キー
- キーの順序
だから私のキーがある場合App > User > Item
次のようなクエリを実行できます。「このユーザーの次のアイテムは何ですか?」または "このアプリの次のユーザーは何ですか?"
私は基本的に多次元ツリーが欲しいです。私はGTMを見つけました。このような他の製品があるかどうか疑問に思っています。
私は次のような機能を持つデータベースシステムを探しています:各次元で階層型の順序付けされたキー値ストア?
だから私のキーがある場合App > User > Item
次のようなクエリを実行できます。「このユーザーの次のアイテムは何ですか?」または "このアプリの次のユーザーは何ですか?"
私は基本的に多次元ツリーが欲しいです。私はGTMを見つけました。このような他の製品があるかどうか疑問に思っています。
私は、複数のネストされたb-treeを使用することが良い解決策であると言いたいと思います。
また、キー(パス)内の各セグメントに予約済みの最小トークンと最大トークンがあるように、単一のbツリーと賢明なキーエンコーディングを使用することを検討することもできます。
このようなキーを使用すると、クエリに標準b-treeアクセス方法を使用できます。
は、「このユーザーの次の項目が何であるか」のようになります。キーよりも大きいApp > User > **MAX**
App > User > Item > **MAX**
を見つけ、
2番目のアプローチ(ネストされたツリーではなくキーコード)では、b-treeベースのNo-SQLソリューションで十分です。どちらを選択するかは、プログラミング環境やその他の要件によって異なります。
私は以前にこの問題に遭遇しました。私はparent_id
という名前の列を使用しました。この列は、親のIDを使用して子をリンクしていました。簡単な例では、「Item」ディメンションのid
を5
に設定します。したがって、parent_id
が5
の行はすべて「項目」になります。 foreach
を使用して、すべての親をリンクすることができます。
どのように階層を処理しましたか?例えば。私が 'parent_id = 5 AND child_attribute = 10'を望むなら、私は本質的にすべてを2回ループする必要があります。 – Xodarap
maxトークンのアイデアはかなり賢いです、ありがとう。 – Xodarap