Модель данных в Кассандре
Я хотел бы попросить информацию о том, какую модель данных в Кассандре я могу использовать для своего проекта. Позвольте мне рассказать об этом подробнее. Как объектно-ориентированная модель в Java, у меня есть 2 класса, события и местоположения. Events
имеет несколько атрибутов, таких как event_title, event_description, event_time, event_locations
и так далее. Locations
имеет также несколько атрибутов, таких как address_name, longitude, latitude, city
и т.д. И есть связь между Events
а также Locations
, На самом деле у меня есть представление о моей модели данных. но я не уверен, что это может быть реализовано или нет. Я думал, что могу использовать только один CF с составным ключом строки (DoubleType:DoubleType) для долготы,latidute и вложенных столбцов для метаданных Событий во фрейме упорядоченного пространства ключей разделителя. Было бы лучше, если бы у меня был пример, как это сделать с помощью hector API. В результате мне нужно реализовать модель данных в Кассандре для обработки ниже требований.
- При заданной долготе и широте мне нужно вернуть События, которые близки к этим заданным долготе и широте.
- С заданной долготой и широтой и строкой поиска для event_title мне нужно вернуть События, которые соответствуют данной строке поиска и близки к этим данным долготе и широте.
Спасибо.
1 ответ
1) Хранение всего в отдельном семействе столбцов не сработает. Чтобы иметь более быстрые чтения, вам действительно нужно денормализовать данные и создать семейство столбцов для каждого типа запроса.
2) В вашем случае это немного сложно, так как вы хотите вернуть события, которые близки к заданным "долготе и широте". Для этого вам нужно найти обходной путь (например, вы можете использовать некоторый диапазон долготы и широты в качестве ключа строки), но убедитесь, что у вас есть долгота и широта как часть ключа.
3) Как только вам удастся указать долготу и широту в качестве ключа строки, ваше второе требование к запросу будет автоматически выполнено. Пример. Если вы используете решение по дальности, вам просто нужно найти ключ, в котором заданы долгота и широта. диапазон, а затем найдите событие совпадения имен суперколонок, и все готово.