Я работаю над решением для Cassandra, которое оказалось невозможным.Извлечение данных с динамическими атрибутами в Cassandra
У нас есть таблица, которая вернет набор кандидатов с учетом некоторых критериев поиска. Строка с наивысшим результатом возвращается пользователю. Мы можем сделать это довольно легко с SQL, но нужно перейти на Cassandra. Вот таблицы, участвующие:
Значение
ID | VALUE | COUNTRY | STATE | CITY | COUNTY
--------+---------+----------+----------+-----------+-----------
1 | 50 | US | | |
--------+---------+----------+----------+-----------+-----------
2 | 25 | | TX | |
--------+---------+----------+----------+-----------+-----------
3 | 15 | | | MEMPHIS |
--------+---------+----------+----------+-----------+-----------
4 | 5 | | | | BROWARD
--------+---------+----------+----------+-----------+-----------
5 | 30 | | NY | NYC |
--------+---------+----------+----------+-----------+-----------
6 | 20 | US | | NASHVILLE |
--------+---------+----------+----------+-----------+-----------
Забив
ATTRIBUTE | SCORE
-------------+-------------
COUNTRY | 1
STATE | 2
CITY | 4
COUNTY | 8
Запрос посылается, который может иметь любой из этих четырех признаков заселенных или нет. Мы просматриваем таблицу наших значений, вычисляем оценки и возвращаем самый высокий. Если столбец в таблице значений имеет значение null, это означает, что он применим для всех.
- ID 1 применим ко всем штатам, городам и уездам США.
- ID 2 применим для всех стран, городов и округов, где находится состояние TX.
Пример:
Query: {Country: US, State: TX}
Matches Value IDs: [1, 2, 3, 4, 6]
Scores: [1, 2, 4, 8, 5(1+4)]
Result: {id: 4} (8 was the highest score so Broward returns)
Как бы вы модель что-то подобное в Cassandra 2.1?