gpt4 book ai didi

.net - 检索/存储数百万个小型二进制对象的最快方法

转载 作者:IT王子 更新时间:2023-10-29 06:25:19 27 4
gpt4 key购买 nike

我正在寻找一种快速(如高性能,而不是快速修复)解决方案来持久化和检索数千万个小型(大约 1k)二进制对象。每个对象都应该有一个用于检索的唯一 ID(最好是 GUID 或 SHA)。额外的要求是它应该可以从 .NET 中使用,并且不需要安装额外的软件。

目前,我正在为这项工作使用带有单个表的 SQLite 数据库,但我想摆脱处理简单 SQL 指令的开销,例如 SELECT data FROM store WHERE id = id。

我还在 NTFS 下测试了直接文件系统持久性,但是一旦达到 50 万个对象,性能就会下降得非常快。

附言顺便说一下,永远不需要删除对象,而且插入率非常非常低。事实上,每次对象更改时,都会存储一个新版本,而保留以前的版本。这实际上是支持时间旅行的要求。

只是向这个线程添加一些额外的信息:

到 BLOB 还是不到 BLOB:数据库或文件系统中的大对象存储 http://arxiv.org/abs/cs.DB/0701168

最佳答案

您可以通过将对象的 GUID 标识符分成几部分并将它们用作目录名称来减轻 NTFS 的性能问题。这样,每个目录只包含有限数量的子目录或文件。

例如如果标识符是 aaaa-bb-cc-ddddeeee,则项目的路径将是 c:\store\aaaa\bbcc\dddd\eeee.dat,限制每个目录到不超过 64k 个子项。

关于.net - 检索/存储数百万个小型二进制对象的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1148122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com