文明的升级依靠工具的升级:揭秘下一代云数据库引擎MyBase for PostgreSQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 在MyBase中,PG引擎除了包含RDS所有的能力,还包含GIS、分词搜索、精准营销、复杂SQL、Oracle兼容扩展和图像识别等核心能力。

一、PostgreSQL引擎核心能力


640-24.png

PostgreSQL功能图


在MyBase中,PG引擎除了包含RDS所有的能力,还包含GIS、分词搜索、精准营销、复杂SQL、Oracle兼容扩展和图像识别等核心能力。


1.GIS


GIS是一个地理信息系统,随着移动的终端还有带GPS传感器的普及,实际很多的业务里都有经纬度的信息。


以共享单车为例,车内装有GPS系统,方便用户查看自己的行驶轨迹,同时后台可以做行为轨迹的分析,共享单车使用的热点等都与GIS相关。


针对GIS这块功能,我们有一个强大的时空内核研发团队在做支持,目前GIS相比较于开源的版本有50倍的性能提升,这里面主要体现在移动对象处理。


移动对象处理通常使用在公安缉查等方面,例如公安锁定了某位嫌疑人之后,可以通过移动对象信息查询到他的轨迹,根据嫌疑人的轨迹迅速锁定相似轨迹或有密切接触的对象,有效提高公安办案效率,是一个具有特殊社会价值的功能。


2.分词搜索


分词搜索是PG引擎里的一大特色。


分词搜索目前广泛存在于各个业务场景,如文档系统,社交聊天系统等。单独建一个搜索引擎需要很大的成本,包含硬件成本,软件成本,维护成本等。


对于企业来说,首先本身数据库的数据量并不算很大,其次单独建立一个搜索引擎,意味着要将数据库的数据同步到搜索引擎,将会引出许多问题,例如同步的延迟,如果是异构数据库的话可能导致数据不一致,因此单独建立一个搜索引擎对企业来说,性价比十分低。


PG引擎内置的分词搜索解决了企业的这个难题,且相较于传统关系型数据库,性能提升了1000倍。


3.精准营销


精准营销常见于销售业务相关场景。


精准营销通常涉及根据用户行为构造用户画像,然后查询用户的兴趣点,根据用户的兴趣点进行搜索,这里我们支持了向量相似的索引。


我们根据用户本身的特征或商品的特征进行数字化,就会储存浮点向量。然后我们基于浮点向量做相似检索,这种方式相较于全盘扫描,性能上有提升了1500倍,在千万级别的向量里可以做到毫秒级的相似召回。


4.复杂SQL


随着业务的发展,如今的业务已经不像以前那样 简单的增删改查,完全没有连表的查询。如今的业务,特别是企业上云,许多企业的ERP系统、CRM系统里的关系都特别复杂,可能存在几十上百张表的关联。


PG引擎针对这一块做出许多优化,相较于其他引擎,PG的性能提升20倍以上。


5.Oracle兼容扩展


目前PG在数据库领域的地位与Oracle旗鼓相当,是一个功能全面的产品,因此PG引擎内置Oracle兼容扩展包,可以兼容最常见的一些数据类型、函数和package。


6.图像识别


PG引擎与蚂蚁联合推出的图像识别插件:pase,这个插件相较于暴力计算的图像识别,性能提升了2万倍,已经被广泛应用于新零售商店、银行网点。



二、使用云数据库服务给DBA带来的问题


(一)问题一:架构、监控、优化等


  • 解决这些问题主要存在以下几个困难:
  1. 当无法解决架构问题时,许多用户会选择放弃原有数据库,选择其他类型的数据库产品重新构建数据库,这样往往导致原有的机器堆积,耗费高昂的人力、资源与精力,并且不一定能解决问题;
  2. 公司选择培养对应方面的人才来解决问题,但存在学习时间周期长,并且人才流失情况严重,对公司造成一定损失;
  3. 如果招聘相应的高端人才来解决问题,除了在招聘上的难度,还需要配备1对1的Backup防止特殊情况发生,这会造成工作强度不饱和,成本较高;
  4. 求助搜索引擎或者社区,响应时间过长,无法及时解决问题。


  • 针对以上问题,使用PostgreSQL有以下几个优点:
  1. 上千位资深PostgreSQL专家组成的资源池,7*24技术咨询;
  2. DBA可以将更多时间投入到业务优化、架构设计等关键事务,消除能效比较低的重复劳动,为企业创造更多价值。


(二)问题二:Bug


