在阅读了我的另一个问题后,使用关系数据库处理无模式数据,我开始怀疑文件系统是否比关系数据库更适合存储和查询无模式数据。
与其仅仅在 MySQL 之上构建文件系统,为什么不直接将数据保存到文件系统中呢?需要弄清楚索引,但现代文件系统非常稳定,具有复制、快照和备份设施等强大功能,并且可以灵活地存储无模式数据。
但是,我找不到任何人使用文件系统而不是数据库的示例。
我在哪里可以找到更多关于如何将无模式(或“面向文档”)数据库实现为文件系统之上的层的资源?有人使用现代文件系统作为无模式数据库吗?
在阅读了我的另一个问题后,使用关系数据库处理无模式数据,我开始怀疑文件系统是否比关系数据库更适合存储和查询无模式数据。
与其仅仅在 MySQL 之上构建文件系统,为什么不直接将数据保存到文件系统中呢?需要弄清楚索引,但现代文件系统非常稳定,具有复制、快照和备份设施等强大功能,并且可以灵活地存储无模式数据。
但是,我找不到任何人使用文件系统而不是数据库的示例。
我在哪里可以找到更多关于如何将无模式(或“面向文档”)数据库实现为文件系统之上的层的资源?有人使用现代文件系统作为无模式数据库吗?
是的,文件系统可以被视为类似 NOSQL 的数据库系统的特例。它可能有一些限制,在任何设计决策中都应该考虑:
优点: - - 简单、直观。
需要考虑的事情:
元数据的丰富性 - 它存储什么类型的数据,它如何让您查询它们,您是否可以具有分层或多值属性
查询元数据的速度 - 并非所有 fs 都特别优化了大小、日期以外的任何内容。
无法加入查询(尽管这对 NoSQL 来说很常见)
存储使用效率低下(除非文件系统执行块子分配,否则无论大小如何,每个存储的项目通常都会消耗 4-16K)
我在 15 多年前就有了同样的想法,当时托管成本和硬件限制与今天大不相同。
我的主要动机是设计一种能够承受流量高峰的廉价且简单的解决方案。另一个目标是通过消除 SQL 攻击向量来提高应用程序的安全性。
我最终得到了一个简单的面向文档的数据库,更像是 FS 函数的包装器。
从长远来看,出于好奇而开始的个人项目被证明是非常有益的。我将尝试列出优点和缺点。
优点:
缺点:
我的结论是,将文件系统用作数据库最适合由有限数量的管理员维护内容并且很少关注并发写入的应用程序。但是您希望获得尽可能便宜的读数。对于这些情况,这个想法可以节省很多钱。
免责声明:请不要太严厉地评判我 :) 我是一个程序员,我的思维定式是创造者,而不是开箱即用解决方案的用户。我生活在程序员从头开始做很多事情以满足他们的需求的时代,包括......操作系统。我相信个人实验(包括重新发明轮子)对任何人来说都是很好的学习机会。
欢迎您查看我们的Solid File System,它是一个虚拟文件系统产品,内置支持文件元数据和搜索此数据的类似 SQL 的搜索机制。另请阅读描述在不同类型的存储中存储不同类型的数据的好处的文章。
您可能需要考虑的一件事是 Oracle 的 BFILE 数据类型,它是指向磁盘上文件的指针。也许这可能是两全其美?Microsoft SQL Server 似乎不提供此功能。
在 Amazon 的 S3 上有一个很大的实施示例。
这种实现是许多公司正在朝着的方向发展,因为它从根本上比关系数据库更好地扩展。该方法很简单,而且很有效,对于某些问题,它是一个很好的解决方案。以亚马逊的 S3 为例,如果您不想担心自己存储数据的麻烦,它特别适合云存储。