当前位置: 首页 > news >正文

oracle rds 运维服务_我应该为无服务器应用程序选择哪个数据库?

09f5c9398b695158ed28a74764a3bfe1.png

选择正确的数据库对应用程序的成本和性能具有最直接的影响之一。无服务器环境也不例外。通过考虑诸如访问模式,模式(数据模型)和预期性能之类的参数,可以在逻辑上为您的数据库类型做出最佳决策。

通常,数据库具有两种广泛的分类:SQL关系数据库或规范化数据库以及NoSQL或非规范化数据库。对于特定的用例,例如建模图,内存缓存系统等,也出现了第三种分类。

但是在本文中,我们将探讨SQL和NoSQL数据库的某些方面,并研究AWS为这些相应类型的数据库提供的服务。

SQL数据库

SQL或关系数据库使用结构化查询语言来处理数据。它是一种功能强大的语言,是处理数据的最灵活的选择之一。您可以进行复杂的查询以进行检索,如果您要执行OLAP(联机分析处理)数据分析,这将非常方便。

SQL擅长大规模处理多行事务。如果您不完全了解您的应用程序随时间推移可能具有的访问模式并且不期望指数增长,那么这种类型的数据库是正确的选择。

但是,SQL数据库具有其共同的缺点。在开始使用数据库之前,需要先定义模式,这需要进行大量的准备和计划。设置完数据模型后,您将需要在整个应用程序中维护该结构。

由于SQL系统具有垂直扩展能力,因此可扩展性也可能会出现问题。增加更多的CPU和RAM来处理负载可能会变得非常昂贵,并且可以“扩展”的数量有限。您始终可以添加更多服务器或“横向扩展”,但这需要大量的工作并且成本很高。

NoSQL数据库

与SQL不同,NoSQL数据库没有特定的查询语言,并且拥护使用非规范化数据集的概念。

它们的类型包括:

  • 基于文件
  • 键/值对
  • 图形数据
  • 面向列的数据结构

通过将所有内容简单地放入一个具有系统访问模式的集合中,消除了跨表的复杂联接是NoSQL数据库的重点。它们的高性能,可伸缩性和可扩展性使NoSQL非常适合无服务器开发。

NoSQL数据库因能够扩展以处理巨大的OLTP(在线事务处理)工作负载和管理不同的数据集而闻名。另外,更改架构不会中断您当前正在运行的应用程序。

动态模式+最高性能=最佳数据库选项,对吗?并非如此。如果不确定应用程序需要哪种数据模式,那么最好避免NoSQL或先花时间学习NoSQL,然后再动手。

以这种方式思考,由于NoSQL系统具有灵活性和开发人员普遍的熟悉度,因此初创公司可能会通过选择SQL数据库而尽快获得MVP,但NoSQL数据库由于其非常高的性能可以带来未来的收益。可扩展性。唯一的障碍是适当的数据建模,以便有效地满足未来数据访问的需求。

那些从SQL背景开始使用NoSQL而对访问模式没有正确理解的人可能会陷入困境或像使用SQL一样使用NoSQL。随着应用的增长,这也将影响您的应用。

话虽如此,让我们探讨一下Amazon的SQL和NoSQL服务的托管版本:RDS和DynamoDB,以及它们在无服务器应用程序中的性能。

Amazon RDS与DynamoDB

亚马逊RDS

Amazon Relational Database Service(RDS)带有六个引擎供您选择,它们分别是MySQL,PostgreSQL,MariaDB,Oracle,SQL Server和它们自己的实现Aurora。

如前所述,关系数据库遵循结构化数据建模的一组模式,并由用于数据处理的SQL语言控制。因此,如果您决定使用Amazon RDS,则需要注意以下几个关键方面。

您的Lambda函数是按使用付费的,但是您将为RDS实例按小时计费,除非您选择的引擎是Aurora Serverless。

使用Lambda管理连接限制很重要。Lambda确实会在容器到期时终止连接,但是当应用程序处于压力下时,MAX CONNECTIONS问题仍然隐约可见。

利用RDS代理,降低RDS的连接超时,实施缓存策略,限制并发连接等是解决此问题的一些方法。

亚马逊的Aurora数据库服务(MySQL或PostgreSQL)可以证明是一个不错的选择,尤其是在读取性能(跨区域)方面,因为它们具有比RDS同类产品更快的复制能力。

与RDS相比,Aurora在性能和高可用性方面确实存在明显差异,但成本增加。如果您的用例需要,则应选择Aurora。对于完全无服务器的系统,Aurora Serverless可能是下一个最好的选择,但是它的性能还远远不够。

