深入解析 RDS Serverless 之 Data API

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: RDS Serverless Data API 已发布

前言


云数据库以及Serverless数据库的出现,对传统IT行业产生了巨大影响。用户可以在云中快速启动并运行数据库,而无需关心任何基础设施。随着Serverless以及FaaS的不断成熟,云数据库的发展方向也相应的发生了变化,降本增效越来越受到重视。同时在外界环境的快速变化下,应用程序的快速开发、快速迭代、高扩展性也成为了主要的需求。


阿里云 RDS Serverless Data API 正是在这种背景下诞生的。RDS Serverless Data API 提供了数据库操作接口,用户可以通过HTTPS请求或SDK的方式和数据库进行交互。通过该服务可以降低开发者使用数据库的门槛,同时也减少了开发者管理应用服务器的成本,最终实现化繁为简,降本增效的目标。


传统模式 vs DataAPI模式操作数据库代码量对比:传统模式(鉴权、缓存、连接池等能力还需额外编码)

1.JPG

DataAPI(内置鉴权、缓存、连接池、格式化结果集等各种能力)

2.PNG

什么是Data API ?


Data API 提供了一种安全的、快速扩展的、具有标准化查询和响应格式的API,将应用程序直接与云数据库连接。


Data API 代表了下一代应用程序构建的方式。借助于 Data API,应用程序可以打破与数据库的紧密耦合,并具备易用性、数据安全性、可扩展性、可移植性等特性。


Data API 为数据提供了一个无状态的服务层,这样做不仅可以协调存储和查询,而且还能让应用具备负载均衡的能力,并且让水平扩展变得极其容易。


阿里云 RDS Serverless Data API 无需配置,开箱即用。它可以提供无限的吞吐量并保持始终可用,保障您的应用程序可以在不可预测的负载下平稳运行。


化繁为简 降本增效


RDS Serverless Data Service 的核心目的是帮助用户减少成本,降低开发难度,提高生产效率。


降低使用数据库门槛

通过 RDS Data Service,用户不再需要配置数据库相关的连接信息、连接池等,使用简单的 RDS Data API 即可将数据存储和业务逻辑结合到一起,就算是初级开发人员也能快速上手业务逻辑开发,大大缩短开发周期。


降低使用成本

通过使用 RDS Serverless Data API,一些特定的系统可以免去后端服务,直接从前端请求到数据库,简化系统架构的同时,由于不再需要服务端业务逻辑开发,减少了应用程序开发的人力成本,降低了维护基础设施的风险,而且更便于扩展和快速迭代。

3.JPG

系统架构简化


降低系统风险

对于组件越多越复杂的系统,出故障的风险就越大。通过使用 RDS Data API,将数据持久层从业务逻辑中抽离,可以极大的降低业务系统的复杂度,从而降低系统风险。


整体架构

4.JPG

RDS Data API Service 整体架构


安全认证体系

RDS Serverless Data Service 使用AK/SK + ARN鉴权模式。用户无需在应用程序中存储数据库凭证,只需要使用 Secrets Manager 来存储在调用 RDS Data API 时需要传入的 ARN。RDS Data API 会透明地调用 Secrets Manager,根据用户传入的 AK/SK 和 ARN 进行鉴权。同时,使用 AK/SK + ARN 鉴权模式意味着用户无需在调用 RDS Data API 的时候传入数据库的用户名、密码。由此以来,安全性得以保障。

5.JPG

安全认证流程


服务核心架构

RDS Serverless Data API 的主要服务流程如下:

  1. 接收请求,进行参数初始化,同时保存用户配置
  2. 鉴权,通过则获取数据库连接,失败则直接响应失败信息
  3. SQL 参数合法性校验,验证参数类型是否合法,是否为空等
  4. SQL 参数赋值,将传入的实参赋值给对应的形参
  5. SQL 执行,并获取执行结果
  6. 结果集获取及处理
  7. 根据用户配置,构建返回值,最后响应客户端

6.JPG

服务核心架构


服务能力模型

  • SQL执行

RDS Serverless Data API 支持执行单条 SQL 语句、批处理 SQL 语句,用户可以控制是否返回所需的数据(列元数据、JSON 格式结果集等)。


  • SQL事务

RDS Serverless Data API 支持事务开启、事务提交、事务回滚,用户可以通过在执行 SQL 语句时传入事务ID,将 SQL 置于事务中执行。


  • 事务自动开启

为了保证数据的正确一致性,RDS Serverless Data API 会在用户未指定事务时,自动将 SQL 放置于事务之中执行。如果事务执行过程出错,会自动回滚。


  • 事务超时机制

开发中经常会遇到数据库锁等待超时的问题,为了避免这个问题,RDS Serverless Data API 在从用户开启事务之后开始计时,如果该事务对应的事务ID在一定时间内(3分钟)没有被使用,则会将其认定为超时。如果事务在其提交之前超时,该事务会自动回滚。


  • 结果集大小限制

通过过往开发经验可以看到,很多应用程序会因为读入内存的数据量过大导致内存溢出,进而造成应用程序崩溃,影响业务。因此,RDS Serverless Data API 对查询结果集大小进行了限制(最大不超过 1M),最大程度保障您的应用程序平稳运行。


  • SQL超时运行

