Como recuperar apenas as informações que foram alteradas do Cassandra?
Eu estou trabalhando em projetar o esquema da família de colunas Cassandra para o meu caso de uso abaixo .. Eu não tenho certeza qual é a melhor maneira de projetar a família de coluna de cassandra para o meu caso de uso abaixo? Eu vou estar usando o driver CQL Datastax Java para isso ..
Abaixo está o meu caso de uso e o esquema de amostra que eu projetei para agora -
SCHEMA_ID RECORD_NAME SCHEMA_VALUE TIMESTAMP
1 ABC some value t1
2 ABC some_other_value t2
3 DEF some value again t3
4 DEF some other value t4
5 GHI some new value t5
6 IOP some values again t6
Agora, o que eu vou estar procurando na tabela acima é algo assim -
Pela primeira vez, sempre que o meu aplicativo está em execução, vou pedir tudo da tabela acima .. Significando me dar tudo da tabela acima ..Em seguida, a cada 5 ou 10 minutos, meu thread em segundo plano estará verificando esta tabela e pedirá para me dar tudo o que mudou somente (linha completa se algo foi alterado para essa linha) .. então essa é a razão que eu estou usando timestamp como um da coluna aqui ..Mas não tenho certeza de como projetar o padrão de consulta de tal maneira que ambos os casos de uso sejam facilmente atendidos e qual será a maneira correta de projetar a tabela para isso? Aqui SCHEMA_ID será a chave primária que eu estou pensando em usar ...
Eu vou estar usando o driver CQL e Datastax Java para isso ..
Atualizar:-
Se estou usando algo assim, existe algum problema com essa abordagem?
CREATE TABLE TEST (SCHEMA_ID TEXT, RECORD_NAME TEXT, SCHEMA_VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));
INSERT INTO TEST (SCHEMA_ID, RECORD_NAME, SCHEMA_VALUE, LAST_MODIFIED_DATE) VALUES ('1', 't26', 'SOME_VALUE', 1382655211694);
Porque, no meu caso de uso, não quero que ninguém insira o mesmoSCHEMA_ID
toda vez..SCHEMA_ID
deve ser único sempre que estivermos inserindo qualquer nova linha nessa tabela. Então, com o seu exemplo (@omnibear), pode ser possível, alguém pode inserir o mesmo SCHEMA_ID duas vezes? Estou correcto?
E também em relaçãotype
você tomou como uma coluna extra, esse tipo de coluna pode serrecord_name
no meu exemplo ..