Иерархический, упорядоченный, хранилище ключей-значений?

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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам