Допустим, мы используем Django с базой данных Postgres.
Я хочу сохранить последовательность данных примерно так:
- Запись 1:
1, 2, 3, 4, 5
- Запись 2:
7, 8, 2, 3, 1, 9, 6
- Запись 3:
4, 4, 3, 2
Пара замечаний:
- Последовательность всегда будетодномерно.
- Последовательность может иметь избыточные значения.
- Последовательность может иметь переменную длину.
Итак, первое;Я хочу хранить эту информацию в базе данных.Есть много способов сделать это, поэтому давайте посмотрим на мои требования к запросам.
Допустим, у меня есть последовательность запросов 1, 2, 3
.Теперь я хочу определить последовательности, которые соответствуют этой последовательности.Совпадение будет соответствовать одному из следующих случаев:
- Случай A: последовательность содержит запрос
1, 2, 3
в указанном порядке. - В этом примере запись 1 соответствует этому.
- Случай B: последовательность содержит компоненты запроса
1, 2, 3
в любом порядке. - В этом примере записи 1 и 2 соответствуют этому.
- Случай C: последовательность содержит некоторые компонентов запроса
1, 2, 3
в любом порядке. - В этом примере все записи соответствуют этому.
В идеальном мире я бы хотел, чтобы результаты оценивались так, чтобы:
- Запись 1 идет первой (потому что она соответствует случаю А, нашему совпадению с самым высоким приоритетом)
Запись 2 идет второй (потому что она соответствует случаю В, нашему совпадению со средним приоритетом)
Запись 3 идет последней (поскольку она соответствует случаю C, нашему совпадению с низким приоритетом)
Может кто-нибудь порекомендовать метод, библиотеку или концепцию дляхранить эти данные таким образом, чтобы запросы могли выполняться относительно быстро?