grabbee
@grabbee

Какую БД можно использовать для хранения множества?

Путаюсь в формулировке самого множества, поэтому вопрос несколько расплывчатый. Прошу помощи в выборе СУБД под такую задачу. Работал исключительно MySQL, но в данном контексте реляционные БД не подходят.

Множество представлено "упорядоченными" записями, возможно хранимыми по аналогии вложенного множества, "псевдо" древовидная структура. Например:
1. Мы записали несколько записей последовательно. Сейчас они, как минимум, упорядочены по первичному ключу и дате добавления записи. Вся соль возникает на втором, третьем ... (N) раунде.
2. Необходимо добавить запись после любой ранее добавленной(например, но не последней). И так неограниченное количество раз.

В системе хранения возникает вопрос с принципом упорядочивания множества записей. На сегодня нашел как минимум два решения. Наиболее оптимальное, вложенное множество: добавить каждой записи информацию ID предыдущей и последующей записи. По множеству на втором этапе выборки можно построить последовательность:
- выбрать все записи множества[1 этап], циклом пройтись по полученным данным для сортировки (получения последовательности) и запросить из БД необходимые записи по ID(where `id` IN(..последовательность..)). Тогда при каждом добавлении новой записи необходимо делать полную выборку множества, а полученную последовательность кэшировать. При каждой вставке кэш полностью переписывается. Сложность сохранения растет линейно, выборка оптимальна.
- Либо делать количество запросов к БД кратное необходимомуколичеству записей. "Найди мне запись номер 1" - в принятых данных будет информация о следующей записи(например 55), делаем следующий запрос "Найди мне запись номер 55" и так далее по необходимому количеству. Сложность сохранения оптимальна, сложность выборки растет линейно количеству записей в выборке.
Решение крайне не оптимально, так как основано на СУБД реляционных, которые для хранения таких множеств не рассчитаны.

Подскажите пожалуйста, какую СУБД можно использовать для хранения и выборки последовательности таких записей?
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
если
после любой ранее добавленной
, то neo4j, вот вам "ранее добавленная", а вот вам "после"

но если вы решаете прикладную задачу, то непонятно, что вам нужно, и чем не подходят индексы в RDBMs
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы