gpt4 book ai didi

java - 我可以读取 cassandra 中一个单元格的所有版本吗?

转载 作者:行者123 更新时间:2023-11-30 06:32:36 25 4
gpt4 key购买 nike

我想检索一个单元格的所有版本。但是,Cassandra API 似乎只能获取最新版本/时间戳。例如使用 hector:

import me.prettyprint.hector.api._
import me.prettyprint.hector.api.factory._
import me.prettyprint.cassandra.serializers._
import me.prettyprint.cassandra.service.template._
object GetExample extends App {
val cluster = HFactory.getOrCreateCluster("test_cluster", "127.0.0.1:9160")
val keyspace = HFactory.createKeyspace("test_keyspace", cluster)
val colFamilyName = "test_table"

val template = new ThriftColumnFamilyTemplate(keyspace, colFamilyName,
StringSerializer.get(),
StringSerializer.get())
val result = template.queryColumns("row1")
System.out.println(result.getString("qual1"))
System.out.println(result.getColumn("qual1").getClock())

HFactory.shutdownCluster(cluster)
}

getClock() 只给我最新的时间戳。

我想要所有时间戳的一个原因是,在 Cassandra 自己的 API 中,删除可以指定一个时间戳来删除比该时间更早的值。那么,如果我一开始无法检索它们,我怎么知道要使用哪个时间戳呢?此外,我可能想使用时间戳来存储一个单元格的不同版本,作为一种非常有用的建模机制。

Cassandra 能做到吗?

我搜索了一下,发现 Jonathan Ellis 曾经说过:“不,我们不打算添加对检索旧版本的支持。”但那是 2010 年 3 月。现在还是这样吗?如果是,为什么?

最佳答案

列有时间戳的原因是当多个客户端写入同一列时,Cassandra 可以处理冲突解决。

如果您想保留多个版本的列,您可以使用 OriginalColumnName::TimeUUID 的复合列。然后您可以按 OriginalColumnName 切出所有列以获取该列的历史值。这是一个例子 using hector and composite columns .

关于java - 我可以读取 cassandra 中一个单元格的所有版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com