大量半持久数据的结构?

时间:2011-07-01 05:13:54

标签: python inotify

我需要为一组文件跟踪大量的inotify消息,这些文件在其生命周期内将在几个特定目录之间移动,inode完好无损;我需要跟踪这些inode的移动,以及创建/删除和更改文件的内容。每秒会有数百次更改。

由于资源有限,我无法将其全部存储在RAM(或磁盘或数据库)中。

幸运的是,大多数这些文件将在短时间内删除;只需要存储文件内容和运动历史记录以供以后分析。未立即删除的文件将在一段已知的时间内停留在特定目录中。

所以在我看来,我需要一个部分存储在RAM中的数据结构,并部分保存到磁盘;保存到磁盘的部分部分将需要被调用(文件未被删除),但大多数不会。我不需要查询数据,只需通过标识符(文件名,即[A-Z0-9] {8})访问它。能够配置何时将文件数据刷新到磁盘将会很有帮助。

这样的野兽存在吗?

修改:I've asked a related question

1 个答案:

答案 0 :(得分:0)

为什么数据库?说SQLite。

虽然SQLite在空间方面不是最有效的存储机制,但是有许多优点 - 首先是 是SQL RDBMS。可以通过cache_size pragma配置SQLite使用的内存量(临时缓存数据)。

如果SQLite不是一个选项,那么"key value stores"之一呢?它们的范围从分布式客户端/服务器内存(例如memcached)到本地嵌入式磁盘(例如BDB)到内存 - 具有持久性后备溢出和中间任何位置等。它们没有SQL DDL / DQL(虽然有些可能允许关系),但它们的作用是有效的 - 存储键和值。

当然,人们总是可以实现一个LRU结构(比如一个带有限制的基本排序列表),并且溢出到一个简单的可扩展的基于磁盘的哈希实现......但......首先考虑以上:) [也可能是一些微型KV库/来源。

快乐的编码。

相关问题