了解KeyValue嵌入式数据存储与文件系统 [英] Understanding KeyValue embedded datastore vs FileSystem

查看:68
本文介绍了了解KeyValue嵌入式数据存储与文件系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于文件系统的使用,我有一个基本问题我想使用嵌入式的KeyValue存储库,该存储库非常注重写操作.(持续)说我的值是a)10千b)1百万并且读取次数和更新次数相等

I have a basic question with regards to FileSystem usage I want to use a embedded KeyValue store, which is very write oriented. (persistent) Say my value size is a) 10 K b) 1 M and read and updates are equal in number

我不能简单地创建包含该值的文件,并且其中的名称充当键.

Cant I simply create files containing the value and there name acting as keys.

与使用LevelValue或RocksDB的KeyValue存储一样快.

Wont it as fast as using a KeyValue store as LevelDB or RocksDB.

有人可以帮我理解吗?

推荐答案

原则上可以,文件系统可以用作键值存储.仅当您查看各个用例和实现中的限制时,这些差异才会出现.

In principle, yes, a filesystem can be used as a key-value store. The differences only come in when you look at individual use cases and limitations in the implementations.

这里没有过多讨论,有些事情可能会大不相同:

Without going into too much details here, there are some things likely to be very different:

  • 文件系统将数据分成固定大小的块.两个文件通常不能占据同一块的一部分.常见的块大小为4-16 KiB;您可以计算出10 KiB示例将导致多少开销.键/值存储往往会考虑较小的数据段.
  • 文件系统中的目录索引通常无法按排序顺序有效地遍历文件名/键.您可以有效地查找特定键,但是如果不读取几乎所有目录条目就无法检索范围.一些键/值存储库(包括LevelDB)支持高效的有序迭代.
  • 某些键/值存储库(包括LevelDB)是可交易的.这意味着您可以将多个更新捆绑在一起,LevelDB将确保所有这些更新都能通过,或者没有一个通过.这对于防止数据不一致非常重要.文件系统很难实施,尤其是涉及多个文件时.
  • 键/值存储区通常尝试使数据在磁盘上保持连续(这样就可以以较少的查找次数来检索数据),而现代文件系统则故意不跨文件执行此操作.在读取许多记录时,这可能会严重影响性能.不过,这在固态磁盘上不是问题.
  • 尽管某些文件系统确实提供了压缩功能,但是它们通常是按文件或按块的.据我所知,LevelDB压缩了整个记录块,有可能产生更好的压缩效果(尽管它们将压缩策略偏向于性能而不是压缩效率).

这篇关于了解KeyValue嵌入式数据存储与文件系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