Иерархический, упорядоченный, хранилище ключей-значений? - PullRequest
3 голосов
/ 17 сентября 2011

Я ищу систему баз данных, которая имеет следующие возможности:

  1. Иерархические (многомерные) ключи
  2. Порядок ключей в каждом измерении

Так что, если мой ключ похож на App > User > Item, я могу выполнить запрос вроде: "каков следующий элемент для этого пользователя?"Или «Какой следующий пользователь для этого приложения?»

Я в основном хочу многомерное дерево.Я нашел GTM , и мне интересно, есть ли другие подобные продукты.

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Учитывая ваши требования, я бы сказал, что использование нескольких вложенных b-деревьев является хорошим решением.

Вы также можете рассмотреть возможность использования одного b-дерева и некоторого умного кодирования ключа, чтобы для каждого сегмента в ключе (пути) были зарезервированные min-token и max-token.

Наличие такого ключа позволит вам использовать стандартные методы доступа b-tree для ваших запросов.

"что будет следующим пунктом для этого пользователя" будет: найти ключ больше App > User > Item > **MAX**

и «каков следующий пользователь для этого приложения» будет: найти ключ больше, чем App > User > **MAX**

Для второго подхода (кодирование ключей вместо вложенных деревьев) подойдет любое решение No-SQL на основе b-дерева. Какой из них выбрать, зависит от вашей среды программирования и других возможных требований.

0 голосов
/ 17 сентября 2011

Я сталкивался с этой проблемой раньше;Я использовал столбец с именем parent_id, который использовал идентификатор родителя, чтобы связать детей.В простом примере мы устанавливаем id в 5 для измерения «Элемент».Поэтому каждый ряд с parent_id из 5 будет проходить под "Элементом".Затем вы можете использовать foreach, чтобы связать всех родителей.

...