如何存储大量小文本文件并快速访问?

问题描述 投票:0回答:1

我需要存储大量小文本文件(约30亿个,每天增长70m),大小从100B到几kB。我可以将它们分组,但组中的项目数量不可预测:从 1 到 100m。有2个要求:

  • 通过ID快速访问(每个文件都有一个唯一的密钥)
  • 尽可能紧凑地存储它们,最好进行压缩

实际上我可以做一个层次结构并将它们存储在文件系统中(我也可以使用ZFS在其之上进行压缩),但是我担心我浪费了太多空间,因为文件的平均大小大约只有1Kb。

我查看了 HBase 和 Cassandra,我认为它们对我来说太过分了,我不需要分片和其他功能。最近我发现了RocksDB。也许存在一些轻量级的解决方案?

cassandra bigdata hbase rocksdb file-storage
1个回答
0
投票

这是 Cassandra 的一个非常好的用例。

您可以使用文件ID作为分区键,拥有数十亿个文件(分区)根本不是问题,并且通过ID检索会非常快。将文本文件的内容存储在 CQL

text
类型的列中。由于它只是一堆文本,因此它会在磁盘上自动严重压缩。

这是一个表定义示例:

CREATE TABLE files_by_id (
    file_id int PRIMARY KEY,
    content text
)

当然,您可以将文件 ID 存储为 CQL 类型

uuid
甚至
text
,具体取决于 ID 是什么。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.