如何在cassandra(php)中获取主键的最后一个值?

时间:2016-02-07 16:09:04

标签: php cassandra thrift cql nosql

如何在Cassandra-php中获取主键的最后一个值?我的意思是,我们有一个函数来获取 PHP MYSQL 的最后一个查询mysql_insert_id中生成的ID。同样, Cassandra 还有什么?你能帮我解决这个问题吗?假设这是我的样本表,我如何获得主键的最后一个值?

      userId                    | BookId (primary key) |  Genrecode
      --------------------------------------------------------------
      22                        | 9a9fa429c3494137     |  ART4
      56                        | 9a9fa429b3496137     |  45RT
      89                        | 9a9ga429a3496132     |  ER68
      20                        | 249ga429a9096542     |  QW3Y
      29                        | 249kg429a2393652     |  QWE5
      12                        | i55oa429a9093462     |  9ER4
      08                        | e4235k594ik9654r     |  WRUO

2 个答案:

答案 0 :(得分:0)

你可以看到这个答案:Cassandra column key auto increment,它解释了为什么Cassandra中没有auto_increment,以及为什么没有last_insert_id()。您需要生成有意义的密钥或使用UUID

答案 1 :(得分:0)

正如Alar所说,没有自动增量/ last_insert_id(),链接的文章就是为什么。

话虽如此,像这样的问题变成了数据模型问题。

  

如何在Cassandra(-php)中获取主键的最后一个值

我建议在Cassandra中创建一个单独的表来跟踪创建的密钥。就像是: PRIMARY KEY((day),timestamp) and sort timestamp in DESC

这将允许您: SELECT key FROM key_log WHERE day=today limit 1 获取为特定日期创建的最新密钥。根据生成的密钥频率,您可能必须更改分区键以更均匀地分配数据。

我发现以这种方式跟踪生成的密钥通常是一个好主意,因为您永远不知道您最终需要覆盖的应用程序逻辑,这可以帮助您避免应用程序繁重的数据迁移。