【问题标题】:Any key-value storages with emphasis on compression?任何强调压缩的键值存储?
【发布时间】:2015-05-12 09:24:22
【问题描述】:
是否有任何符合以下标准的键值存储?
- 是开源的
- 持久文件存储
- 有复制和oplog
- 具有可配置的压缩,可用于每秒存储 10-100 兆字节的原始文本
- 在 windows 和 linux 上工作
所需的界面应至少包含:
【问题讨论】:
标签:
compression
distributed
key-value-store
【解决方案1】:
wiredtiger 确实支持不同类型的压缩:
压缩注意事项
WiredTiger 分几个阶段压缩数据以保留内存和
磁盘空间。应用程序可以配置这些不同的压缩
算法来定制内存、磁盘和 CPU 之间的要求
消耗。块压缩工作以外的压缩算法
通过修改键和值的表示方式,从而减少
内存和磁盘上的数据大小。另一方面,块压缩
以二进制表示形式压缩数据,同时将其保存在
磁盘。
配置压缩可能会改变应用程序的吞吐量。为了
例如,在使用固态驱动器的应用程序中(其中 I/O 较少
昂贵),关闭压缩可能会增加应用程序
通过降低 CPU 成本来提高性能;在 I/O 成本高的应用中
更昂贵,打开压缩可能会增加应用程序
通过减少 I/O 操作的总数来提高性能。
WiredTiger 使用一些内部算法来压缩
存储的数据不可配置,但始终打开。例如,
运行长度通过存储顺序来降低大小要求,
存储中的重复值仅一次(具有关联的
计数)。
wiredtiger 支持不同类型的压缩:
- 键前缀
- 字典
- 霍夫曼
- 以及支持 lz4、snappy、zlib 和 zstd 等内容的块压缩。
查看documentation 以获取该主题的完整封面。