Запрос диапазона Кассандры

У меня есть набор продуктов (product_Id, цена).

«Цена» всех продуктов постоянно меняется и, следовательно, должна обновляться очень часто.

Я хочу выполнить запрос диапазона цен:

select * from products where price > 10 and price < 100;

Обратите внимание - я хочу получить товары в ассортименте. Запрос не имеет значения.

Каков наилучший способ моделирования этого сценария? Я использую кассандру 2.1.9.


person Abhishek Agarwal    schedule 09.06.2016    source источник


Ответы (1)


Если ваша цена является ключом столбца, вы можете создавать запросы диапазона только с помощью ключа секции. Например.

Ваш стол:

products (product_Id text, price float, PRIMARY KEY(productId, price))

Ваш запрос диапазона:

SELECT * FROM products 
WHERE productId = 'ysdf834234' AND price < 1000 AND price > 30;

Но я думаю, что этот запрос действительно бесполезен. Если вам нужны диапазоны для ваших цен и без вашего ключа раздела, вам нужна новая таблица. Но я думаю, что таблица Cassandra с двумя столбцами — это плохой дизайн базы данных. В вашем случае использование чистого хранилища значений ключа является лучшим вариантом. (Как Redis) Но вы также можете добавить productType, productVariation, productColor, productBrand... в виде столбцов. В этом случае Cassandra — хороший вариант для вас. Затем вы можете создавать такие таблицы, как:

productsByType_price PRIMARY KEY(productType, productPrice, productId)
productsByType_color PRIMARY KEY(productType, productColor, productId)
productsByType_brand PRIMARY KEY(productType, productBrand, productId)

и т. д.

Один совет: прочтите немного больше о том, как cassandra управляет данными. Это действительно помогает вам в моделировании данных.

person Citrullin    schedule 09.06.2016