2011-09-16 30 views
3

私は次のような機能を持つデータベースシステムを探しています:各次元で階層型の順序付けされたキー値ストア?

  1. 階層(多次元)キー
  2. キーの順序

だから私のキーがある場合App > User > Item次のようなクエリを実行できます。「このユーザーの次のアイテムは何ですか?」または "このアプリの次のユーザーは何ですか?"

私は基本的に多次元ツリーが欲しいです。私はGTMを見つけました。このような他の製品があるかどうか疑問に思っています。

答えて

2

私は、複数のネストされたb-treeを使用することが良い解決策であると言いたいと思います。

また、キー(パス)内の各セグメントに予約済みの最小トークンと最大トークンがあるように、単一のbツリーと賢明なキーエンコーディングを使用することを検討することもできます。

このようなキーを使用すると、クエリに標準b-treeアクセス方法を使用できます。

は、「このユーザーの次の項目が何であるか」のようになります。キーよりも大きいApp > User > **MAX**

に見つける:だろう「このアプリのために次のユーザーは何か」、キーよりも大きい App > User > Item > **MAX**

を見つけ、

2番目のアプローチ(ネストされたツリーではなくキーコード)では、b-treeベースのNo-SQLソリューションで十分です。どちらを選択するかは、プログラミング環境やその他の要件によって異なります。

+0

maxトークンのアイデアはかなり賢いです、ありがとう。 – Xodarap

0

私は以前にこの問題に遭遇しました。私はparent_idという名前の列を使用しました。この列は、親のIDを使用して子をリンクしていました。簡単な例では、「Item」ディメンションのid5に設定します。したがって、parent_id5の行はすべて「項目」になります。 foreachを使用して、すべての親をリンクすることができます。

+0

どのように階層を処理しましたか?例えば。私が 'parent_id = 5 AND child_attribute = 10'を望むなら、私は本質的にすべてを2回ループする必要があります。 – Xodarap

関連する問題