Иерархический, упорядоченный, хранилище ключей-значений?
Я ищу систему базы данных, которая имеет следующие возможности:
- Иерархические (многомерные) ключи
- Порядок ключей в каждом измерении
Так что если мой ключ как 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
связать всех родителей.