我大多数情况下都使用标准的mysql,但是这个特定的问题将会达到TB级别,我希望能够每秒执行数百个查询。
因此,除了设计我的数据库模式以避免出现瓶颈和快速硬盘速度外,我的最大瓶颈是什么,什么样的解决方案是推荐的?
将数据库分布在我的内部网络上的多台计算机上,以便它可以与CPU / RAM等一起扩展,这样做有意义吗?如果是,是否有相应的软件或数据库解决方案?
感谢任何帮助!我搜索了相关的问题,但没有找到任何东西,所以如果已经问过了,请原谅。
数据库的可扩展性是一个非常复杂的问题;整个过程中有很多问题需要考虑。
首先,考虑最简单的解决方案;你是否有包含大量数据的单独表格(或列)?是否有包含每个BLOB都大于4MB的列?这些可以从数据库中提取出来并存储在平面文件存储系统中,然后仅从数据库中引用;这样一来,许多难以处理的解决方案就可以降到一个可管理的水平。
如果没有,你是否有不同子组表的深度使用模式?如果是这样,那么就有机会将数据库分成不同的功能数据库,并将其分区到不同的服务器上。一个很好的例子是只读数据,例如在Web服务器上生成的数据,它很少被生成(想象一下用户特定的主页数据),但经常被读取;这种类型的数据可以被隔离到一个与其他用户数据分开的数据库(或者再次使用带有引用的平面文件)中。
考虑你的数据库的事务要求;你能够干净地隔离你的事务边界吗,还是会有深度交织的事务在整个数据库中进行?如果你能够隔离你的事务边界,那么又有另一个潜在的有用边界。
这只是涉及到这种事情的一些问题。值得考虑的一件事是,您是否真的需要一个实际上会变得非常庞大的数据库,还是只是想将数据库用作持久性层。如果您只是将数据库用作持久性层,您可能需要重新考虑是否真正需要数据库的关系性质,或者是否可以在更简单的持久性层之上使用较小的关系性覆盖层。(我之所以这样说,是因为许多解决方案似乎可以通过在大型持久性层上使用薄的关系层来解决问题;这值得考虑。)
好的,首先我需要指向这里。 我认为MySQL不会像你想的那样运行。我有一种不好的预感,当我告诉你需要研究Oracle安装时,你会说:“我们没有足够的资金。” 但是,当我建议使用最新/最好的SQL-Server时,你会说:“我们没有实施所需的硬件。” 我担心,如果你使用MySQL,那么数据量将会压垮它。
数据库的可扩展性是一个棘手的问题,您应该考虑可以为您解决这个问题的解决方案。我相信MySQL可以作为解决方案的基础。
水平扩展;即水平扩展数据库(也称为横向扩展)是解决非常大的表和数据库问题的好方法。