Хранение сложных данных в качестве ключа в базе данных NoSQL? - PullRequest
0 голосов
/ 13 июня 2018

У меня есть данные, которые имеют несколько измерений, каждое из которых является строкой.Например, Person описывается position, id, email и т. Д. *

Я хочу использовать один фрагмент многомерных данных в качестве ключа в моей базе данных NoSQL,Мне не нужно делать какие-либо сложные запросы, только периодические полные сканирования таблицы (таблица будет небольшой).Каковы некоторые способы / лучшие практики для форматирования этих данных в качестве ключа?

Я рассмотрел разделение двоеточия (т. Е. position:id:email), но у него плохая читаемость и низкая гибкость.Я также рассмотрел хэширование этой строки, разделенной двоеточиями.Есть ли хорошая хэш-функция для такого типа вещей?Или какие-то совершенно другие предложения?

Заранее спасибо!

1 Ответ

0 голосов
/ 24 июня 2018

Хранение многомерных данных под одномерным ключом является сложной задачей в хранилищах значений ключей / баз данных NoSQL.Такие проекты, как MD-HBase или GeoMESA существуют;они помещают многомерные данные в n-мерное пространство и используют кривую заполнения пространства для кодирования местоположения данных в одномерный ключ.Однако большинство проектов ограничены двумерными пространственными данными, и строковые атрибуты не могут быть обработаны.

Бесстыдный плагин: я начал новый проект с открытым исходным кодом под названием BBoxDB .BBoxDB - это менеджер распределенного хранилища, способный обрабатывать многомерные данные.В BBoxDB ограничивающий прямоугольник используется для описания расположения многомерных данных в n-мерном пространстве.Вы можете сопоставить строковые атрибуты вашей сущности Person с точкой в ​​n-мерном пространстве и использовать эту точку в качестве ограничивающей рамки для ваших данных.Затем BBoxDB может выполнять запросы к вашим данным (например, полное сканирование таблицы или сканирование, ограниченное некоторыми измерениями).Проект находится на ранней стадии, но, возможно, он вам интересен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...