Bug分为社区内核Bug与插件Bug。


  • 常见的社区Bug解决方法:
  1. 报告给社区,用时1天左右;
  2. 等待社区修复,用时2~5天左右(理想情况);
  3. 下载社区Patch,自行验证,用时5天左右;
  4. 制定升级计划,升级,用时1天左右。


  • 常见的插件Bug解决方法:
  1. 报告插件作者,用时1天左右;
  2. 等待作者修复,用时5天以上,时长无法保证;
  3. 下载Patch,自行验证,用时5天左右;
  4. 升级插件,用时1天左右。


  • 针对Bug问题,使用阿里云PostgreSQL有以下好处:
  1. AliPG兼容开源PostgreSQL,阿里云专业内核团队为AliPG代码兜底;
  2. AliPG与公共云一套源码,大量商业用户应用的选择,有BUG尽早修复;
  3. 用户可在云端点升级版本按钮,或配置自动升级任务解决问题。


(三)问题三:无法满足业务需求


当前开源数据库在某些情况下可能无法满足业务需求,用户需要有内核研发能力才能自己添加功能,例如以下常见的社区版本无法满足的安全问题:

  1. DBA、SA有权查看、篡改、删除敏感数据;
  2. 普通用户可以通过Security Invoker属性来设置陷阱函数;
  3. 敏感信息(例如用户密码)可能明文出现在SQL审计日志、历史SQL命令、共享内存(例如会话状态、pg_stat_statements跟踪会话)、DBlink视图、外部表User Mapping的定义中。


  • 针对以上问题,使用PostgreSQL有以下几个优点:
  1. AliPG拥有大量商业用户,覆盖众多行业,AliPG围绕行业痛点,不断扩展实用功能;
  2. 自研插件18款(详见产品手册),覆盖GIS,冷热分离,分词搜索,图像识别,安全加固等场景。



三、PostgreSQL在MyBase的核心能力


阿里云提前洞察行业需求,用技术帮助客户突破商业边界。PostgreSQL核心能力主要体现在三个部分:更快的业务体验价值、更稳和更安全的核心业务必要能力,以下进行详细拆解分析。


(一)提升更快的业务体验价值:更快


阿里云在研发产品的同时一直与客户保持沟通与交流,了解行业场景存在的问题,阿里云基于这些场景问题做出如下优化:

  1. 图像识别、向量相似搜索
  2. 实时营销、用户画像
  3. 短视频、实时推荐
  4. GIS MOD移动对象处理


阿里云PostgreSQL使用了蚂蚁集团的人脸识别技术,在数据库里使用了新的索引结构。我们知道,如果要做到快速查询,需要在查询前做好预计算,或者让数据库存储适合查询。因此我们使用了两种图像搜索的算法,重新组织图像的特征值(即浮点),使得性能提升了20000倍。


我们通过与短视频或社交类行业的公司接触,根据用户的喜好在内核做了优化,在向量相似搜索方面取得了上千倍的性能提升。


实时营销中会有跟用户画像相关的数据组织,在移动对象的处理如协助公安办案等方面也有一个性能的大幅提升。


(二)核心业务必要能力:更稳


  • 更稳体现在Paas多租户场景:

大并发大量元数据、大量连接优化;

资源隔离优化。


在数据库中特别是在PG里面,如果连1万个连接再去跑TPCB的话,存在许多更新、插入的操作,导致性能直线下降。AliPG针对这个问题做了大量连接、进程内耗的优化。


所谓的租户业务场景如SaaS类的业务包含了许多企业,在这种数据库里会有上千万个Scheme,有许多原数据。这里可能出现资源之间相互争抢,某一企业使用时将资源全部用光,从而影响其他的企业。我们通过将资源隔离优化,从而使得企业在使用数据库时不会与其他企业产生资源争夺的情况。


(三)核心业务必要能力:更安全


  • 安全加固场景:

1)敏感信息加密, 函数调用陷阱规避;

2)SGX全加密;

3)最大保护、最高可靠、最高可用模式;

4)Slot Failover。


PG的社区版本存在函数调用陷阱的问题,例如某用户创建了一个视图,视图后面调用的Fuction设置为Security Invoke,表示判断这个函数的权限时是以调用这个函数的用户的权限判断的。当该用户为普通用户时,他执行Drop Database操作时,系统会报没有权限。但是如果用户将drop database封装到一个函数,并且把权限设置为上述模式,同时用户将它伪装为一个常见视图,当某位权限较大的用户,如DBA管理员上线看见这个视图并被迷惑且同意该操作后,则会完成Drop Database操作,造成重大损失。


阿里云PG解决了这样的问题,这样的函数陷阱在阿里云云端数据库是不存在的。


