Я не знаю, должен ли этот вопрос быть здесь, на stackoverflow, но я попробую его.
У меня есть система компонентов.Эти компоненты взаимозависимы.Мне нужно хранить зависимости в некоторой базе данных / хранилище данных, где это будет быстро разрешено.Наша система использует базу данных SQL, MongoDB и Elastic search - если есть способ использовать базу данных SQL, я считаю это лучшим способом для нас.Какой тип хранилища данных мне следует использовать, и не могли бы вы привести простой (но достаточно сложный) пример?
Пример зависимости:
- Предположим, у нас есть компоненты
C, C1, C2, C3, C4, C5, C6, C7
- Давайте определим следующее правило:
C is dependent on C1 and (C2 or C3 or C4) and (C5 and (C6 xor K7))
Когда мы определим xor
как:
(C6 and not(C7)) or (C7 and not(C6))
Это означает, что все правила зависимости задаются каклогические операторы: and, or, not
.Условия могут быть вложенными.
Хранилище должно быть в состоянии дать ответы на следующие вопросы:
- Я выбрал компоненты C3, C4, C5, можно ли выбрать компонентC?
- Дайте мне список компонентов, когда я выбрал C2, C5, C7?
- Какие компоненты я должен выбрать, когда я хочу получить компонент C?
Расчет можно обработать в приложении.Нет необходимости полностью разрешать сервер / систему хранения, но я хотел бы избежать синтаксического анализа: «Я мог бы использовать SQL и сохранить условия в виде строки, позже проанализировать строку и вычислить результат в приложении», ноэто не эффективно, я думаю, что это не хорошее решение.
Спасибо за все ваши советы.