当前位置: 首页 > 科技观察

知识渊博:Amazon的DynamoDB如何帮助数据库重塑?

时间:2023-03-17 15:55:03 科技观察

Amazon.com早期,SQL数据库功亏一篑,公司开发了DynamoDB;并在此过程中帮助创建了NoSQL市场。DynamoDB是托管在AmazonWebServices云环境中的NoSQL数据库。每个知名电子商务网站都离不开数据库;而在2000年代初,亚马逊的数据库跟不上公司业务发展的需要。部分问题在于亚马逊当时并没有只有一个数据库——它依赖于一系列数据库,每个数据库都有自己的职责。随着该公司成为年收入100亿美元的公司,其SQL数据库的数量和规模急剧增长,并且变得更加难以管理。到2004年的假日购物旺季,服务中断变得更加普遍,这主要是由于SQL数据库不堪重负。似乎有些东西需要改变。但亚马逊没有向公司外部寻求解决方案,而是开发了自己的数据库管理系统。那是一个全新的数据库,它摒弃了传统SQL数据库的规则,可以不断地向上扩展。2007年,亚马逊向世界公布了其研发成果:CTOWernerVogels及其团队发表了一篇名为《Dynamo:亚马逊高可用性的键值存储系统》的文章(http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf)。有人称之为NoSQL数据库市场的诞生。SQL关系数据库的问题已经存在了几十年,最常用于SQL编程语言,它最适合在整洁的表格中组织数据并对其执行查询。他们的成功是无可争辩的:GartnerGroup估计SQL数据库市场价值300亿美元。但从2000年到2005年,亚马逊、雅虎和谷歌等公司面临着SQL数据库根本无法很好满足的数据需求。(不妨给大家科普一下计算机科学知识。CAP定理表明,像大型数据库这样的分布式系统不可能同时具备一致性、可用性和容错性。相比速度和灵活性,SQL数据库更加注重一致性,所以让他们非常适合管理核心企业数据,如金融交易,但他们不能有效地管理其他类型的任务。)以亚马逊的在线购物车服务为例。顾客浏览完电商网站后,将商品放入虚拟购物车,商品被保存起来,以后可以购买。亚马逊需要购物车中的数据随时可供客户使用;丢失购物车数据等同于失去销售。但它并不一定要求全球的每个数据库节点都拥有每个客户唯一的购物车信息。SQL/关系系统消耗大量计算资源来确保分布式系统中数据的一致性,而不是确保信息始终可用并准备好提供给客户。Amazon的Dynamo以及一般的NoSQL数据库的基本原则之一是它们牺牲数据一致性来换取可用性。亚马逊的首要任务是保留购物车数据并迅速提供给客户。此外,系统必须能够灵活扩展以满足亚马逊快速增长的需求。Dynamo解决了所有这些问题:它可以跨节点备份数据,它可以处理大量负载,同时保持快速可靠的性能。“它是早期的NoSQL数据库之一。我们放弃了一致性和非常严格的查询语义,以换取可预测的性能、持久性和可扩展性——这些都是Dynamo非常擅长的东西,”亚马逊DynamoDB技术总监KhawajaShams解释道.几个方面。”#p#DynamoDB是一个云数据库Dynamo解决了许多SQL数据库无法为Amazon解决的问题。但是在2005-2010年,还是没***。Dynamo声称拥有亚马逊工程师需要的功能,但需要大量资源来安装和管理。不过事实证明,2012年推出的DynamoDB是一次重要的升级。Amazon内部使用的数据库托管版本驻留在AmazonWebServices的基础设施即服务(IaaS)云中,并得到全面管理。Amazon工程师和AWS客户不配置数据库或管理数据存储。他们所要做的就是向DynamoDB询问所需的吞吐量。客户每小时支付0.0065美元,即可享受向数据库写入约36000次的服务(即每小时导入数据库的数据量),每月每GB存储在系统中的数据收费0.25美元。如果一个应用程序需要更多的计算能力,只需点击几下鼠标,数据库就会将工作负载分散到更多的节点上。众所周知,AWS对DynamoDB和许多其他IaaS产品的幕后运作方式不透明,但这段宣传视频(https://www.youtube.com/watch?v=oz-7wJJ9HZ0)显示该服务使用固态磁盘,尤其是如果客户使用DynamoDB,他们的数据分散在多个可用区/数据中心,以确保数据可用性。ForresterResearch高级分析师NoelYuhanna称其为“非常强大”的数据库,将其列为键值存储用例的顶级NoSQL数据库。就是这样。自发布以来,DynamoDB已经取得了长足的进步。尽管AWS不愿公布客户数据,但公司工程师JamesHamilton去年11月表示,与2013年相比,DynamoDB每年处理的请求数量增加了两倍,存储的数据量增加了四倍。尽管规模庞大且增长迅速,但DynamoDB一直擅长在短短3到4毫秒内返回查询结果。在功能特性方面,DynamoDB也越来越丰富。NoSQL数据库一般分为几类:键值存储数据库使用键和值来组织和管理信息;文档数据库允许搜索整个文档;图数据库跟踪数据与数据之间的关系。DynamoDB最初是一个键值数据库,但去年AWS支持JSON格式文件,将其转变为文档数据库。去年AWS还为DynamoDB添加了GlobalSecondaryIndexes(全球二级索引),它允许用户拥有数据库的副本,通常一个用于生产,另一个用于查询、分析或测试。NoSQL用例和供应商格局NoSQL数据库的根本优势在于它们可以扩展并具有灵活的数据库架构,这意味着用户可以轻松更改数据结构并对数据执行多个查询。许多新的基于Web的应用程序都是使用NoSQL数据库构建的,例如社交、移动和以游戏为中心的应用程序。虽然亚马逊帮助启动了NoSQL市场,但它现在是数十家试图从NoSQL中发财的供应商之一。GartnerGroup的研究员NickHeudecker强调,虽然NoSQL已经引起了很多开发人员的关注,但它仍然是一项相对较新的技术。他估计来自NoSQL产品的收入每年甚至不会超过5亿美元(这不是GartnerGroup的官方估计)。Heudecker说,绝大多数企业客户的查询仍然是关于SQL数据库的。Huedecker表示,NoSQL的竞争对手:MongoDB、MarkLogic、Couchbase和Datastax也在市场上站稳了脚跟,有些似乎比DynamoDB更受企业客户欢迎。为云而生究竟是什么阻碍了DynamoDB在企业市场取得进展?例如,它没有本地版本——它只在AWS云中可用。Heudecker说,一些用户根本不习惯基于云的数据库。DynamoDB的竞争对手为用户提供了在企业内部防火墙后运行数据库的机会。许多企业仍然从SQL系统中获得很多价值。那些关系数据库管理系统(RDBM)并没有消失——它们仍然非常适合作为企业的记录系统。DynamoDB可能因其仅驻留在云中而受到最多的批评,但AWS人员坚持认为这也是其最大的卖点之一。DynamoDB技术总监KhawajaShams表示,该公司在开发Dynamo时,不得不放弃SQL数据库的旧规则。AWS的DynamoDB技术负责人Shams表示,由于该技术托管在云中,用户不必担心配置或配置任何硬件。他表示,用户只是使用服务,可以根据需要增减服务,只需要为存储空间和吞吐量付费。对于关注安全性的客户,在DynamoDB存储数据时,客户有机会对数据进行加密。此外,DynamoDB还集成了市场领先的IaaS平台AWS(根据GartnerGroup的魔力象限报告),它支持广泛的工具,包括其他关系数据库,例如Aurora和RDS。#p#Adroll借助AWSDynamoDB飙升营销平台提供商Adroll为150个国家/地区的20,000多家客户提供服务,是使用基于云的DynamoDB的众多企业之一。基本上,如果电子商务网站的访问者浏览了产品页面,但没有进行购买,AdRoll会竞标用户访问的另一个网站上的广告位,展示他们之前考虑购买的产品。这种有效的方法可以吸引人们购买他们之前考虑过的产品。但是,确定向哪些用户投放哪些广告对于AdRoll来说确实很复杂。更复杂的是,AdRoll需要在页面加载前后确定是否为广告位出价以及投放哪个广告。这是CTOValentinoVolonghi的工作——他有大约100毫秒的时间来做出决定。大部分时间都被网络延迟所占用,因此不用说AdRoll需要一个可靠且高速的平台。它还需要大规模:AdRoll每天考虑超过600亿次广告展示。AdRoll然后使用DynamoDB和亚马逊的简单存储服务(S3)来存储有关客户的数据并帮助其算法确定客户将购买哪些广告。2013年,AdRoll在DynamoDB中拥有1250亿条数据,如今已增长至0.5万亿条数据。它每秒向系统发出100万次请求,数据每次都在5毫秒内返回。AdRoll又上传了1700万个文件到AmazonS3,占用了超过1.5PB的存储空间。AdRoll无需构建全球数据中心网络来支持其产品,这在很大程度上要归功于DynamoDB的使用。“我们根本不需要派工程师来运行系统,”Volonghi说。“运行这种规模的数据库真的很有趣。”并不是每家公司都会有亚马逊的电子商务网站或AdRoll的实时竞价平台的需求。但许多公司正在想办法在不投入大量资金的情况下实现更大的规模。云使这成为可能,而DynamoDB就是最好的例子。原标题:亚马逊的DynamoDB如何帮助重塑数据库