它的主要问题是应对冷启动。理想情况下,应选择Aurora Serverless进行测试或处理小型且不一致的工作负载。

亚马逊DynamoDB

现在,如果DynamoDB是满足您的应用程序存储需求的选择,那么您将获得以下内容。

与大多数NoSQL数据库不同,DynamoDB不是基于服务器的。它是按请求付费的价格,非常适合无服务器方式。这使得完全分布式无服务器系统的想法成为现实。

只要定义了吞吐量限制,DynamoDB实际上就可以拥有无​​限的并发请求。

还有一个名为PAY_PER_REQUEST的附加模型,该模型允许您的DynamoDB数据库缩放为0。

凭借毫秒级的性能,DynamoDB几乎可以处理您承受的所有负载。

如果您需要更好的读取时间,则DAX(DynamoDB加速器)是Amazon提供的完全托管的内存中缓存解决方案。因此,性能和可伸缩性是您对DynamoDB的后顾之忧。

从成本和性能的角度来看,带有Lambda的DynamoDB似乎是一个不错的选择。唯一的障碍是设计表格,以有效地维护应用程序可能具有的各种访问模式。

监控桑德拉

Thundra的无服务器可观察性和监视平台可通过提供有关您的应用程序的可行见解来进一步提高成本和性能。跟踪应用程序的各种服务之间的详细信息,以找出效率低下的区域,然后可以修复这些区域。对于数据库,特别是对于RDS实例,具有对长时间运行的查询的洞察力可以准确地告诉您需要优化应用程序的哪个特定部分。

让我们来概述一下Thundra的样子。一旦签了,Thundra引导您完成您的插装lambda函数的新手上路程序。您的体系结构和仪表板屏幕应如下所示。

结论

我们已经了解了SQL和NoSQL数据库是如何发挥其优势和劣势的。我们还快速浏览了Amazon的数据库服务,以及如何使用Thundra之类的平台对其进行监视如何增强您的指标跟踪功能以进行无服务器优化。

SQL数据库将在大多数用例中完成工作,更不用说它们强大的数据访问和处理功能,前提是您不期望大规模的毫秒级性能。

另一方面,即使在高峰使用时,像DynamoDB这样的NoSQL数据库也可以完成所有繁重的工作,而您不必担心服务器管理或故障转移。

很有可能获得类似于SQL查询的结果,但是DynamoDB需要在数据建模和了解如何为有效访问模式建立索引的索引方面学习。

相关文章:

  • cmd传入命令行打开程序_CMD命令行中以管理员权限启动应用程序实现方法
  • gb和gib的区别_GB和GiB的区别
  • p6与project哪个软件好_多功能记事本软件哪个好?
  • python tensorflow教程推荐_有哪些学习python和tensorflow的书籍值得推荐呢?
  • 计算机网络课设telnet_修改windows的telnet默认根路径
  • centos7安装php5.2yum源操作_centos 7.4系统yum安装php最新版本php7.2
  • 笔记本卡顿不流畅是什么原因_电脑卡顿不流畅是什么原因?PC卡顿原来可以这么解决...
  • web前端行业调研报告_2015 年 JavaScript 开发者调查报告
  • centos7双机搭建_centos 7之keepalived双机热备理论+配置文件详解
  • uni 获取本地文件_uni-app 接口 - 从本地相册选择图片或使用相机拍照
  • oracle 日期改字符格式_oracle中的日期格式及和字符转换
  • chrome切换前端模式_谷歌 Chrome 默认启用HTML5模式
  • payload sql注入_Web安全:SQL注入工具
  • java负数右移_Java中的左移时的负数问题
  • winapi属于底层开发吗_WinAPI简单入门
  • 分享的文章《人生如棋》
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 30天自制操作系统-2
  • Angular 响应式表单 基础例子
  • gulp 教程
  • Javascript基础之Array数组API
  • JavaScript学习总结——原型
  • java正则表式的使用
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux CTF 逆向入门
  • log4j2输出到kafka
  • Python十分钟制作属于你自己的个性logo
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue学习第二天
  • 搭建gitbook 和 访问权限认证
  • 对超线程几个不同角度的解释
  • 坑!为什么View.startAnimation不起作用?
  • 码农张的Bug人生 - 见面之礼
  • 前端学习笔记之观察者模式
  • 如何设计一个比特币钱包服务
  • 一个完整Java Web项目背后的密码
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #HarmonyOS:基础语法
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)(1.13) SiK无线电高级配置(六)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (补)B+树一些思想
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十一)手动添加用户和文件的特殊权限
  • (转)程序员疫苗:代码注入
  • (转载)Linux网络编程入门
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .Net CF下精确的计时器
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 使用 XPath 来读写 XML 文件