GitHub认为,SeaweedFS是一个简单且高度可伸缩的分布式文件系统,它使您能够快速地存储和获取数十亿个文件。但是,我不明白SeaweedFS Filer的意义,因为它需要外部数据存储。在SeaweedFS之上
在对象存储的顶部,可选的Filer可以支持目录和POSIX属性。Filer是一个单独的具有可自定义元数据存储的线性可伸缩无状态服务器,例如MySql、Postgres、Redis、Cassandra、HBase、Mongodb、Elastic、LevelDB、RocksDB、Sqlite、MemSql、TiDB、Etcd、CockroachDB等。
要使Filer工作,首先需要“从first查找元数据,它可以是Cassandra/Mysql/Postgres/Redis/LevelDB/etcd/Sqlite"and,然后从卷服务器读取数据。
既然SeaweedFS Filer需要在检索实际文件之前从另一个数据存储区(例如Casandra、Scylla或HBase)检索文件元数据,那么为什么不使用相同的数据存储来存储实际文件呢?将文件元数据存储在一个数据存储中并将实际文件存储在SeaweedFS中会得到什么?
例如,GlusterFS将元数据作为xattrs存储在底层文件系统中,因此不需要外部数据存储。
是否需要一个外部数据存储就会挫败使用SeaweedFS的全部目的,因为它需要两个跳(往返)而不是一个?由于我们现在需要1)从外部存储获取文件元数据( 2)获取实际文件。如果我们将实际文件存储在外部数据存储中,我们可以一步而不是两个步骤获得它。
发布于 2022-05-03 07:22:43
元数据包括每个文件的元数据和目录结构。
正如您所提到的,前者类似于xattrs。
后者更像是一个图形数据库,它可以通过键值存储或SQL存储来实现。
对于键值存储或SQL存储,保存大量文件内容数据并不有效,因为每个键上可能有多次读/写操作,这是因为为了高效查找而保持数据顺序。这种写入放大效果不好,特别是当文件大小为GB/TB/PB时。
https://stackoverflow.com/questions/72038033
复制相似问题