gpt4 book ai didi

java - 何时在 Cassandra 中使用 UUID 而不是毫秒时间戳?

转载 作者:行者123 更新时间:2023-12-04 08:44:53 25 4
gpt4 key购买 nike

我在 中创建了表 Cassandra ,其中主键是一些带有 timeuuid 的列作为数据类型。我能够使用存储为 bigint 的毫秒精度时间戳值唯一地识别每条记录.
我用过 java 用于连接 cassandra 的 datastax 驱动程序。在将记录插入数据库之前,我将毫秒时间戳转换为每条记录的 UUID。这是开销,可以删除。

  • 有人可以解释一下使用 timeuuid 有什么好处吗?而不是 bigint考虑到记录能够在没有 timeuuid 的唯一性的情况下识别?
  • 之间是否有任何性能影响 timeuuidbigint数据类型 ?
  • 最佳答案

    如果从时间戳生成 timeuuid,对性能应该不会有很大影响。 timeuuid如果您可能在同一毫秒内发生许多事件,并且您需要排序 - 使用 timeuuid您可能会在毫秒内获得多达 10,000 个不同的值。典型用例是具有如下结构的表:

    create table tuuid (
    pk int,
    tuuid timeuuid,
    ....
    ....,
    primary key (pk, tuiid));
    在这种情况下,您将得到排序(升序或降序)以及 tuuid 的值的唯一性。 .当然你可以带主键 (pk, timestamp, random-value) ,但与 timeuuid您不需要额外的列来实现唯一性。 timeuuid的缺点之一例如,与 Spark 集成,因为它没有这种类型,并且可能无法执行过滤器的推送。
    如果您不需要唯一性,那么只需切换到 timestamp - 它在内部表示为 8 字节长 - 与 bigint 相同,但您不需要自己进行转换等。

    关于java - 何时在 Cassandra 中使用 UUID 而不是毫秒时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64373999/

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