3

我正在为 Web 应用程序选择一个平台。

我了解云计算如何扩展前端服务器,但它们如何处理数据库服务器?

开发人员需要做些什么来实现这一点吗?

4

7 回答 7

2

一般来说,是的。跨多台机器扩展数据库的最常见方法是使用列存储。这样一来,表中的每一列都可以存储在单独的机器上,从而显着增加了可用于搜索的 CPU 功率和带宽。搜索也可以并行进行,对 company 列的搜索只会访问一台服务器,因此对 year 列的搜索不会变慢。

根据我的阅读,这就是 Google 的 MapReduce 的工作原理。

维基百科的专栏商店页面的好处部分特别有用。

同样,OLAP也很有趣。OLAP 完全改变了读/写的权衡。对于大型复杂的查询,查询和读取速度很快,但写入新数据需要耗时的重建过程。

于 2009-06-18T14:36:06.127 回答
1

简短的回答:是的。

长答案:这取决于。需要进行什么样的处理?可以缩小地图吗?这类事情有很多解决方案。分布式缓存 la memcache 还可以帮助扩展后端中的许多服务。

于 2009-06-18T13:41:35.830 回答
1

这在很大程度上取决于您为后端选择的解决方案。一些应用程序使用混合来处理不同类型的数据。

当需要扩展时,很难使用 MySQL 或 PostgreSQL 等数据库。对于我们的项目,我们决定使用 Cassandra(在您询问的时候可能还不存在!),它允许您将数据存储在任意数量的后端计算机上。在这样做时,您还允许后端进程在完全独立的计算机上运行,​​这样您就可以进行各种计算,而无需降低数据库或前端(即 Apache)的速度。

我在此页面上的项目中谈到了这一点:

http://snapwebsites.org/implementation/snap-websites-processes

搜索“过程”一词。还有一个代表不同进程的图像,每个进程都可以在单独的计算机上运行(如果你有这么大的负载,你需要更多的马力):

在此处输入图像描述

实际上还有一些 Snap!该示例中显示的后端可以在多台计算机上运行,​​而一个实例处理这个网站,另一个实例将处理另一个网站。相当强大。

于 2014-03-01T00:33:50.003 回答
0

如果您使用的云提供商只是为您提供对虚拟机的 ssh 访问权限,则您需要实现自己的数据库扩展。如果您在 Google AppEngine、Intuit 合作伙伴平台或类似平台上运行,则可扩展性内置于提供给您的数据存储中。

基本上,云计算并没有什么神奇之处。为了获得这种内置的可扩展性,你放弃了一些自由。Google 的数据存储并没有提供完整关系数据库的所有方面,但您可以扩展到荒谬的流量。

于 2009-06-18T13:42:06.577 回答
0

Amazon 和 Google 使用数据存储,它不同于传统的 RDBMS。

您可以通过以下链接找到更多背景信息

您可以在此处找到一个简短的数据存储列表

于 2009-06-18T13:47:29.920 回答
0

这取决于数据库

Slicehost 使用 MySQL Cluster,Google 使用 map-reduce hype 等。取决于云提供商他们使用的数据库

其他人只是提供一个虚拟机,您在具有私有 IP 的虚拟机上设置自己的数据库

于 2009-06-18T13:37:56.557 回答
0

至于如何,我最近发现了一篇专门针对这个的论文。在一次讲座中讨论过,所以虽然我对论文的内容很熟悉,但我自己并没有读过。尽管如此,讲座还是有非常有趣的想法:http ://reports-archive.adm.cs.cmu.edu/anon/2008/CMU-CS-08-150.pdf

于 2009-06-29T19:20:21.370 回答