在选择我的MySQL模式应用程序时,我面临着一个两难的选择。因此,在我开始之前,这里有一张非常简化的数据库图片:
这里的模式:http://i43.tinypic.com/2wp5lxz.png
在一句话中:对于每个客户,应用程序获取文本数据并将标签附加到所收集的数据上。
作为每个表用法的近似值,下面是我所期望的:
收获过程是永久性的,这意味着大约每15分钟就会有新的数据出现并被标记,这需要一个非常稳定的索引刷新。
我的许多查询都是在特定日期之间选择数据计数,并在特定客户上使用特定标记进行标记(很少涉及多个客户)。
这里是这样的情况,你可以想象这样的数据量,我在数据组织和索引方面面临挑战。再说一遍,这是我的结构的一个非常简约和简化的版本。我的问题是,这样做更好吗?
我所有这些都是在一个MySQL 5.0专用服务器(四核,8 8Go内存)上运行的。我只使用InnoDB,我还有另一个运行狮身人面像的服务器。所以知道这一切,我迫不及待地想听听你对这件事的看法。
谢谢。
多亏了你的回答,我才意识到这个数字是多么疯狂。下面是表的更新、更真实的用法(基于实际服务器,它只是一个基本的rackspace框)。
谢谢。
发布于 2010-06-10 01:22:51
根据我多年使用MySQL的经验,我的两分钱是,你的后一种选择听起来更符合逻辑和现实。
与当前模式相比,每个客户使用一个数据和一个data_tag具有更简单的总体可管理性。第二个选项的编码也会更简单。
您可以询问更多的MySQL专家;您的第二个选择是最好的。
如果你愿意的话,我可以详细介绍,这是一个简单的答案,一个简单的问题,一个大的问题。它是双向的
发布于 2010-03-19 20:06:31
在不了解您的应用程序的情况下,除了您在这里放置的应用程序之外,它还有点难说。您的数据模型非常简单,这对您的好处就像您预期的那样,实际上是数十亿行。我将避免创建超过5k的表,因为如果尝试这样做,您可能会遇到文件描述符问题和缓存限制。
当然,您可能可以将它们解压/配置,但这仍然不是最佳配置。
您是否也在为非键数据创建索引?例如,这些名称列?这可能会减慢您的写入性能,以便备份15分钟的批处理作业。
老实说,如果这是我的申请,我会考虑两种可能的解决方案:
所以,我想简单地说,让MySQL做它做得好的事情,运行更多的它们。或者,如果可能的话,看看像蒙戈这样的东西。
发布于 2010-03-19 20:16:40
嗯,根据我的经验-你确定MySQL甚至是最好的数据库吗?尝试查看Oracle或Server (尽管oracle集群在这里可能有优势)?
如果你认为授权成本会杀死你,让我说你还不知道你需要什么硬件来运行它。一旦你得到SAN的第一份报价,你就需要这样做--你可能会嘲笑相应软件的价格。
只是个主意。
变得更疯狂。
为了有效地处理这个问题,这是一个高端SAN。我们这里不谈论"10盘“,我们谈论的是一个高端的SAN,可能有400张以上的光盘来处理所有这些数据--别忘了,到目前为止,我们还没有任何指数。
我所有这些都是在一个MySQL 5.0专用服务器(四核,8 8Go内存)上运行的。
很好的尝试。这到底对什么有好处?很抱歉问你,但是8gb内存不会有帮助(这里没有印象),去一台256 go的机器.这可能需要AMD和其中一个真正昂贵的Opteron 8000。但你需要内存。
无论如何,这将是世界上最大的数据库安装之一(我怀疑您是否正确地表示了事实)。
您肯定需要一些能够处理这个问题的东西--如果您真的需要这样做的话,Oracle集群或Server集群可能会加快速度。这是远远超出免费数据库所能想到的处理方式的。真的。
而且您需要适当的备份过程(这是MySQL缺乏的)。您还可能喜欢Serve 2008数据页压缩,这可能会使磁盘上的数据大小减少50%左右。不仅是为了节省磁盘成本,而且因为它意味着更少的IO -这直接转化为更高的性能(因为您不能在内存中缓存表)。
尽管我不想这么说,但您可能还想考虑在一个不错的大型机上使用IBM -我不是说在它上运行Linux。由于硬件架构的原因,VMS在处理超大规模数据库方面有着极大的优势。不要问价格;)
https://serverfault.com/questions/124396
复制相似问题