我们还支持保护模式,最高可靠、最高可用模式,这些在PG社区版本里面是不支持的。这意味着我们可以在两节点里实现全同步、半同步以及异步的效果,满足了不同行业对数据库可靠性的要求。


关于Slot Failover。用户在用一个开源数据库时,通常会用数据库的流复制做HA,在主节点里创建Slot做逻辑复制,例如业务里的某些表希望同步到另外的B业务中,只需要同步若干表而不是所有的数据。包括做增量的数据迁移、数据同步或异构同步,比如我要把你数据库里的数据同步到我们的消息队列,然后再通过消息队列同步到其他业务,这是目前业界非常通用的做法。


如果是以上情况,在PG社区版本一旦主备发生切换,Slot位点会丢失,因为在从库里没有那个位点,从而导致业务上的故障。


阿里PG在主库里面创建Slot会同步到从库,从而保证发生HA时Slot的信息不会丢失,从而解决了把数据库里的数据增量同步到其他业务的问题。


(四)MyBase


有些用户担心使用RDS后不过自由,那么PG引擎的MyBase是个不错的选择,它开放了OS权限,允许用户原来的系统整合到新系统,堪称RDS PLUS。


  • MyBase具备以下特点:

1)既要: 全自动(DB全生命周期管理,自动化运维、诊断),解放双手

-救DBA于水火


2)又要: 自主可控,随心所欲

-开放OS权限开放数据库ROOT用户

-开放调度策略,自定义超卖,实现超高性价比


3)还要:低成本、可定制、有内核兜(背)底(锅)

-内核Bug快速Fix,提新功能需求有研发支持。



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
100 0
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
257 62
|
3月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】基于PostgreSQL的分布式数据库:Citus
Citus 是基于 PostgreSQL 的开源分布式数据库,采用 shared nothing 架构,具备良好的扩展性。它以插件形式集成,部署简单,适用于处理大规模数据和高并发场景。本文介绍了 Citus 的基础概念、安装配置步骤及其在单机环境下的集群搭建方法。
245 2
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
3月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
10月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构涵盖数据库集群、数据库、表、索引、视图等对象,每个对象有唯一的oid标识。数据库集群包含多个数据库,每个数据库又包含多个模式,模式内含表、函数等。通过特定SQL命令可查看和管理这些数据库对象。
146 4
|
5月前
|
SQL 关系型数据库 数据库
【赵渝强老师】创建PostgreSQL的数据库
本文介绍了在PostgreSQL中通过SQL命令“create database”创建数据库的方法。首先查询系统目录pg_database以查看现有数据库集合,然后使用“create database”命令创建新数据库,并了解其在$PDATA/base目录下对应的文件夹生成。最后重新查询数据库集合确认创建结果,附带视频讲解便于理解操作步骤及注意事项。
128 1
|
6月前
|
数据库
【YashanDB知识库】数据库升级后用yasboot在线扩充备节点出现报错
本文来自YashanDB官网,讨论从22.2.4.1升级至23.2.2.100过程中遇到的在线扩容问题。使用yasboot增加备节点时出现“no replication addr in node 1-1”错误,尽管数据库中存在相关配置。原因是早期托管功能未支持扩容,导致OM无法获取新库配置。提供两种规避方法:一是手动修改`cod_domor.db`信息并调整配置文件;二是手动安装YashanDB并配置备机。最终已向研发反馈,将在扩容时优化配置检查逻辑。
|
5月前
|
人工智能 关系型数据库 分布式数据库
让数据与AI贴得更近,阿里云瑶池数据库系列产品焕新升级
4月9日阿里云AI势能大会上,阿里云瑶池数据库发布重磅新品及一系列产品能力升级。「推理加速服务」Tair KVCache全新上线,实现KVCache动态分层存储,显著提高内存资源利用率,为大模型推理降本提速。
|
6月前
|
关系型数据库 数据库 PostgreSQL
【赵渝强老师】PostgreSQL的模板数据库
在PostgreSQL中,创建新数据库时,默认通过拷贝`template1`实现。`template1`包含标准系统对象,可自定义以影响新数据库内容;而`template0`是纯净模板,仅含预定义对象且不应修改。视频讲解和代码示例展示了如何查看现有数据库信息及标识字段的作用。 ![图示](https://ucc.alicdn.com/pic/developer-ecology/yub6x2mlkqwck_398ed06397a44c2d9bfbb5ae5c90bbc0.png) [视频链接](https://www.bilibili.com/video/BV1szyfY4EQn)
111 0
【赵渝强老师】PostgreSQL的模板数据库

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版
  • 云数据库 RDS
  • 推荐镜像

    更多