对于一个开源项目,我正在寻找一个由文件支持的字典的简单实现.意思是,如果应用程序崩溃或重新启动字典将保持其状态.我想每次触摸字典时更新底层文件.(添加值或删除值).FileWatcher不是必需的,但它可能很有用.
class PersistentDictionary: IDictionary { public PersistentDictionary(string filename) { } }
要求:
开源,不依赖于本机代码(没有sqlite)
理想情况下,这是一个非常简短的实现
设置或清除值时,不应重写整个基础文件,而应搜索文件中的位置并更新值.
类似的问题
.Net中的持久二进制树/哈希表
c#的磁盘支持字典/缓存
PersistentDictionary
lubos hasko.. 23
bplustreedotnet
bplusdotnet包是C#,java和Python中交叉兼容的数据结构实现库,对于需要存储和检索持久性信息的应用程序非常有用.bplusdotnet数据结构可以轻松存储与值关联的字符串键.
ESENT管理界面
不是100%托管代码,但值得一提的是,作为非托管库本身已经是每个Windows XP/2003/Vista/7盒子的一部分
ESENT是一个可嵌入的数据库存储引擎(ISAM),它是Windows的一部分.它提供可靠的,事务性的,并发的,高性能的数据存储,具有行级锁定,预写日志记录和快照隔离.这是ESENT Win32 API的托管包装器.
Akavache
*Akavache是一个异步,持久的键值缓存,用于在C#中编写本机桌面和移动应用程序.可以把它想象成桌面应用程序的memcached.
- C5通用馆藏图书馆
C5提供标准.Net System.Collections.Generic
命名空间未提供的功能和数据结构,例如持久性树数据结构,基于堆的优先级队列,散列索引数组列表和链接列表,以及有关集合更改的事件.
bplustreedotnet
bplusdotnet包是C#,java和Python中交叉兼容的数据结构实现库,对于需要存储和检索持久性信息的应用程序非常有用.bplusdotnet数据结构可以轻松存储与值关联的字符串键.
ESENT管理界面
不是100%托管代码,但值得一提的是,作为非托管库本身已经是每个Windows XP/2003/Vista/7盒子的一部分
ESENT是一个可嵌入的数据库存储引擎(ISAM),它是Windows的一部分.它提供可靠的,事务性的,并发的,高性能的数据存储,具有行级锁定,预写日志记录和快照隔离.这是ESENT Win32 API的托管包装器.
Akavache
*Akavache是一个异步,持久的键值缓存,用于在C#中编写本机桌面和移动应用程序.可以把它想象成桌面应用程序的memcached.
- C5通用馆藏图书馆
C5提供标准.Net System.Collections.Generic
命名空间未提供的功能和数据结构,例如持久性树数据结构,基于堆的优先级队列,散列索引数组列表和链接列表,以及有关集合更改的事件.
我来分析一下:
按键检索信息
持久存储
1值更改时,不想写回整个文件
应该幸免于崩溃
我想你想要一个数据库.
编辑:我认为你正在寻找错误的东西.搜索符合您要求的数据库.并改变你的一些要求,因为我认为很难满足所有这些要求.
我已经实现了你正在寻找的那种PersistedDictionary.底层存储是内置于Windows中的ESENT数据库引擎.代码可在此处获得:
http://managedesent.codeplex.com/
一种方法是使用内置于windoows中的可扩展存储引擎来存储您的东西.它是一个原生的win数据库,支持索引,事务等...