Модель данных в Кассандре

Я хотел бы попросить информацию о том, какую модель данных в Кассандре я могу использовать для своего проекта. Позвольте мне рассказать об этом подробнее. Как объектно-ориентированная модель в 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. В результате мне нужно реализовать модель данных в Кассандре для обработки ниже требований.

  1. При заданной долготе и широте мне нужно вернуть События, которые близки к этим заданным долготе и широте.
  2. С заданной долготой и широтой и строкой поиска для event_title мне нужно вернуть События, которые соответствуют данной строке поиска и близки к этим данным долготе и широте.
    Спасибо.

1 ответ

1) Хранение всего в отдельном семействе столбцов не сработает. Чтобы иметь более быстрые чтения, вам действительно нужно денормализовать данные и создать семейство столбцов для каждого типа запроса.

2) В вашем случае это немного сложно, так как вы хотите вернуть события, которые близки к заданным "долготе и широте". Для этого вам нужно найти обходной путь (например, вы можете использовать некоторый диапазон долготы и широты в качестве ключа строки), но убедитесь, что у вас есть долгота и широта как часть ключа.

3) Как только вам удастся указать долготу и широту в качестве ключа строки, ваше второе требование к запросу будет автоматически выполнено. Пример. Если вы используете решение по дальности, вам просто нужно найти ключ, в котором заданы долгота и широта. диапазон, а затем найдите событие совпадения имен суперколонок, и все готово.

Другие вопросы по тегам