InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

云计算中无法使用关系型数据库吗?

作者 Jon Arild Tørresdal 译者 赵劼 发布于 2009年2月23日

领域
运维 & 基础架构,
架构 & 设计
主题
Azure ,
.NET ,
PaaS ,
架构 ,
编程 ,
云计算 ,
数据库 ,
Drizzle

最近对云计算的关注增加了键/值数据库的使用,有关这种存储方式最常见的主题便是其伸缩性。对各厂商来说,即使无需构建高度伸缩的应用程序或服务,云计算的其他一些优势也对它们有着强大的吸引力——尽管良好的伸缩性是云计算的关键要素之一。

目前可以猜测的使用场景有:

  • 创业公司无需在本地服务器上进行投资,只要购买它们的计算和存储即可。
  • 公司想要将现有的应用程序或服务器移植到云上时,它们无需重新架构他们的数据层。
  • 需要在较短的时间段内获得大量计算能力。

Tony Bain最近发布了一篇文章,探讨关系数据库的末日是否已经来临。他将目光对准关系型数据库和键/值数据库的区别,以及从两者选择其一的原因上。根据Tony的说法,关系型数据库在伸缩性上会遇到一些挑战:

当越来越多的应用程序发布于高负荷(例如Web Services)环境中时,它们对伸缩性的需求将会十分明显。首先,它们会迅速增长。其次,它们最终的规模也会非常可观。对于前者来说,我们难以管理单个内部服务器上部署的关系型数据库,例如你的负载一夜之间增加两倍,你升级硬件的速度又能有多快?而后者一直便是关系型数据库在管理上的难点。

他列举了四种选择键/值数据库,而不是关系型数据库原因:

  1. 你的数据是高度面向文件的。
  2. 你的开发环境是高度面向对象的。
  3. 你的数据存储很便宜,并且很容易和合作伙伴的Web Service平台集成。
  4. 你的最先关注的是按需增长,规模庞大的伸缩能力。

David Chappell在他关于Azure服务器平台的文件中简单讨论了这个问题。David提出了在云中使用键/值数据库的多种原因,不过他也谈到:

……微软宣布了一个计划:将SQL Data Service更进一步关系化。与Windows Azure存储不同,SQL Data Service构建于SQL Server之上,使得这种发展更加自然。无论这种模型是什么样的,这个技术的目标是不变的:提供一种伸缩性更强,更可靠,成本更低的云数据库,并适合各种类型的应用程序。

依赖于不同的关系型特性,有以上需求的公司可以更容易地采纳这种技术,并以此降低成本。

类似由Brian Aker发起的Drizzle数据库,它的目标是可伸缩的关系型能力。Drizzle基于MySQL 6.0的原代码,并针对云和网络应用程序进行了优化。现在他们已经从原来的代码中去除了许多功能,并增加了许多新特性:

  • 微内核架构,使Drizzle比MySQL更为模块化
  • 更多接口,如认证和日志记录
  • 多核优化(与MySQL相比)
  • 更少的数据类型
  • 更少的引擎
  • 更少的代码,相对更小并且更易于维护的代码库

Drizzle仍处于Alpha阶段,它为类Unix操作系统开发,目前不支持Windows。

查看英文原文:Is the Relational Database Not an Option in Cloud Computing?

译者 赵劼 网名为老赵,洋名Jeffrey Zhao,写有技术博客“老赵点滴”。关注前沿技术,并致力于开源社区与微软平台的组合优化。

关于数据库服务器的负载增长问题 发表人 Zhang Yida 发表于
Re: 关于数据库服务器的负载增长问题 发表人 wen bob 发表于
Re: 关于数据库服务器的负载增长问题 发表人 Zhang Yida 发表于
  1. 返回顶部

    关于数据库服务器的负载增长问题

    发表人 Zhang Yida

    为什么不考虑采用 Oracle 11g 或 10g 的 RAC Database 呢?用户可以通过动态增加 Cluster Node 来平行扩展数据库服务的负载能力,无需对现有的硬件作改动。
    如果说要解决存储容量的扩展问题的话,也可以采用 ASM(Automatic Storage Management)来动态管理存储。

  2. 返回顶部

    Re: 关于数据库服务器的负载增长问题

    发表人 wen bob

    我们说的是WAN上分布的几百几千台服务器这样的集群,Oracle 11g对此是无能为力的,楼上的看来不理解云啊

  3. 返回顶部

    Re: 关于数据库服务器的负载增长问题

    发表人 Zhang Yida

    谢谢 Bob 的补充。Cloud Computing 作为一项新兴的构架有许多值得学习和探讨的地方。

    然而对于本文以及 Tony Bain 的文中,重点就 Scale Out Capability 来阐述 Key/Value DB 在云应用中将替代 RDBMS,未免有些言之过早。目前的 RDBMS 产品中也有集通常关系型数据库的优越性与可扩展性于一身的,颇具代表性的就是 Oracle Real Application Cluster Database。在维持高度数据整合性的同时实现了接近线性的 Scale Out,并且提供了更高的信赖性——Cluster 中的即使某些 Node 发生故障整个数据库服务也不会因此终止。有兴趣的朋友可以去了解一下更详细的内容。

    如果云的应用中有某些需求是 RDBMS 怎么也无法实现的,我们倒是非常有兴趣来了解一下。

    对应用程序的亲和性似乎更应该成为 Key/Value DB 在云应用中的亮点。对此我觉得 MS SDS 的做法颇值得借鉴,即在 RDBMS 基础上架一层抽象的 Key/Value 数据服务。这一点 Bain 在其文章最后也提到了。

    让不同的技术做各自最擅长的事,然后将他们有机地整合起来,或许是最可行的解决方案。