根据GitHub,
由于SeaweedFS Filer需要从另一个数据存储(如Cassandra、Scylla DB或HBase)检索文件元数据,然后才能检索实际文件,为什么不使用相同的数据存储来存储实际文件呢?将文件元数据存储在一个数据存储中,而将实际文件存储在SeaweedFS中,有什么好处?
例如,GlusterFS将元数据作为xattrs存储在底层文件系统中,因此不需要外部数据存储。
要求外部数据存储是否不会打败使用SeaweedFS的整个目的,因为它需要两个跳(往返),而不是一个跳?现在我们需要1)从外部存储获取文件元数据2)获取实际文件。如果我们将实际文件存储在外部数据存储中,我们可以在一步中获取它,而不是两步。
SeaweedFS
旨在成为一种简单且高度可扩展的分布式文件系统,使您能够快速存储和获取数十亿个文件。然而,我不理解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)获取实际文件。如果我们将实际文件存储在外部数据存储中,我们可以在一步中获取它,而不是两步。