现在的“技术和实现”是通过使用单个服务器和他们的硬盘来形成一个“网格/云文件系统”来获得无限容量的文件系统?
我需要有无限的空间(通过添加更多的服务器),但它必须是能够在上面运行数据库的filesysem。
我知道的Apache Hadoop,但这似乎不是理想的运行数据库的顶部(或者我错了吗?)
而iSCSI似乎是“远程/networking”,但我不知道如何以及如果这是可聚集的?
非常感谢你!! 延
两个字:愚蠢的想法。 这就像是问“用40吨卡车赢得配方奶粉的最佳方式是什么”。 分布式文件系统和数据库存储系统之间的devise原则是正交的 – 它们的目标完全不同。 实际上,大多数正确的数据库将尝试生活在一个文件中 – 所以它们最终在一个(不受控制的)节点(每个文件)。
对于需要定义IO性能的数据库,严格优化的延迟 – 您会执行大量非常重要的IO操作。 实际上,更大的数据库存储系统是围绕IOPSdevise的 – 每秒IO操作 – 优化延迟。 存储容量通常不是关键 – 在SSD购买之前,您购买的光盘不是主要用于空间,而是用于IO性能。 我曾经有一次有机会使用一个数据库在一个SAN中分发超过190张光盘 – 因为它需要hibernateIO性能。 光盘不是特别满。
对于分布式文件系统,您希望易于pipe理,位置透明,专注于存储大小而不是定义的IO性能。 实际上,您不能保证IO性能达到足够好的水平,因为您将得到一个非常不可靠(如:可以改变)的基础架构。 您依赖于caching来处理许多部分的性能,这与数据库本身是多余的,在适当的优化数据库情况下不起作用。
一辆是40吨的搬运物品的卡车,另一辆是高度调配的一辆车。 你不会让他们进入同一条船,因为他们是根据不同的假设devise的。
除非你在节点之间有很大的带宽,否则我不认为这是会飞的。
例如,您可以使用drbd设置一个分布式块设备,然后在几个盒子上运行RAID设置,将FS安装在单个节点上并运行数据库服务器。 但是除非你有局域网级别的通信性能,否则性能将会非常糟糕。
你在你的数据库中存储哪些不适合单个服务器? 购买多个盒子与一个大型服务器真的比较便宜吗?
你看过分片吗?
你是否在你的数据库中存储文件? 如果你是,你能把它们分开吗?
这取决于你正在谈论的数据库的types。
如果你正在寻找一个像MySQL或PostgreSQL这样的基于SQL的数据库,那么你就会吠叫错误的树(有几个有趣的例外,见下文)。
如果你想要运行像Cassandra或HBase这样的关键价值商店,请继续阅读。 当分区algorithm保持顺序时,您可以执行类似于在SQL中可以执行的操作的操作,除了必须手动进行连接,并且您可以利用map-reduce实现聚合和更复杂的分析任务(取决于在数据库平台上),可能在像Pig和Hive这样的项目的帮助下。
对于Cassandra,您不需要特定的文件系统。 同样,如果你需要运行查询并且有类似于索引的东西,那么你会想要使用一个保留顺序的分区algorithm。
对于HBase,您需要使用HDFS作为基础FS。 HyperTable用于在HDFS或KFS下工作; 现在,我没有看到任何关于KFS的提及,但我也看到了一些能够像Cassandra一样独立工作的东西。 我不太确定在HyperTable上进行分区和sorting,但是我知道HBase默认情况下按顺序存储logging并支持索引。
现在有趣的例外。
有一个名为Hadoop DB的项目,它将PostgreSQL与Hadoop集成在一起,并且可能会根据您所要做的事情来满足您的需求。
还有一个疯狂的想法,就是为MySQL编写一个存储引擎,与上面的系统之一进行交互。 数据存储,索引和检索将成为你的工作,MySQL的一方将为你完成连接和聚合等。 如果您select支持交易,您还需要协调交易。 这意味着你可以有多个负载平衡的MySQL服务器与一个庞大的HBase群集通话。 唯一缺less的是能够推出map-reduce任务,以便对数据集的大部分进行聚合和分析,从而提高效率。 但是您可以在MySQL之外定期执行此操作,并将分析结果存储在另一个可以使用MySQL查询的表中,具体取决于您的需要。
一个相对简单的方法是在像Linode这样的供应商处创build一个虚拟机安装。 他们提供大多数Linux发行版的预装版本。
在LVM下pipe理您的存储。 如果您需要更多的存储空间,供应商可以为您添加它 – 只需让LVM将其他卷添加到卷组。
你使用哪个文件系统是一个单独的问题。