Python 默认情况下使用uuid时Cassandra TimeUUID泛洪文件描述符
我有卡桑德拉模型Python 默认情况下使用uuid时Cassandra TimeUUID泛洪文件描述符,python,cassandra,timeuuid,clustering-key,Python,Cassandra,Timeuuid,Clustering Key,我有卡桑德拉模型 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',
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
,但是uuid4
需要时间部分,并且只有TimeUUID
提供时间部分uuid1
- 在检查和的代码时,将
与uuid1
,两者看起来相同,因此也无法解决问题cassandra.util.uuid\u from_time(time.time())
TimeUUID
替换为Timestamp
类型,但是在列创建的是主键
和聚类顺序
,所以不知道我能不能这样做
我的列族已经有1000000多个数据,所以我不能直接删除它们
我还想知道,使用TimeUUID
而不是timestamp
,有什么好处?你确定你所链接的libuuid
问题吗?您的代码片段显示了标准库uuid
,它可能没有这个问题。您的程序中是否可能存在不同的文件描述符泄漏
如果是libuuid
,最简单的方法就是使用标准库实现。如果速度是您最关心的问题,那么您可能会考虑构建一个不同版本的libuuid
来与python libuuid
一起使用。我很快尝试了这个,但没有注意到任何文件描述符泄漏:
我还想知道,使用TimeUUID而不是timestamp有什么好处
您将无法更改现有表中列的类型,但要回答您的问题:TimeUUID通常用于避免冲突,因为在同一时间戳值中可以写入多个事件。为什么不使用datastax python驱动程序的TimeUUID生成?@AshrafulIslam您能举个例子吗?如何应用你的解决方案?亚当,我遇到的问题与我联系的问题相同。我现在使用now来生成新的uuid
您使用的是驱动程序实用程序方法和问题?这将是非常令人惊讶的,除非您正在以某种方式修补uuid
标准库。你是吗?什么症状让你相信这是同一个问题?有没有办法检查,我使用的是uuid
formlibuuid
或standard
uuid?除非你在其他地方进行猴子补丁,否则你的代码片段表明你使用的是标准lib版本。您可以通过导入uuid进行验证;打印uuid.\uuuu文件\uuuu
。它应该类似于../lib/python2.7/uuid.pyc
,而不是../lib/python2.7/site packages/libuuid/uuuuid/uuuu init_uuuu.pyc
谢谢Adam,我会检查这个