首页 > > > Serverless数据库:事件驱动架构的未来
什么是无服务器数据库?
无服务器数据库是无服务器计算的先决条件。这些是专门为不可预测的并且可以快速变化的工作负载而设计的。更重要的是?这样一来,您就可以每秒支付使用的数据库资源的费用。
我们知道云数据库,例如与MySQL或PostgreSQL 兼容的AWS Aurora,它是完全托管的,可自动扩展到64TB的数据库存储。
创建此数据库时,您可以选择所需的实例大小,并且在可预测的工作量,请求速率和处理要求的环境中,这种方法非常有效。

但是,在工作负载不可预测并且每周或每天几分钟的突发请求的情况下,安排适当的容量可能是很多工作。同时,连续付款可能不是最佳解决方案。
这就是无服务器数据库出现的地方。
什么是AWS Aurora Serverless?
“ Amazon Aurora Serverless是针对Amazon Aurora(与MySQL兼容的版本)的按需自动扩展配置,该数据库将根据应用程序的需要自动启动,关闭和扩展容量。它使您无需管理任何数据库实例即可在云中运行数据库。对于偶发,间歇或不可预测的工作负载,这是一种简单,经济高效的选择。”
在此版本中,我们不需要提供大型的“ x”实例类型来支持凌晨3点发生的测试环境,并在一天的剩余时间内保持空闲状态。而且,通过对存储和处理进行单独定价,切换到无服务器数据库可以降低大量成本。
现在,让我们开始吧!
无服务器数据库如何工作?
对于AWS Aurora Serverless,它带有按需自动缩放配置。这意味着数据库将启动,根据您的应用程序的需求扩展容量,并在不使用时关闭数据库。
更重要的是?您可以在云中运行数据库,而无需管理实例或集群
无服务器数据库模型建立在存储和处理分离的基础上。
您可以创建一个端点,并根据需要设置最小和最大容量,然后向该端点发出查询。该端点充当频繁扩展的数据库资源队列的代理。这使您可以在舞台后面进行缩放操作时保持连接的完整性。
存储和处理的分离也带来了另一个好处。您可以轻松缩减到零处理,而只需支付存储需求。每当您的应用程序有需求时,在依靠渴望满足您的请求的“热”资源池的基础上,扩展将在近5秒钟内完成。
您可能还会喜欢: 探索无服务器技术的生态系统特点无服务器数据库
无服务器数据库具有一些令人兴奋的功能,例如:
#1 多租户体系结构:无服务器数据库的优点之一是它们可以充当单个资源池,供组织内的多个项目使用。
对于开发团队来说,这是一个巨大的优势,因为他们不需要构建特定于应用程序的孤立数据源。
由于其多租户架构,这是可能的。这使开发人员可以在同一数据库集群中设置,配置和部署多个应用程序。
#2。动态服务质量:多租户提供了为每个租户分配优先级的可能性。在此之下,您可以为特定的租户分配优先级,从而可以根据其消耗系统资源。
这使运营团队能够在整个组织的项目中最大限度地利用资源。但是,必须记住,这将要求整个数据库集群具有较高的透明度。
通过这种做法,您的资源可以以60-80%的利用率运行。如果观察到任何峰值达到90%或更高,则会导致优先级较低的工作负载受到限制。
例如,高优先级工作负载可能是购买时的问题,而低优先级工作负载则可能是批处理报告过程。
#3。地理分布:鉴于大多数企业都在全球范围内开展业务,这是组织在全球范围内满足其数据需求的前提。
随着数据中心的靠近,实时体验得到了更大程度的增强。此外,由于没有故障点,因此中断风险极不可能发生。
无服务器数据库使您可以在全球范围内复制多个数据集,而无需任何其他工具或自定义开发。嵌入在无服务器数据库网络层中的各种协议可确保其正确响应故障和性能下降。
#4。ACID一致性:我们不可能通过其实时可用性来折衷数据准确性。换句话说,我们无法让无服务器数据库牺牲其事务一致性来提高速度和规模。
无服务器数据库通过新方法对ACID事务进行支持,该新方法对存储数据系统上方的单个层内的排序和调度功能进行了分类。因此,在DBMS与数据存储系统交互之前,将管理从最终用户应用程序传入的查询。
这为集群中的节点提供了足够的时间来决定在写入开始之前哪个节点将处理此事务,同时确保两个同时进行的进程不会修改数据集。以这种方式,有可能在扩展的同时为ACID交易腾出空间。
#5。单一事务查询语言:无服务器数据库可为多个应用程序提供单一资源池。但是,对使用该数据的所有应用程序强加特定数据结构或单一模型可能会对开发团队造成严重问题。同样,通过这种方式,将不可能像原来那样存储数据。
此外,某些应用程序可能需要强大的架构,而某些应用程序可能需要无架构的模型。对于所有这些问题,理想的无服务器数据库支持结构化和非结构化数据。
架构可选性使开发团队能够使用结构化和非结构化数据的用例。它还有利于拥有架构的所有优点,而没有固有的缺点。
无服务器数据库的好处
#1 实时访问:您可以细粒度访问数据。默认情况下,对数据建立索引,并使这些索引立即可用。
这意味着您将能够不断地查询,读取,写入,更新和向无服务器数据库中添加新项目。更重要的是?通过功能可以轻松,即时地进行访问。
#2。无限可伸缩性:无服务器数据库可以根据应用程序的需要在启动或关闭时随时随地进行缩放。
如果您的功能是查询,读取数据或将数据写入同一数据库群集,则它将缩放计算单元(对于Aurora Serverless,为ACU)以处理负载。
由于这种自动化,您的所有功能将能够并行工作,并且保证您的数据是一致的。
#3。高安全性:现代应用程序在全球范围内暴露给不受信任和恶意的受众。
无服务器数据库通过确保与同一数据集交互的所有应用程序都通过相同的访问控制协议来处理此问题。结果,它减少了攻击面,这是企业的重大风险。
#4。可用性:
无服务器数据库可以帮助您减少延迟。通过这种方法,可以从最接近用户的位置读取事件驱动功能中的数据。
#5。无模式:使用模式,您可以处理函数中的任何数据输出。这种“处理一切”方法使将无服务器数据库与您的功能集成起来非常容易。在其他无服务器数据库中不常见的功能。
传统数据库的局限性
随着新技术的出现,传统数据库正在摆脱巨大的局限性。以下是一些影响业务的局限性:
#1 资源超支
为了管理庞大的数据基础架构,公司花费了大量资金。传统的数据库基础结构意味着它们从资源共享中受益甚少,并且他们继续在孤立的团队及其专用资源上浪费金钱。
#2。数据的局部性
为了保持数据可用性和低延迟,该数据库在各个数据中心之间进行复制。但是,由于网络基础结构的原因,无法确保所请求的数据是从同一地理位置返回的。
#3。完成时间更长
即使经过多年的投资,大型组织也经常遇到我们所说的“数据库多样性”问题。在市场上有很多选择的情况下,开发团队很难偶尔为所有这些功能添加功能。结果是完成时间更长。
推荐阅读: AWS Lambda定价:运行无服务器应用程序需要多少费用?无服务器数据库的用例
什么时候使用?
如果您处于以下任何一个阶段,那么无服务器数据库就是您的头等大事:
#1 新应用程序:一天或一周内可能需要使用几分钟的应用程序,
例如,您有一个低容量的博客网站,并且您只想为任何用户访问您的网站的时间付费,这对您很有效,因为您是按秒付费的。
#2。不经常使用的应用程序:您不确定您的用户群将如何扩展。
例如,您已经构建了一个应用程序,却不知道该应用程序将变得多么流行,而且,您也不想冒险,这对您来说很有效。只需创建一个端点,然后让无服务器数据库根据应用程序的需求自动扩展即可。
#3。可变工作量:您可能会在高峰期30分钟左右,每天几次或每年几次看到30分钟左右的应用程序。
例如,诸如HR,预算,运营报告等应用程序具有非常不可预测的高峰时间,因此,无法保留实例。但是,使用无服务器数据库,您不必提供峰值或平均容量。
#4。测试数据库:一个测试数据库,仅在您组织的工作时间内使用,为什么不使用它时要付费?无服务器是最合适的选择,因为它在不使用时会自动关闭。
在哪里使用?

