Какая БД позволяет использовать структуру множественной связи (дерево связано с деревьями)?
Мне нужно хранить данные, которые легко ложатся в одной плоскости на дерево (древовидная БД тут подойдет), НО некоторые ветки в листьях связаны с ветками другого дерева.
На выходе что-то похожее на матрицу пересечений. Причем структура что в одной плоскости(дереве), что в другой - могут быть расширены на заранее неизвестную глубину.
Нужна адаптированная БД под работы с цифрами в основном и поиском по ним. Строки тоже будут, но в отношении 10% текста к 90% цифр.
Облачное решение вполне подойдет.
Нужно что-то лучшее и с возможностью поработать с ней бесплатно пол года-год, потом можно и платно.
РБД не подойдут, т.к. таблицы будут перегружены FK
почему классическая реляционная база не подходит? ответь на вопросы:
* какие действия будут проводиться над данными? удаления, добавления, перемещения сразу ветками?
* какой поиск будет проводиться?
собственно второй вопрос определит как структуры данных так и способы работы с ними.
в 99% случаев поверх классический граф item(id,parent) на каждую особенность поиска заводишь свою таблицу-кеш, и обновляешь ее при изменениях (может даже тригерами)
p.s. в оперативную память не влезает? очень многое решает когда все данные доступны из оперативки и легко индексируются
я думал на счет РБД в памяти, но все равно там слишком много накладных на FК.
Операции будут производиться сразу с ветвями в 90% случаев (чтение), удаление в оставшихся 10%, изменения будут редкие и в основном по узлам.
поиск по перекрестным ветвям и реже по конкретным ветвям. напр., найти ветки пересекающиеся с такой-то веткой или выдай все деревья(ветвления) для этой ветки. Или выдай мне ветки у которых среднее значение по ячейкам меньше\больше\ в диапазоне таких-то значений
запросы как раз медленные
потому и говорю, что скорость на поиск можно увеличить за счет замедления записи, кешируя в удобной форме.
например, если структура дерево, можно создавать на каждый элемент строку, в которой сериализован (id и искомые атрибуты, через запятую например - два поля 123,234,345 и root,item1,item5) путь до корня, такая структура позволяет легко искать подстрокой целые куски деревьев с нужными ветками
да, очень похоже, а в сравнении с redis она проще или тяжелее в развертывании, использовании, программировании?
И какой язык порекомендуете? (R, Go, php, typescript, c# - или что-то особенное?)