2017-02-08 3 views
0

Я видел, была ли модель данных станции в качестве временных рядов, поскольку мы храним много tempratures как несколько столбцов против одной rowkey, которая является ли stationId. https://academy.datastax.com/resources/getting-started-time-series-data-modelingcassandra timeseries data model

Но теперь мой запрос - мне нужно наличие магазина (может быть изменен в 10 раз в 1 мин) миллионов продуктов. И я создам API, который облегчит клиентам считывание доступности продуктов по метке времени.

Так клиент может попросить все номера изменились статьи, так как метки времени (t1), а затем мне нужно предоставить им ..

  • Мы можем сделать это, поставив вторичный индекс на метку времени, как -
    • создайте индекс, если он не существует на акции_51 (update_sequence);
  • Но, как я сказал, я буду иметь миллионы продуктов, этот вторичный индекс будет дорогостоящим мой CQL будет выбрать * из таблицы, где update_sequence> timestamp1 - (который будет дорогостоящим)

Так пожалуйста, предложите какую-нибудь достоверную и точную модель данных

В настоящее время у нас нет таблиц, созданных - я хочу, чтобы дизайн был лучше, поэтому сначала консультируйтесь. Чтобы быть более конкретным - Нам нужны все продукты, чьи доступность изменился с некоторого времени .. время может быть любым (1 месяца старше 1yr старше 5 года старше)

Заранее спасибо

+0

Ваш вопрос хорош, но не ясен. Что такое доступность, это число или только 0/1? Вы хотите, чтобы все продукты были доступны в день, месяц, год на основе доступности? – Gunwant

+0

Лучше вы также наделите свой стол. – Gunwant

+0

Спасибо за немедленный ответ. OK, штраф В настоящее время у нас нет таблиц, созданных - я хочу лучше спроектировать, так что консультируйтесь Да Нам нужны все продукты, чья доступность изменилась с какого-то времени .. время может быть любого (1 месяц старше 1 год старше 5 лет) год старше) –

ответ

0

Если вы просто хотите сохранить журналы продукта, использовать как ниже модели данных -

create table product_log(
    productid int, 
    changedon bigint, 
    availability int, 
    primary key (productid,changedon) 
)WITH CLUSTERING ORDER BY (changedon DESC); 

Вставка запросов -

insert into product_log (productid,changedon,availability) values (100,1486562259037,28);-- oldest time stamp value for changedon 
insert into product_log (productid,changedon,availability) values (100,1486562296492,29); 
insert into product_log (productid,changedon,availability) values (200,1486562322372,30); 
insert into product_log (productid,changedon,availability) values (200,1486562332019,31); 
insert into product_log (productid,changedon,availability) values (300,1486562340851,32); 
insert into product_log (productid,changedon,availability) values (300,1486562348963,33); -- latest time stamp value for changedon 

Select * запрос ---

 cqlsh:nasa> select * from product_log; 

productid | changedon  | availability 
-----------+---------------+-------------- 
     200 | 1486562332019 |   31 
     200 | 1486562322372 |   30 
     100 | 1486562296492 |   29 
     100 | 1486562259037 |   28 
     300 | 1486562348963 |   33 
     300 | 1486562340851 |   32 

(6 rows) 

Диапазон запросов на основе значения changedon -

 cqlsh:nasa> select * from product_log where changedon > 1486562259037 and changedon < 1486562348963 ALLOW FILTERING; 

productid | changedon  | availability 
-----------+---------------+-------------- 
     200 | 1486562332019 |   31 
     200 | 1486562322372 |   30 
     100 | 1486562296492 |   29 
     300 | 1486562340851 |   32 

(4 rows) 

Диапазон запросов на кластерные столбцов допускается. Только проблема с этим дизайном заключается в создании широкой строки. Если у вас слишком много обновлений для одного и того же идентификатора продукта, раздел будет неравномерным.

+0

hmm Что я пробовал, но, как вы упомянули, у нас будет много обновлений на один идентификатор в день. –

+0

Может ли материализованный вид быть полезным здесь? –

+0

Да, если вы используете c * 3. – Gunwant