sql >> Databasteknik >  >> RDS >> PostgreSQL

Bästa sättet att lagra senast rörd tid i Cassandra

Eftersom c* är sista skrivvinster kan du helt enkelt behålla de senaste versionerna av varje rad.

Du kan, som MSD föreslår, använda writetime att dra tiden för skrivningen. Men var försiktig eftersom detta är kolumnspecifikt och du kan inte använda skrivtid på dina primära nyckelkolumner. Till exempel i en tabell enligt följande:

cqlsh> create TABLE test.test ( a int, b int, c int, d int, primary key (a))
   ... ;
cqlsh> insert INTO  test.test (a, b, c, d) VALUES ( 1,2,3,4)
   ... ;

cqlsh> select * from test.test
   ... ;

 a | b    | c | d
---+------+---+------
 1 |    2 | 3 |    4

(2 rows)

cqlsh> insert into test.test (a,c) values (1, 6);
cqlsh> select * from test.test ;

 a | b    | c | d
---+------+---+------
 1 |    2 | 6 |    4

(2 rows)
cqlsh> select writetime(a), writetime(b), writetime(c), writetime(d) from test.test
   ... ;
InvalidRequest: code=2200 [Invalid query] message="Cannot use selection function writeTime on PRIMARY KEY part a"

cqlsh> select  writetime(b), writetime(c), writetime(d) from test.test  ;

 writetime(b)     | writetime(c)     | writetime(d)
------------------+------------------+------------------
 1434424690700887 | 1434424690700887 | 1434424702420929

Annars kan du lägga till en cql-kolumn med tidsstämpeln:

create TABLE test.test ( a int, b int, c int, d int, touched_at timeuuid, primary key (a)) ;

Lite snabb benchmarking skulle hjälpa dig att avgöra vilken som är mer presterande.



  1. Postgres, enkla frågor som inte använder index

  2. PostgreSQL:standardnamn för begränsningar

  3. Ansluter RazorSQL till Salesforce.com

  4. Optimera GROUP BY-fråga för att hämta den senaste raden per användare