我经常遇到的一个问题是,我们为什么要提供这么多数据库产品?对我来说,答案很简单:开发人员希望他们的应用程序具有良好的必威体育精装版app官网架构和有效的伸缩能力。为此,他们需要能够在同一个应用程序中使用多个数据库和数据模型。

一个数据库很少能满足多个不同用例的需要。一刀切的单块数据库时代已经过去了,开发人员现在正在使用大量专门构建的数据库构建高度分布式的应用程序。必威体育精装版app官网必威体育精装版app官网开发人员正在做他们最擅长的事情:将复杂的应用程序分解成更小的部分,然后选择最佳的工具来解决每个问题。一项工作的最佳工具通常因用例而异。

几十年来,由于唯一的数据库选择是关系数据库,所以无论应用程序中数据的形状或功能如何,数据都被建模为关系数据库。不是用例驱动数据库的需求,而是相反。数据库驱动应用程序用例的数据模型。关系数据库是专门为规范化模式和在数据库中强制引用完整性而构建的吗?当然,但这里的关键是并非所有应用程序数据模型或用例都匹配关系模型。

正如我之前所说的,其中一个我们创建Amazon DynamoDB的原因当时亚马逊是一个领先的商业数据库,我们无法维持可用性、可伸缩性和性能需求,而这正是我们不断增长的亚马逊业务所要求的。我们发现,大约70%的操作是键-值查找,其中只使用一个主键,并且返回一行。由于不需要引用完整性和事务,我们意识到这些访问模式可以由不同类型的数据库更好地提供服务。此外,随着亚马逊的增长和规模,无限的水平规模需要成为一个关键的设计点——扩大规模根本不是一个选择。这,最终导致DynamoDB,一种非关系数据库服务,构建该服务的目的是扩展到关系数据库的范围之外。

这并不意味着关系数据库在当今的开发中不提供实用程序,而且不可用、不可伸缩或不能提供高性能。必威体育精装版app官网事实正好相反。事实上,我们的客户已经证明了这一点AWS历史上增长最快的服务。我们在Amazon.com所经历的是使用超出其预期用途的数据库。数据库是为某一目的而构建的,匹配用例与数据库将帮助您更快地编写高性能、可伸缩和功能更强大的应用程序。

专用数据库

世界仍然在变化,非关系数据库的类别在继续增长。我们看到越来越多的客户希望构建internet规模的应用程序,这些应用程序需要不同的数据模型。为了满足这些需求,开发人员现在可以选择关系数据库、键值数必威体育精装版app官网据库、文档数据库、图数据库、内存数据库和搜索数据库。每个数据库解决一个或一组特定的问题。

让我们仔细看看这些数据库的目的:

  • 关系:关系数据库是自描述因为它使开发人员能够定义数据库的模式以必威体育精装版app官网及数据库中的行和表之间的关系和约束。必威体育精装版app官网开发人员依赖关系数据库的功能(而不是应用程序代码)来强制执行模式并保持数据库中数据的引用完整性。关系数据库的典型用例包括web和移动应用程序、企业应用程序和在线游戏。Airbnb是客户使用Amazon Aurora构建高性能和可伸缩应用程序的一个很好的例子。Aurora为Airbnb提供了一个完全管理的、可扩展的、功能齐全的服务来运行他们的MySQL工作负载。

  • 键值:键-值数据库是高度可分割的,并允许在其他类型的数据库无法实现的级别上进行水平扩展。游戏、ad技术和物联网等用例特别适合于键值数据模型,其中访问模式需要低延迟的获取/放置已知键值。DynamoDB的目的是为任何级别的工作负载提供一致的个位数毫秒延迟。这种一致的性能是为什么Snapchat故事特性其中包括Snapchat最大的存储写工作量,并转移到了DynamoDB。

  • 文档:文档数据库对于开发人员来说使用起来很直观,因为应用层中的数据通常表示为JS必威体育精装版app官网ON文档。必威体育精装版app官网开发人员可以使用他们在应用程序代码中使用的相同的文档模型格式来持久化数据。易燃物是一个客户使用DynamoDB灵活的模式模型来实现开发人员效率的示例。必威体育精装版app官网

  • 图:图形数据库的目的是简化构建和运行使用高度连接数据集的应用程序。图形数据库的典型用例包括社交网络、推荐引擎、欺诈检测和知识图。亚马逊海王星是一个完全管理的图形数据库服务。Neptune同时支持属性图模型和资源描述框架(RDF),为您提供了两种图api的选择:TinkerPop和RDF/SPARQL。目前的海王星用户正在构建知识图,在游戏中提供建议,并检测欺诈。例如,汤森路透(Thomson Reuters)正利用Neptune帮助客户在错综复杂的全球税收政策和法规网络中导航。

  • 内存:金融服务、电子商务、web和移动应用程序都有像排行榜、会话商店和实时分析这样的用例,这些用例需要微秒响应时间,并且在任何时候都可能出现巨大的流量峰值。我们建立了亚马逊ElastiCache,提供Memcached和Redis服务低延迟,高吞吐量工作负载,如麦当劳,不能使用基于磁盘的数据存储提供服务。亚马逊DynamoDB加速器(DAX)是另一个专门构建数据存储的例子。DAX建于是使DynamoDB读取速度快一个数量级。

  • 搜索:许多应用程序输出日志来帮助开发人员解决问题。必威体育精装版app官网亚马逊Elasticsearch服务(Amazon ES)旨在通过索引、聚合和搜索半结构化日志和指标,为机器生成的数据提供接近实时的可视化和分析。Amazon ES也是一个强大的、高性能的全文搜索用例搜索引擎。Expedia正在使用超过150个Amazon ES域、30 TB数据和300亿个文档,用于各种关键任务用例,从操作监视和故障排除到分布式应用程序堆栈跟踪和定价优化。

