gpt4 book ai didi

file - 了解 KeyValue 嵌入式数据存储与文件系统

转载 作者:行者123 更新时间:2023-12-04 03:00:58 26 4
gpt4 key购买 nike

我有一个关于文件系统使用的基本问题
我想使用一个非常面向写入的嵌入式 KeyValue 存储。 (持久)说我的值(value)大小是
a) 10K
b) 1M
并且读取和更新数量相等

我不能简单地创建包含值和名称作为键的文件。

不会像使用 KeyValue 存储作为 LevelDB 或 RocksDB 一样快。

任何人都可以帮我理解。

最佳答案

原则上,是的,文件系统可以用作键值存储。只有当您查看实现中的单个用例和限制时,才会出现差异。

在这里不赘述,有些事情可能会大不相同:

  • 文件系统将数据拆分为固定大小的块。两个文件通常不能占用同一块的部分。常见的块大小为 4-16 KiB;您可以计算 10 KiB 示例会导致多少开销。键/值存储倾向于考虑较小的数据块。
  • 文件系统中的目录索引通常无法按排序顺序有效地迭代文件名/键。您可以有效地查找特定键,但如果不读取几乎所有目录条目,则无法检索范围。一些键/值存储,包括 LevelDB,支持高效的有序迭代。
  • 一些键/值存储,包括 LevelDB,是事务性的。这意味着您可以将多个更新捆绑在一起,LevelDB 将确保所有这些更新都通过,或者都不通过。这对于防止您的数据变得不一致非常重要。文件系统使这更难实现,尤其是当涉及多个文件时。
  • 键/值存储通常尝试在磁盘上保持数据连续(因此可以通过较少的搜索来检索数据),而现代文件系统故意不跨文件这样做。在读取许多记录时,这会严重影响性能。不过,这在固态磁盘上不是问题。
  • 虽然一些文件系统确实提供了压缩功能,但它们通常是按文件或按块。据我所知,LevelDB 压缩整个记录块,可能会产生更好的压缩效果(尽管他们的压缩策略偏向于性能而不是压缩效率)。
  • 关于file - 了解 KeyValue 嵌入式数据存储与文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715559/

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