SeaweedFS文件存储的意义是什么?

4
根据GitHubSeaweedFS旨在成为一种简单且高度可扩展的分布式文件系统,使您能够快速存储和获取数十亿个文件。然而,我不理解SeaweedFS Filer的意义,因为它需要在SeaweedFS之上使用外部数据存储,如所述

在对象存储之上,可选的Filer可以支持目录和POSIX属性。Filer是一个单独的线性可扩展无状态服务器,具有可自定义的元数据存储,例如MySql、Postgres、Redis、Cassandra、HBase、Mongodb、Elastic Search、LevelDB、RocksDB、Sqlite、MemSql、TiDB、Etcd、CockroachDB等。

Filer需要首先从"Filer Store"中查找元数据,这可以是Cassandra/Mysql/Postgres/Redis/LevelDB/etcd/Sqlite等,然后从卷服务器中读取数据。
由于SeaweedFS Filer需要从另一个数据存储(如Cassandra、Scylla DB或HBase)检索文件元数据,然后才能检索实际文件,为什么不使用相同的数据存储来存储实际文件呢?将文件元数据存储在一个数据存储中,而将实际文件存储在SeaweedFS中,有什么好处?
例如,GlusterFS将元数据作为xattrs存储在底层文件系统中,因此不需要外部数据存储。
要求外部数据存储是否不会打败使用SeaweedFS的整个目的,因为它需要两个跳(往返),而不是一个跳?现在我们需要1)从外部存储获取文件元数据2)获取实际文件。如果我们将实际文件存储在外部数据存储中,我们可以在一步中获取它,而不是两步。
1个回答

5

元数据包括每个文件的元数据和目录结构。

前者类似于您提到的 xattrs

后者更像是一个图形数据库,可以通过键值存储或 SQL 存储来实现。

对于键值存储或 SQL 存储,保存大量文件内容数据并不高效,因为由于维护数据排序以进行高效查找,每个键可能需要多次读/写操作。这种写扩大不好,尤其是如果文件大小在 GB/TB/PB 级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接