使用特定构建的数据库构建应用程序

必威体育精装版app官网开发人员正在构建高度分布式和解耦的应用程序,而AWS允许开发人员通过使用多个AWS服务来构建这些云本地应用程序。以Expedia为例。对于客户来说,Expedia的网站看起来像一个单一的应用程序,但在后台,Expedia.com由许多组件组成,每个组件都有特定的功能。通过将应用程序(如Expedia.com)分解为多个组件,这些组件具有特定的任务(如微服务、容器和)AWSλ),开发人员可以通过增加必威体育精装版app官网规模和性能、减少操作、增加部署敏捷性和允许不同组件独立发展来提高生产率。在构建应用程序时,开发人员可以将每个用例与最适合需要的数必威体育精装版app官网据库配对。

为了使这个现实,看看我们的一些客户使用多种不同的数据库建立他们的应用程序:

  • Airbnb使用DynamoDB存储用户的搜索历史,以便作为个性化搜索的一部分进行快速查找。Airbnb还使用ElastiCache在内存中存储会话状态,以便更快地呈现网站,他们还使用MySQL onAmazon RDS作为他们的主要事务数据库。
  • 第一资本金融公司使用Amazon RDS存储交易数据用于状态管理,Amazon Redshift存储web日志用于需要聚合的分析,DynamoDB存储用户数据以便客户可以通过Capital One应用快速访问他们的信息。
  • Expedia利用Aurora、Amazon Redshift和ElastiCache建立了一个实时的住宿市场价格数据仓库,以及用于内部市场分析的可用性数据。数据仓库使用Redis的ElastiCache执行一个24小时回视窗口的多流联合和自连接。数据仓库还将处理后的数据直接保存到Aurora MySQL和Amazon Redshift中,以支持操作和分析查询。
  • Zynga将Zynga扑克数据库从MySQL场迁移到DynamoDB,并获得了巨大的性能提升。以前需要30秒的查询现在只需1秒。Zynga也使用了ElastiCache (Memcached和Redis)来代替自管理的内存缓存。Aurora的自动化和无服务器可伸缩性使它成为Zynga使用关系数据库的新服务的首选。
  • 强生公司使用Amazon RDS、DynamoDB和Amazon Redshift来最小化收集和提供数据所花费的时间和精力,并允许快速获得洞察力。AWS数据库服务正在帮助强生公司改善医生的工作流程、优化供应链以及发现新药。

正如开发人员不再编写单一的应用程序一样,他们也不再为应用程序中的所有用例使用单一的数据库——他们使用多个数据库。必威体育精装版app官网尽管关系数据库仍然存在,并且仍然非常适合许多用例,但针对键值、文档、图、内存和搜索用例专门构建的数据库可以帮助您优化功能、性能和规模,更重要的是优化客户的体验。建立在。

评论

博客评论Disqus