C# 的磁盘支持字典/缓存

2024-03-29

我正在寻找一种用于缓存大量数据的解决方案。

相关问题但针对不同语言:

  • Python 基于磁盘的字典 https://stackoverflow.com/questions/226693/python-disk-based-dictionary
  • 磁盘支持的 STL 容器类? https://stackoverflow.com/questions/149488/disk-backed-stl-container-classes

用不同的术语结束问题:

  • 在 C# 中寻找一个简单的独立持久字典实现 https://stackoverflow.com/questions/100235/looking-for-a-simple-standalone-persistant-dictionary-implementation-in-c

我不需要(或不想支付任何费用)持久性、事务、线程安全等,并且想要使用起来并不比 List 或 Dictionary 复杂多少的东西。

如果我必须编写代码,我会将所有内容保存为临时目录中的文件:

string Get(int i)
{
   File.ReadAllText(Path.Combine(root,i.ToString());
}

在我的情况下,索引将是int(并且它们应该是连续的或足够接近的)并且数据将是string这样我就可以逃避治疗POD http://en.wikipedia.org/wiki/Plain_Old_Data_Structures并且宁愿选择超轻并做到这一点。

用法是我有一个 3k 文件序列(如文件 #1 到 #3000),总计 650MB,并且需要对序列中的每个步骤进行比较。我预计总数大约相同或更多,并且我不想将所有这些都保留在内存中(可能会出现更大的案例,而我却做不到)。


许多人针对我的问题提出了不同的解决方案。然而,似乎没有一个是针对我的小利基市场的。我考虑磁盘支持缓存的原因是因为我预计我当前的使用将使用我的可用地址空间的 1/3 到 1/2。我担心较大的箱子会耗尽空间。我不担心踩踏、持久性或复制。我正在寻找的是一个最小的解决方案,使用最少的代码、最小的使用足迹、最小的内存开销和最小的复杂性。

我开始觉得我过于乐观了。


你真正想要的是 B 树。 这是数据库使用的主要数据结构。 它旨在使您能够根据需要有效地将数据结构的部分与磁盘交换。

我不知道有任何广泛使用的、高质量的 C# 独立 B 树实现。

然而,一种简单的获取方法是使用 Sql Compact 数据库。 Sql Compact 引擎将在进程内运行,因此您不需要运行单独的服务。它会给你一个 B 树,但没有所有令人头痛的事情。您只需使用 SQL 即可访问数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 的磁盘支持字典/缓存 的相关文章

随机推荐

  • 相对布局权重

    在布局资源 XML 中 我有 3 个relativelayout 它们位于主relativelayout 内 视图将垂直显示 这3个RelativeLayout 被设置为彼此相邻 我希望它们填充整个屏幕 无论屏幕尺寸是多少 我的布局视图
  • 堆的算法在列表列表中的实现

    我正在使用堆算法创建一个包含所述列表的每个排列的列表列表 每个排列将是其自己的列表 当我在算法中打印它时它可以正常工作 但是当我尝试将它添加到我的列表列表中并且它们都是相同的数组 4 1 2 3 时它不能正常工作 我注释掉了我测试过的打印内
  • 我们如何将上下文转换为片段引用?

    我有一个类 Common 和一个片段 FragmentTest Common java 是一个通用类 它具有其他活动的一些通用函数 这些函数通过每个活动的上下文访问 在这里我传递片段的上下文到该类中的函数 我正在这样做 在片段中 Commo
  • 如何在Python中将一列整数转换为标准小时时间?

    我有一个像这样的数据框 BuyTime ID SellTime 94650 1 94651 94717 1 94817 120458 2 114119 买入时间和卖出时间类型是整数 但我想将它们转换为标准时间日期 我已经用过 quote S
  • Javascript 强制在浏览器中打开链接

    有没有办法从 JavaScript 进行对象检测并强制在特定浏览器中打开链接 For eg 在 IE 中打开 在 Firefox 中打开 不 如果没有一些浏览器插件 绝对不行 如果可能的话 这将是一个巨大的安全风险
  • 数据表 - 按日期范围过滤 - 未返回正确的结果

    我目前正在使用 jQuery 的数据表插件https datatables net https datatables net 使用此处找到的日期范围插件http www daterangepicker com http www datera
  • 删除子循环在完成之前退出

    我有以下代码 它查找文档中类名为 foo 的所有元素 然后将它们全部删除 function doc var items doc getElementsByClassName foo alert items length if items l
  • 获取物理IP地址背后的技巧是什么?

    我怎样才能获得与我访问 时获得的相同的IP地址 http www whatsmyip org http www whatsmyip org 使用C 和winsock库 我知道如何获取 127 0 0 1 和路由器IP 192 168 1 1
  • 哪个文件 gradle.properties 的优先级更高?

    我有本地和全局 gradle properties 需要全局的来配置代理 但它还包含其他参数 想知道如果对于相同的设置指定不同的值会发生什么 哪些文件将优先 或者它们可能是它们是如何合并的 我的全局 gradle properties sy
  • 405 NuGet 推送中不允许使用方法

    当我尝试推送时 我的 NuGet 服务器抛出 405 不允许 至少 NuGet 控制台是这么说的 Failed to process request Method Not Allowed The remote server returned
  • 深度优先图算法的时间复杂度[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始学习时间复杂度 并且我在示例中查找了一些简单排序的时间复杂度 我想知道如何计算图中深度优先搜索的平均时间复杂度 V n and E
  • 如何按降序对 JSON 数组元素进行排序? [复制]

    这个问题在这里已经有答案了 In my 索引 html 我从服务器接收数据 顺序如下 id 1 keyOne valueOne keyTwo valueTwo id 2 keyOne valueOne keyTwo valueTwo id
  • 子类化 static.File

    我是 Twisted 的新手 在对twisted 中的 static File 进行一些必要的子类化时遇到了麻烦 我正在尝试在子类中设置请求标头 class ResponseFile static File def render GET s
  • now-cli 部署不会构建 package.json 依赖项

    我正在尝试通过部署 Sapper 构建的应用程序 now node 该任务基本上是部署具有依赖项的 Polka 服务器并静态地提供静态 和客户端 文件 我已设法通过 includeFiles 包含 Lambda 所需的文件 但现在我在日志中
  • IIS 7如何保留网站子文件夹身份验证设置

    在 IIS 中 您可以使用 功能 视图来设置文件夹级别的设置 请参见屏幕截图 我想对网站的多个子文件夹禁用匿名身份验证 并将这些设置保存到源代码管理中 我想知道 IIS 将这些设置保存在哪里 它们不在网站 web config 或子文件夹内
  • Hibernate为MySQL生成同名索引和外键

    因此 在 Hibernate 管理的一个类中 我有以下属性定义 ManyToOne optional false private Company company 当为 MySQL 创建数据库模式时 Hibernate 会自动为此字段创建外键
  • 等到作用域变量加载完毕后,再在 angular.js 的视图中使用它

    我见过this https stackoverflow com a 11972028 110233 and this https stackoverflow com questions 12265565 angularjs promise
  • 盈透证券 API:交易者工作站 (TWS) 与 IB 网关

    In 据记载 为了使用 IB api 您必须通过 TWS 或 IB 网关连接到它 我们的 API 需要通过交易者工作站 TWS 或 IB 网关进行连接 各自的优势是什么 哪种解决方案 网关或 TWS 可提供更好的性能 网关缺少 TWS 的
  • 如何在类中创建模板函数? (C++)

    我知道可以制作一个模板函数 template
  • C# 的磁盘支持字典/缓存

    我正在寻找一种用于缓存大量数据的解决方案 相关问题但针对不同语言 Python 基于磁盘的字典 https stackoverflow com questions 226693 python disk based dictionary 磁盘