Im в настоящее время изучает apache cassandra и им новый в nosql моделировании данных. В тот момент им пытаются построить систему, где у меня есть следующие поля:Запрос данных моделирования данных Cassandra
latitude | time_forecast | longitude | forecast_request | rh | swflx | temp
----------+---------------------+------------+------------------+--------------------+--------------------+--------------------
41.45 | 2016-04-26 17:00:00 | -8.6166667 | 2016-04-26_0000 | 0.6161368489265442 | 397.4789733886719 | 290.44512939453125
41.45 | 2016-04-26 18:00:00 | -8.6166667 | 2016-04-26_0000 | 0.673031210899353 | 261.1000061035156 | 289.3315734863281
41.45 | 2016-04-26 19:00:00 | -8.6166667 | 2016-04-26_0000 | 0.8489508032798767 | 27.700000762939453 | 286.8634948730469
41.25 | 2016-04-26 17:00:00 | -8.6166667 | 2016-04-26_0000 | 0.6555368900299072 | 395.1789855957031 | 289.8011169433594
41.25 | 2016-04-26 18:00:00 | -8.6166667 | 2016-04-26_0000 | 0.7271312475204468 | 203.39999389648438 | 288.5975646972656
41.25 | 2016-04-26 19:00:00 | -8.6166667 | 2016-04-26_0000 | 0.8572507500648499 | 30.989999771118164 | 286.7254943847656
41.456 | 2016-04-26 17:00:00 | -8.6166667 | 2016-04-26_0000 | 0.6161368489265442 | 397.4789733886719 | 290.44512939453125
41.456 | 2016-04-26 18:00:00 | -8.6166667 | 2016-04-26_0000 | 0.673031210899353 | 261.1000061035156 | 289.3315734863281
41.456 | 2016-04-26 19:00:00 | -8.6166667 | 2016-04-26_0000 | 0.8489508032798767 | 27.700000762939453 | 286.8634948730469
Это, как я создал таблицу:
create table if not exists forecast
(
latitude varchar,
longitude varchar,
time_forecast varchar,
forecast_request varchar,
swflx varchar,
temp varchar,
rh varchar,
PRIMARY KEY(latitude, time_forecast, longitude)
)
WITH CLUSTERING ORDER BY (time_forecast ASC);
С помощью этой модели, time_forecast
не может быть моим основным потому что он не будет уникальным.
Это был единственный способ, которым я мог вставлять данные без создания upserts, но проблема, с которой сталкивается сейчас, заключается в том, что я не могу запросить базу данных только time_forecast
.
В этом примере для каждой координаты (широта и долгота) im создается прогноз на следующие 3 часа, и я не могу избежать использования сложного ключа.
Как бы вы смоделировали базу данных так, чтобы я мог получить координаты и переменные только из диапазона time_forecast
значение?
Вы заглянули в [timeuuid] (https://docs.datastax.com/en/cql/3.3/cql /cql_reference/uuid_type_r.html) тип данных? Используя этот тип, вы можете сделать свои временные метки уникальными и использовать их в качестве первичного ключа. – Ralf