Как выполнить запросы присоединения с двумя или более таблицами в cassandra cql
Я новичок в кассандре. Здесь у меня есть две таблицы EVENTS
и TOWER
. Мне нужно присоединиться к ним для некоторых запросов. Но я не могу это сделать.
Структура таблицы EVENTS
:
eid int PRIMARY KEY,
a_end_tow_id text,
a_home_circle text,
a_home_operator text,
a_imei text,
a_imsi text,
Структура таблицы TOWER
:
tid int PRIMARY KEY,
tower_address_1 text,
tower_address_2 text,
tower_azimuth text,
tower_cgi text,
tower_circle text,
tower_id_no text,
tower_lat_d text,
tower_long_d text,
tower_name text,
Теперь я хочу присоединиться к этой таблице в отношении EID
и TID
, чтобы я мог получать данные обеих таблиц.
Ответы
Ответ 1
Кассандра = Нет объединений. Ваша модель на 100% реляционная. Вам нужно переосмыслить его для Кассандры. Я бы посоветовал вам взглянуть на эти слайды. Они глубоко разбираются в том, как моделировать данные для кассандры. Также здесь находится веб-семинар, посвященный теме. Но перестаньте думать о внешних ключах и присоединяться к столам, потому что, если вам нужны отношения, кассандра не является инструментом для работы.
Но почему?
Потому что тогда вам нужно проверить согласованность и сделать много других вещей, которые делают реляционные базы данных, и поэтому вы теряете производительность и масштабируемость, которые предлагает cassandra.
Что я могу сделать?
Денормализовать! Много данных в одной таблице? Но в таблице будет слишком много столбцов!
Итак? Cassandra может обрабатывать очень большое количество столбцов в таблице.
Другое, что вы можете сделать, это имитировать соединение в клиентском приложении. Сопоставьте два набора данных в коде, но это будет очень медленно, потому что вам придется перебирать всю вашу информацию.
Другой способ - выполнить несколько запросов. Выберите нужное событие, затем соответствующую башню.
Ответ 2
Есть несколько способов, которыми вы можете объединить таблицы в Cassandra и запрашивать их. Но, конечно, вам нужно переосмыслить часть модели данных.
Ответ 3
PlayOrm - хороший вариант для объединения на масштабируемые системы со специальным масштабируемым языком SQL, в котором вы можете присоединиться к разделам (т.е. вы никогда не хотите присоединяться к 1 миллиарду строк с еще одним миллиардом строк). Он имеет тонны шаблонов noSQL и является полным перерывом от спящего режима и JPA, чтобы имитировать шаблоны noSQL с присоединением клиентской стороны, когда это необходимо.