我有 Cassandra 模型
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 创建不会关闭文件 - 达到文件描述符限制。我尝试找到解决方案,但似乎我认为哪些选项可能不起作用
- Replace
uuid1
默认为uuid4
, but TimeUUID
需要时间参与其中,而且只需uuid1
提供那个。
- Relace
uuid1
with cassandra.util.uuid_from_time(time.time())
,当检查两者的代码时uuid1 and uuid_from_time,两者看起来都一样,所以也没有解决问题。
最后一个选择是替换TimeUUID
with Timestamp
类型,但是这个created_at
列是primary_key
and clustering_order
,所以不知道我能不能做到。
我的列族已经有 1,000,000 多个数据,所以我不能直接删除它们。
我也想知道,使用有什么好处TimeUUID
代替timestamp
?
你确定你正在击中libuuid
您链接的问题?您的代码片段显示了标准库uuid
,可能没有这个问题。您的程序中是否可能存在不同的文件描述符泄漏?
如果是libuuid
,最简单的方法是使用标准库实现。如果速度是您主要关心的问题,您可能会考虑构建不同版本的libuuid
与使用python-libuuid
。我很快尝试了这一点,没有注意到任何文件描述符泄漏:http://www.ossp.org/pkg/lib/uuid/
我还想知道,使用 TimeUUID 而不是时间戳有什么优势?
您将无法更改现有表上的列类型,但要回答您的问题:TimeUUID 通常用于避免多个事件可能写入同一时间戳值中的冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)