如果你是一个足够聪明的工程师,你可以用数据库的方式来定义文件系统,比如…
… 如果你是一个足够聪明的工程师,你可以用数据库的方式来定义文件系统,正如iCloud所证明的那样。我个人曾利用这个知识,用Cassandra来存储HLS流的视频块。这让我可以享受到Cassandra的很多分布式优势,但代价是需要重新实现一些文件系统功能。[1] 我知道这非常简化;我只是在非常高层次地谈论这个问题。
源讨论苹果构建了iCloud来存储数十亿个数据库原帖 189 条评论 · 导入时统计… 如果你是一个足够聪明的工程师,你可以用数据库的方式来定义文件系统,正如iCloud所证明的那样。我个人曾利用这个知识,用Cassandra来存储HLS流的视频块。这让我可以享受到Cassandra的很多分布式优势,但代价是需要重新实现一些文件系统功能。[1] 我知道这非常简化;我只是在非常高层次地谈论这个问题。
源讨论苹果构建了iCloud来存储数十亿个数据库原帖 189 条评论 · 导入时统计把你的经验,加入这段讨论。
如果我理解正确的话,bcachefs,这个新的热门文件系统,非常类似于数据库——也许有人更了解这个。
完整原文这就是亚马逊打造Aurora的方式。将所有状态转移到对象存储层,而该层也是处理的最终环节(你经过负载均衡器,然后是前端,然后是后端,然后是数据库,最终存储到磁盘上)。 无状态基本上是将所有东西都转移到后端。 我相当确定谷歌也在做同样的事情/一开始就是这样做的。 此外,这使得横向扩展变得‘容易’:一旦你能够在对象层面进行抽象,你就可以将底层基础设施扩展为仅处理‘对象’。
完整原文> 其实数据库和文件系统之间并没有太大的区别。 这就是当年WinFS所承诺的,如果微软能够成功实现的话,那将会是非常了不起的。 我仍然记得当时的炒作,我认为这完全是合理的,可惜事情并没有实现。我真的认为这个项目本可以改变我们今天所知的计算方式。
完整原文如果你查看WinFS(这是一个原本计划随Windows Longhorn一起发布的已取消的Windows文件系统),它的基本原理正是如此,即作为一个恰好能作为文件系统使用的数据库。 我不确定它失败的确切原因,但我认为在当时,这可能不是一个合适的想法,因为大多数消费级设备(尤其是笔记本电脑)都配备了非常缓慢的传统硬盘,但在NVMe存储的时代,也许值得重新考虑,假设微软仍然有兴趣在除了更好的广告投放机制之外的方面推动Windows的有意义发展。
完整原文你其实不需要成为一个聪明的工程师,因为这里已经有现成的实现可以使用。 例如,如果你有一个Oracle数据库,那么它有一个叫做DBFS的功能,已经可以做到这一点: https://docs.oracle.com/en/database/oracle/oracle-database/2... 你可以使用数据库表实例化一个兼容POSIX的文件系统,然后使用FUSE将其挂载。从那里你可以通过NFS导出它。你也可以通过WebDAV导出文件系统,从而使用Windows或macOS内置的WebDAV支持在网络中挂载它。 如果你想以事务方式操作这个文件系统,就必须使用PL/SQL来实现。POSIX并没有定义文件系统事务的API,因此需要采用其他方法。 因为数据存储在数据库中,你也可以使用关系型数据库的其他功能,比如集群、复制、加密、压缩,如果需要的话,还可以对文件内容维护索引…
完整原文我不同意,因为查询是大多数通常意义上的数据库的重要功能,所以我认为文件系统只是数据库的一个子集。
完整原文> 数据库和文件系统之间其实并没有真正的区别 在我为将我的应用程序迁移到FoundationDB做准备而编写了一个接口之后,我完全不同意这个观点。 甚至“有正确的索引”这一点我们可能也无法达成一致。例如,在我的情况下,我非常满意我的索引是在我的应用程序代码中用我的语言计算的,而不是被限制在数据库决定的“可索引字段”和“可索引类型”的任意概念中。 然后还有正确的事务,版本戳(用于键和值),以及在分布式数据库中流式传输大量数据,这与文件系统完全不同。
完整原文我记得在80年代的时候,我觉得如果文件系统能像关系型数据库那样组织起来会是非常棒的事情。文件可以轻松地存在于多个位置,任何类型的元数据都可以很容易地应用到文件上并进行查询。 ⸻ 1. 我在暑假期间读过关于数据库范式的原始论文,当时我对数据库非常着迷。我当时还很年轻。
完整原文尊重不同观点,分享具体经验。
登录后即可发帖、评论、转发和引用。