С Cassandra (CQL) вам необходимо использовать подход моделирования на основе запросов.Это означает, что вам понадобится таблица, специально разработанная для обслуживания запросов на borough
.
. Хороший вопрос для начала, почему (в вашей текущей структуре таблицы) id
ваш единственный первичный ключ?Нужно ли поддерживать запрос по id
?Если нет, то вам не нужен этот стол.Однако, поскольку borough
не является уникальным, имеет смысл объединить дополнительные столбцы в определение первичного ключа.
Я бы выбрал что-то вроде этого:
CREATE TABLE stackoverflow.restaurants_by_borough (
borough text,
name text,
id int,
buildingnum text,
cuisinetype text,
phone text,
street text,
zipcode int,
PRIMARY KEY (borough, name, id)
) WITH CLUSTERING ORDER BY (name ASC, id ASC);
Теперь этот запрос будет работать:
select name from restaurants_by_borough
where borough = 'brooklyn';
Он вернет данные для каждого района, отсортированные по name
.Кроме того, если в любых двух ресторанах одинаковый name
(возможно, в Бруклине более одного McDonalds), в конец ключа добавляется id
, чтобы обеспечить уникальность.