Cassandra + Spring Boot:配置Table自动添加INSERT时间戳
Cassandra + SpringBoot: Configure Table to automatically add INSERT timestamp
关于 Cassandra 的小问题,请使用 SpringBoot 应用程序的上下文。
我有兴趣将行插入到 table 的时间戳添加到 table。
因此,在创建 table 时,我这样做:
create table mytable (someprimarykey text PRIMARY KEY, timestamp long, someotherfield text);
我可以看到列时间戳,很高兴。
然后,Web 应用程序:
@Table
public class MyTable {
@PrimaryKey
private final String somePrimaryKey;
private final long timestamp;
private final String someOtherField;
//constructor + getters + setters
当我插入时,我会做通常的事情:
MyTable myTable = new MyTable(somePK, System.currentTimeMillis(), "foo");
myTableRepository.save(myTable);
这个很好用,我可以在table我的记录中看到,随着插入的时间,开心。
问题:
现在,对于我有兴趣插入到 Cassandra 中的数百个 POJO,它们都带有这个 timestamp long
字段。不知何故,在Web应用层,我正在处理一个数据库概念,写入的时间戳。
问题:
请问是否可以将此委托回数据库?某种:
create table mytable (someprimarykey text PRIMARY KEY, hey-cassandra-please-automatically-add-the-time-when-this-row-is-written long, someotherfield text);
or
create table mytable (someprimarykey text PRIMARY KEY, someotherfield text WITH default timestamp-insert-time-column);
Web 应用程序可以抽象创建和插入 POJO 而无需携带此时间戳字段?
谢谢
没有必要单独存储每一行的插入时间,因为 Cassandra 已经为元数据中的所有写入存储了它。
有一个 built-in CQL 函数 WRITETIME()
,当列被写入数据库时,returns date/time(以微秒编码)。
对于您的情况,您可以通过以下方式查询您的 table:
SELECT WRITETIME(someotherfield) FROM mytable WHERE someprimarykey = ?
关于 Cassandra 的小问题,请使用 SpringBoot 应用程序的上下文。
我有兴趣将行插入到 table 的时间戳添加到 table。
因此,在创建 table 时,我这样做:
create table mytable (someprimarykey text PRIMARY KEY, timestamp long, someotherfield text);
我可以看到列时间戳,很高兴。
然后,Web 应用程序:
@Table
public class MyTable {
@PrimaryKey
private final String somePrimaryKey;
private final long timestamp;
private final String someOtherField;
//constructor + getters + setters
当我插入时,我会做通常的事情:
MyTable myTable = new MyTable(somePK, System.currentTimeMillis(), "foo");
myTableRepository.save(myTable);
这个很好用,我可以在table我的记录中看到,随着插入的时间,开心。
问题:
现在,对于我有兴趣插入到 Cassandra 中的数百个 POJO,它们都带有这个 timestamp long
字段。不知何故,在Web应用层,我正在处理一个数据库概念,写入的时间戳。
问题: 请问是否可以将此委托回数据库?某种:
create table mytable (someprimarykey text PRIMARY KEY, hey-cassandra-please-automatically-add-the-time-when-this-row-is-written long, someotherfield text);
or
create table mytable (someprimarykey text PRIMARY KEY, someotherfield text WITH default timestamp-insert-time-column);
Web 应用程序可以抽象创建和插入 POJO 而无需携带此时间戳字段?
谢谢
没有必要单独存储每一行的插入时间,因为 Cassandra 已经为元数据中的所有写入存储了它。
有一个 built-in CQL 函数 WRITETIME()
,当列被写入数据库时,returns date/time(以微秒编码)。
对于您的情况,您可以通过以下方式查询您的 table:
SELECT WRITETIME(someotherfield) FROM mytable WHERE someprimarykey = ?