具有内置数据保留功能的数据库(可能是noSQL)

Pro*_*ica 5 database storage archive nosql

哪些开源数据库具有自动"老化"数据的功能,因此您可以指定必须存储一段数据的时间长度?

即一个数据的设定日期或时间,之后,数据库可以自由删除它的每一个痕迹.

更新:我更多的是寻找几天到几年的时间,超过几分钟或几秒.所以缓存机制并不是我想要的.

Mar*_*ick 8

MongoDB在新版本2.2中有一些东西,可能是有趣的 - TTL Collections.

集合通过特殊索引到期,该索引跟踪插入时间以及后台mongod进程,该进程定期从集合中删除过期文档.您可以使用此功能使副本集和分片群集中的数据到期.

从mongo shell创建TTL集合非常容易 -

db.mycollection.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

  • 在这里下载2.2rc0 (发布候选版,还没有完全准备好生产......在生产版本之前还会有一个候选版本)

  • 在此更改日志

  • 2.2发布说明可以在这里找到.

我不能代表其他解决方案.


Nik*_*hev 6

我认为大多数noSql数据库都支持这个功能,但是例如,cassandra有这个功能:

http://www.datastax.com/docs/1.0/ddl/column_family.

Cassandra可以从这里下载:

http://cassandra.apache.org/

但是,如果您仅在到期时使用此类数据库,请考虑使用缓存,因为它完全符合您要执行的操作,特别是如果您的对象生存时间很短.毕竟,缓存的目的是"作为您要临时存储的对象的容器".大多数传统缓存都是Key - Value缓存/数据存储,与大多数NoSql数据库非常相似.

虽然像cassandra这样的nosql数据库通常检索数据的速度非常快,但是如果与传统缓存相比,如果不断添加和删除数据,那么大多数数据库都会表现不佳,并且会增加额外的文件系统和/或网络开销.如果您发现您所需要的实际上是缓存,我可以推荐一些.

http://ehcache.org/

是一个非常简单的api的非分布式缓存

http://www.jboss.org/infinispan/

是一个分布式内存缓存/ K,V存储

但是,对于缓存,您可以存储的数量受到限制,因为默认情况下它们位于内存中.他们中的大多数都可以选择在文件系统上存储数据,但如果涉及到这一点,我会使用noSQL数据库.