当前位置:  开发笔记 > 编程语言 > 正文

在C#中寻找一个简单的独立持久字典实现

如何解决《在C#中寻找一个简单的独立持久字典实现》经验,为你挑选了4个好方法。

对于一个开源项目,我正在寻找一个由文件支持的字典的简单实现.意思是,如果应用程序崩溃或重新启动字典将保持其状态.我想每次触摸字典时更新底层文件.(添加值或删除值).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命名空间未提供的功能和数据结构,例如持久性树数据结构,基于堆的优先级队列,散列索引数组列表和链接列表,以及有关集合更改的事件.



1> lubos hasko..:

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命名空间未提供的功能和数据结构,例如持久性树数据结构,基于堆的优先级队列,散列索引数组列表和链接列表,以及有关集合更改的事件.



2> GvS..:

我来分析一下:

    按键检索信息

    持久存储

    1值更改时,不想写回整个文件

    应该幸免于崩溃

我想你想要一个数据库.

编辑:我认为你正在寻找错误的东西.搜索符合您要求的数据库.并改变你的一些要求,因为我认为很难满足所有这些要求.


......魔鬼在细节中,这个答案中没有细节或代码.我明确要求实现IDictionary
我理解你在说什么,但数据库部分只是另一个实现细节,对于依赖于sqlite的解决方案你需要有代码来处理x64 vs x32你需要一个存储库和一堆其他东西,所以,是的嵌入式数据库可能是一个解决方案......

3> 小智..:

我已经实现了你正在寻找的那种PersistedDictionary.底层存储是内置于Windows中的ESENT数据库引擎.代码可在此处获得:

http://managedesent.codeplex.com/



4> Mladen Prajd..:

一种方法是使用内置于windoows中的可扩展存储引擎来存储您的东西.它是一个原生的win数据库,支持索引,事务等...

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有