首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认使用uuid时卡桑德拉TimeUUID洪水文件描述符

默认使用uuid时卡桑德拉TimeUUID洪水文件描述符
EN

Stack Overflow用户
提问于 2017-05-05 14:19:44
回答 1查看 357关注 0票数 1

我有卡桑德拉模型

代码语言:javascript
复制
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model

class MyModel(Model):
    ...
    ...
    created_at = columns.TimeUUID(primary_key=True,
                         clustering_order='DESC',
                         default=uuid.uuid1)
    ...
    ...

可回收应用程序点击了uuid1创建不关闭文件-点击文件描述符限制。我试图找到解决办法,但似乎我认为哪些选择可能行不通。

  • 默认情况下将uuid1替换为uuid4,但是TimeUUID需要时间部分,只有uuid1才能提供这个部分。
  • 使用uuid1cassandra.util.uuid_from_time(time.time()),当检查uuid1uuid_from_time的代码时,两者看起来都是一样的,因此也不能解决问题。

最后一个选项是将TimeUUID替换为Timestamp类型,但是这个created_at列是primary_keyclustering_order,所以不知道我能不能这样做。

我的专栏家族已经有了1,000,000+数据,所以我不能就这样删除它们。

我还想知道,使用TimeUUID而不是timestamp有什么好处?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-19 17:23:20

您确定您正在触及您所链接的libuuid问题吗?您的代码片段显示了标准库uuid,它可能没有这个问题。您的程序中有可能有不同的文件描述符泄漏吗?

如果是libuuid,最简单的方法就是使用标准库实现。如果速度是您关心的一个主要问题,您可能会考虑构建一个与python-libuuid一起使用的不同版本的python-libuuid。我很快就试了一下,没有注意到有任何文件描述符泄漏:http://www.ossp.org/pkg/lib/uuid/

我还想知道,使用TimeUUID而不是时间戳有什么好处?

您将无法更改现有表中列的类型,但要回答您的问题: TimeUUID通常用于避免冲突,在冲突中可以以相同的时间戳值写入多个事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43807341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档