在AWS上调配NoSQL数据库时需要考虑的问题

日期: 2014-10-19 作者:George Lawton翻译:杨宏玉 来源:TechTarget中国 英文

为了部署基于NoSQL的企业应用,亚马逊Web服务(AWS)的基础设施受到了越来越多的关注。企业架构师需要考虑各种各样的挑战,不光如此,在开发数据库架构解决各种问题的同时,如何获得最大效益也是他们需要考虑的。这些挑战包括AWS的短暂本质和其他一系列问题,这些问题引发的原因是多重的,包括AWS托管基础设施之间的细微差别以及NoSQL软件实现之间的差异等。 数据库软件供应商Aerospike创始人兼首席技术官BrianBulkowski表示,尽管存在着这些挑战,但由于AWS的平衡性非常好,所以他的公司决定在AWS上使用NoSQL。

该公司目前能够在一秒钟以内在Aerospike数据库服务器内存中处理……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

为了部署基于NoSQL的企业应用,亚马逊Web服务(AWS)的基础设施受到了越来越多的关注。企业架构师需要考虑各种各样的挑战,不光如此,在开发数据库架构解决各种问题的同时,如何获得最大效益也是他们需要考虑的。这些挑战包括AWS的短暂本质和其他一系列问题,这些问题引发的原因是多重的,包括AWS托管基础设施之间的细微差别以及NoSQL软件实现之间的差异等。

数据库软件供应商Aerospike创始人兼首席技术官BrianBulkowski表示,尽管存在着这些挑战,但由于AWS的平衡性非常好,所以他的公司决定在AWS上使用NoSQL。该公司目前能够在一秒钟以内在Aerospike数据库服务器内存中处理百万笔交易,而Aerospike数据库服务器正是运行在一个亚马逊C3.8x大型实例上。

“这是一个非常适合的模式,能够以较低的成本实现高性能,我们认为这为新公司和大型企业以同样的方式推出实时响应的Web和移动应用程序提供了一种可能。”Bulkowski说。

但Bulkowski发现,亚马逊面临的最大挑战之一是虚拟化运行以及与异构系统共享基础设施。这导致了性能表现的不一致,其性能取决于共享基础设施的其他应用程序正在做什么。开发人员还面临着可靠性方面的挑战,为了保证正常运行的时间,从而需要在不同的数据中心进行服务器运维。

AWS平台提供了多项用来创建数据库应用程序的服务。对于开发人员来说,其所面临的挑战是适当的选择这些服务组合项。例如,开发人员需要了解AWS SimpleDB和AWS DynamoDB之间的差异,并且能够在早期开发阶段追踪这些细节。

短期云

“使用AWS的另一个挑战是,其实例依靠短暂的、高性能的存储。” Couchbase高级产品营销经理Shane Johnson说。如果某个实例被停止,它的数据将丢失。因此,在现有的部署基础上添加新的实例,将会是缺少适当工具的手动过程。

Couchbase服务器进行配置时,将数据复制到多个实例以确保在发生故障切换时,数据不会丢失。 Ansible 和AWSCloudFormation可以在现有部署基础上自动添加新实例。Couchbase服务器备份工具(如cbbackup,cbrestore和cbepctl)可以用来创建数据快照。快照可以永久性存放在亚马逊弹性块存储卷上来进行灾难恢复。

湍流向前

使用AWS的一个好处是,它为开发和部署应用程序提供简单的抽象。这会带来操作和性能方面的问题,因为它可能很难看到引擎底层到底发生了什么。“尽管大家普遍认为分布式数据库是在非特定的廉价计算节点上运行的,但是每个云都不尽相同。” Redis实验室联合创始人兼首席执行官Ofer Bengal说。

为了已供应的资源来调整该系统是必不可少的,但过程却十分耗时。每个云都是独一无二的,并在其内部提供不同的计算、存储、网络等服务。同时,认识到AWS的基础设施是由相互区别的分布式数据中心(即使在同一数据中心内部也不尽相同)组成是非常重要的。

“想要在每个方面都获得最优结果,你必须需要知道自己在做什么。” Bengal补充:“解决数据中心之间差异的一种方法是利用企业内部的IT资源。当然,我们所推荐的是保守路线,一些NoSQL的管理服务和产品可以帮助解决其复杂性。”

尽可能地自动化

在像AWS这样不稳定的环境里工作,最重要的技术之一是使用大量脚本和自动化来建立新环境。这包括在非生产设置中为了重新创建环境而开发一个工具集,这可以使开发人员了解系统是怎样协同运行的。

此外,深度监测建议帮助这些结构的不同组成部分提高可视性,特别是在故障排除方面。如果体系结构设计无误,在充分的能见度的前提之下,它可以在系统内外进行代码更新。这些功能可以帮助增加工程师对其产品自信心,同时也有助于最大限度地减少生产服务的中断。

自动化是一项系统管理员所偏爱的技术,而且自动化工具如Chef 和Ansible等都为系统工程师提供了一个具有开发功能的通用平台。不仅仅是这些工具推进自动化,它们也提供了实际的文档,包括可以GitHub上的工作代码片段(以代码的形式),以及在需要创建新环境时具有可重用性。

在监控方面,新工具(例如Circonus)、开源选项(例如Statsd)和Ganglia(一个可扩展的分布式监控系统)正专注于于为应用程序开发人员编写更多的代码操作、易于消化理解的规范、通过监测预测趋势、故障诊断等问题。这些工具很好地与系统监控集成,可以对幕后正在发生的事情有全面的了解,同时最大限度地减少对生产系统的影响。

注意NoSQL工具之间的差异

现在有20余种NoSQL数据库,每一种都有自己的优势和特色。 对于新人来说,区分数据的特殊需求是十分困难的。每个数据库都需要专业知识水平才能建立并被有效地管理。

了解需要对数据提出什么类型的问题是十分重要的。大多数需求都是全文搜索、时间序列(分析基于时间的数据)、图形结构、地理空间分析和临时报告。除了查询类型,确定哪个数据库具有最优产量以及使用类似于预期的应用案例也是非常关键的。另一个需要考虑的因素是每个数据库在故障模式下的风险以及将如何影响业务。

翻译

杨宏玉
杨宏玉

TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。

相关推荐