在defau中使用uuid时Cassandra TimeUUID泛洪文件描述符

2024-05-14 04:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有卡桑德拉模型

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)
    ...
    ...

Recentrly应用程序命中了uuid1 creation doesn't close files - hits file descriptor limit。我试图找到解决办法,但似乎我认为哪些选择可能行不通

  • 默认情况下,将uuid1替换为uuid4,但是TimeUUID需要时间部分,并且只有uuid1提供了这一点。在
  • uuid1与{}联系起来,当检查^{}和{a3}的代码时,两者看起来都是一样的,因此也不能解决问题。在

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

我的列族已经有1000000多个数据,所以我不能直接删除它们。在

我还想知道,用TimeUUID代替timestamp有什么好处?在


Tags: columnskeyfrom模型importmodeluuidmodels
1条回答
网友
1楼 · 发布于 2024-05-14 04:29:06

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

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

I also want to know, what is the advantage of using TimeUUID instead of timestamp ?

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

相关问题 更多 >