如果 DDL 语句在完成运行之前超时中断,可能会导致错误并且损坏数据结构。因此,RDS Data API Service 提供了开关,用于控制是否在请求超时后继续运行SQL。


  • SQL参数化

用户无需根据不同的值来构造重复的SQL语句,RDS Serverless Data API 支持带参数的SQL。在运行时,SQL中的形参会被替换为传入的实参值。


极致性能


RDS Data API 提供近似于原生数据库驱动的性能。


连接池

当第一次调用 API 访问某个数据库实例时,RDS Serverless Data API 会为该数据库实例维护一个连接池,并保持一定数量的连接。当后续请求到来时,不需要和数据库建立新的连接,而是直接从连接池获取连接,以此来获得极致的响应速度。当数据库实例在一段时间内没被访问时,其对应的连接会被销毁,从而释放数据库实例的系统资源。


鉴权缓存

为了安全性,每次调用 RDS Serverless Data API 都会进行鉴权。因此,为了最大程度提高性能, RDS Data API 对鉴权结果进行了缓存。鉴权结果会保留一段时间,在这段时间内,如果用户再次请求并且命中缓存,则直接从缓存中获取鉴权结果,并重置其过期时间。


批处理SQL语句

RDS Serverless Data API 提供了执行批处理 SQL 的 API,用户可以使用一组参数集来运行 DML 语句(INSERT、UPDATE)。与单独的 INSERT 和 UPDATE 语句相比,批处理 SQL 语句可以显著提高性能。这在批量的数据插入和数据更新场景下极为有用。


了解更多


未来 RDS Serverless Data API 会继续大力发展,在产品功能、形态以及兼容性等方面不断提升,持续加强稳定性,让客户更省心,从而更专注于自身业务的发展,合作共赢。


RDS Serverless Data API 已经发布,您可以通过点击「查看详情」来查看产品功能。


作者信息

刘文灼,花名斩夜,RDS全栈工程师,熟悉RDS管控前后端各种技术栈。关于Serverless、Data API任何相关问题,都可以邮件咨询:vogts.wangt@alibaba-inc.com


 / End /  

相关文章
|
3月前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
574 9
|
15天前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
3月前
|
存储 关系型数据库 MySQL
double ,FLOAT还是double(m,n)--深入解析MySQL数据库中双精度浮点数的使用
本文探讨了在MySQL中使用`float`和`double`时指定精度和刻度的影响。对于`float`,指定精度会影响存储大小:0-23位使用4字节单精度存储,24-53位使用8字节双精度存储。而对于`double`,指定精度和刻度对存储空间没有影响,但可以限制数值的输入范围,提高数据的规范性和业务意义。从性能角度看,`float`和`double`的区别不大,但在存储空间和数据输入方面,指定精度和刻度有助于优化和约束。
513 5
|
4月前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
301 3
|
4月前
|
存储 关系型数据库 MySQL
MySQL 字段类型深度解析:VARCHAR(50) 与 VARCHAR(500) 的差异
在MySQL数据库中,`VARCHAR`类型是一种非常灵活的字符串存储类型,它允许存储可变长度的字符串。然而,`VARCHAR(50)`和`VARCHAR(500)`之间的差异不仅仅是长度的不同,它们在存储效率、性能和使用场景上也有所不同。本文将深入探讨这两种字段类型的区别及其对数据库设计的影响。
173 2
|
4月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发深度解析####
本文作为技术性文章,深入探讨了PHP与MySQL结合在动态网站开发中的应用实践,从环境搭建到具体案例实现,旨在为开发者提供一套详尽的实战指南。不同于常规摘要仅概述内容,本文将以“手把手”的教学方式,引导读者逐步构建一个功能完备的动态网站,涵盖前端用户界面设计、后端逻辑处理及数据库高效管理等关键环节,确保读者能够全面掌握PHP与MySQL在动态网站开发中的精髓。 ####
|
4月前
|
存储 关系型数据库 MySQL
MySQL MVCC深度解析:掌握并发控制的艺术
【10月更文挑战第23天】 在数据库领域,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种重要的并发控制机制,它允许多个事务并发执行而不产生冲突。MySQL作为广泛使用的数据库系统,其InnoDB存储引擎就采用了MVCC来处理事务。本文将深入探讨MySQL中的MVCC机制,帮助你在面试中自信应对相关问题。
287 3
|
4月前
|
缓存 关系型数据库 MySQL
MySQL执行计划深度解析:如何做出最优选择
【10月更文挑战第23天】 在数据库查询性能优化中,执行计划的选择至关重要。MySQL通过查询优化器来生成执行计划,但有时不同的执行计划会导致性能差异。理解如何选择合适的执行计划,以及为什么某些计划更优,对于数据库管理员和开发者来说是一项必备技能。
412 2
|
5月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
475 1
|
5月前
|
存储 关系型数据库 MySQL
MySQL中的Redo Log、Undo Log和Binlog:深入解析
【10月更文挑战第21天】在数据库管理系统中,日志是保障数据一致性和完整性的关键机制。MySQL作为一种广泛使用的关系型数据库管理系统,提供了多种日志类型来满足不同的需求。本文将详细介绍MySQL中的Redo Log、Undo Log和Binlog,从背景、业务场景、功能、底层实现原理、使用措施等方面进行详细分析,并通过Java代码示例展示如何与这些日志进行交互。
690 0

相关产品

  • 函数计算