#1 电信与物联网:让我们假设联网汽车的场景。您可以使用事件来触发与汽车警报有关的功能。让我们以检查连接的汽车中的引擎灯打开为例。
创建一个函数,一旦对传感器数据集合进行任何数据更改,就会调用该函数。此外,如果达到阈值限制,则会触发另一个功能,该功能会向保修部门发送通知。
创建另一个功能,一旦满足传感器数据收集的阈值条件,就发送维护邮件。由于所有这些事件都需要实时发生,因此无服务器数据库可在此处用作最可行的解决方案。
#2。金融:让我们以金融应用为例。通过这些应用程序,您可以使用事件来触发与特定用户的银行帐户相关的功能。只要账户余额低于一定限额,就可以设置此功能。
通过API调用,您可以访问存储在无服务器数据库中的数据。可以将这些功能的调用条件设置为每周或每月,并且可以将其视为低余额。由于您无法预测这些事件的发生,因此无服务器数据库是最好的。
#3。市场营销与零售:让我们以零售业务为例。每当用户在购物车中添加特定商品时,您都可以设置功能来触发其他业务渠道组件,例如更新库存总额或将某些产品的客户信息发送给营销部门,然后由营销部门向他们发送促销邮件。
在这种情况下,由于该功能已与应用程序和数据库本身分离,因此您无需一直保持旋转状态。
#4。电子商务:让我们以电子商务应用程序为例,在这种情况下,不可避免要进行第三方付款。无服务器数据库可让您安全地调用这些付款API,而无需设置自己的服务器,从而简化了用户体验。
当用户付款时,您收集他们的付款信息并将其传递到数据库,然后通过通过HTTPS向第三方付款处理API发出请求来处理他们的付款,将订单写入无服务器数据库,然后返回完成后向用户发送确认消息。全部安全,无需管理服务器。
无服务器数据库供应商
市场上有许多无服务器的数据库选项,其中大多数可以在制作无服务器应用程序时使用。但是,以下数据库应该是首选,因为它们纯粹是要与功能一起使用,并且由于其两个独特的功能-定价和实时响应性而脱颖而出。
#1 Firebase实时数据库
Firebase实时数据库使您可以使用云托管的NoSQL数据库在用户和设备之间实时存储和同步数据。更新的数据以毫秒为单位在连接的设备之间同步。更重要的是,即使您的应用程序离线,数据仍然可用,无论网络连接如何,都可提供出色的用户体验。
#2。动物数据库
它是在地面上构建的唯一可满足无服务器应用程序需求的云数据库。FaunaDB相信,如果您不管理服务器,也不管理数据库。没有配置,实用程序定价和内置安全性是FaunaDB的一些突出功能,这使得FaunaDB成为构建无服务器应用程序的团队的理想选择。
#3。AWS Aurora无服务器
Aurora Serverless是Aurora的按需自动缩放配置,该数据库将根据应用程序的需要启动和关闭数据库。管理数据库实例和容量并不复杂。它建立在相同的容错,分布式和自我修复的Aurora存储上,并具有6向复制功能,可防止数据丢失。
#4。Azure CosmosDB
Azure CosmosDB是一个多模型数据库,其核心功能是全球分布和水平可伸缩性。通过根据用户的位置透明地扩展和复制数据,它提供了跨任意多个Azure区域的总承包全球分布。更重要的是,CosmosDB保证在世界任何地方的第99个百分位处的单位毫秒毫秒的延迟。
结论
无服务器数据库的未来,特别是AWS Aurora Serverless 的未来,看起来充满希望。这项现代技术的功能使我们能够将注意力集中在诸如实时访问,可伸缩性,安全性和可用性等要素上。
话虽如此,一次放弃所有现有数据库是不可行的。基础架构管理具有挑战性,您最终可能会因为管理数据库的实际问题而失去焦点。
原文作者:;如有侵权,请联系管理员删除。