开源数据库企业应用的探索与实践——云栖技术之旅第1期精彩回顾

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: PostgreSQL是一种对象关系型数据库管理系统,这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且拥有非常广泛的用户。PostgreSQL被誉为目前功能最强大、特性最丰富和最先进的开源数据库系统。   PostgreSQL支持大部分SQL标准并且提供了许多其

274b9b6151c8ac2f71bdc6a3c0a1485177679ce6


PostgreSQL是一种对象关系型数据库管理系统,这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且拥有非常广泛的用户。PostgreSQL被誉为目前功能最强大、特性最丰富和最先进的开源数据库系统。  

PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性,比如复杂查询、外键、触发器、视图、事务完整性、MVCC等,此外还可以通过许多方法进行特性扩展,一些特性甚至是当今许多商业数据库的前身。 

9月24日,由云栖社区与PostgreSQL中文社区联合主办“云栖技术之旅·开源数据库企业应用实践”专场沙龙在北京阿里中心望京A座举办,PostgreSQL爱好者齐聚,一起探讨最先进的开源数据库的魅力。 


PostgreSQL在互联网企业中的实战


PostgreSQL中国社区核心成员张文升带来了《PostgreSQL在互联网企业中的实战》主题分享。

张文升,目前是探探DBA,负责探探的数据库架构、运维和调优的工作。曾就职于去哪儿网,负责PostgreSQL运维工作。因为对PostgreSQL热开,投入了PostgreSQL开源社区的怀抱,成为核心成员与志愿者。

张文升认为,大家对PostgreSQL还是有很多误解,网络上有很多文章,可能是年代太久远,也可能是其它原因,都认为PostgreSQL只适合做OLAP,不适合在互联网的应用。数据分析是PostgreSQL的强项,多表join、丰富的FDW、窗口函数等在数据分析都有很大的优势。事实上,PostgreSQL在互联网企业应用中也非常好用,做OLTP应用,PG无论在可靠性和性能方面都不输其它任何关系型数据库,包括商业和开源的关系型数据库。去哪网就是国内PostgreSQL最大的用户之一。   

OLTP(联机事务处理)的特点是:高并发,小事务;查询多、写入多;更新多,删除少。对于此类场景的常规解决办法是: 

  • 频繁更新的数据通过表空间放到内存或SSD
  • xlog建议放在单独的存储设备(对于PCI-e卡则没有必要)
  • 拆表(表拆分的好处是可以分布到不同的表空间,autovacuum颗粒度更小,prevent wrap的概率变小,维护更加方便)
  • 拆库(业务数据和日志数据分离,各业务子模块拆分,按用户ID 2^n取模拆分)
  • 尽量精简在线数据
  • 如果磁盘性能比较好,可以将块大小调大至32k

关于PostgreSQL的性能调优,还有很多细致的工作要做,比如可以从操作系统、数据库系统部署、全局配置参数、索引等等方面去做调整,而开发人员可以从应用架构及SQL语句等细节着手进行调优工作。 

此外,PostgreSQL作OLTP应用时,需要使用连接池。每个PostgreSQL进程在工作时会分配1个CPU核使用,因此不适合直接与高并发的短连接应用直接连接。对于互联网高并发场景,加上pgbouncer或pgpool连接池是比较好的解决办法,其中pgbouncer比较轻量实用,维护难度低。 0313c077d6fa2fa05a72330c88647fd1818a72d5

Postgresql是一个数据库内核,比Oracle少了很多功能,但是这些功能都可以通过插件来解决。对于高可用方案,可以通过Pacemaker+Corosync+PostgreSQL Replication来实现。  251d414cd592e128b47976028c9632e2c99a18e0

此外,关于高可用方案、安全、性能调优、全文检索方面的内容,请看演讲PPT和视频回放;

PPT:https://yq.aliyun.com/attachment/download/?id=845

视频回放:https://yq.aliyun.com/edu/lesson/play/370

 

Sybase迁移PostgreSQL经验分享

 

神州飞象高级数据库工程师赖伟带来了Sybase迁移PostgreSQL的项目经验分享,赖伟具有多年关系数据库运维经验,擅长PostgreSQL的调优和运维,具有丰富的数据库开发和异种数据库迁移经验。 

关于迁移的方法,赖伟给出了如下建议: 

  • 迁移主导:在不改变原有架构的基础上进行迁移
  • 测试驱动:迁移之前进行评估、测试
  • 标准化:通过文档将不同的迁移方法进行统一化,标准化
  • 自动化:采用自动化工具来进行迁移

迁移的流程如下:

 7aef28b38a610033b15865e5611c782da3d86159


对于Sybase数据库迁移至PostgreSQL,评估和匹配情况可见下表。 

 71a9ff1f972e00769c8ff8d2dde6104674fec96d

  

迁移具体方法请见演讲PPT和现场视频回放。 

PPT:https://yq.aliyun.com/attachment/download/?id=846

视频回放:https://yq.aliyun.com/edu/lesson/play/372


PostgreSQL优化器浅析 


在使用PostgreSQL数据库过程中,对SQL调优最常用的手段是使用explain查看执行计划,很多时候只关注执行计划的结果而未深入了解执行计划是如何生成的。优化器作为数据库核心功能之一,也是数据库的“大脑”,理解优化器将有助于我们更好地优化SQL。 

在本次沙龙上,阿里资深开发工程师范孝剑(花名康贤)带来了PostgreSQL优化器原理相关的分享。 

SQL处理过程如下: 

06353c4ad1365f68adf34ce0cf81a30de4fe7780

 在PG数据库中,对于DDL语句无需进行优化,到utility模块处理,对于DML语句需要到优化器中处理,一个用户连接从接收SQL到执行的流程如下:

1c8e9fdf796280a17d21d9127500ba40712a6c5a

以下是几种常见的PostgreSQL优化器对SQL优化的方法: 

  • 查询重写,主要目的是为了消除view、rule等,
  • 提升子链,目标是将IN和exists子句递归提升。
  • 提升子查询
  • 化简条件
  • 外连接消除(left/right/full join)
  • 条件下推(目的为了连接前,元组数组尽量少)
  • 语义优化
  • MIN/MAX优化
  • order by优化
  • distinct优化
  • 集合操作优化

以上这些方法更着重于SQL逻辑优化,也就是尽量对SQL进行等价或者推倒变换,以达到更有的执行计划。此外,PostgreSQL优化器还包括物理查询优化,比如单表扫描方式、多表组合方式、多表组合顺序等。 

关于PostgreSQL优化器原理的讲解请看演讲PPT和视频回放。 

PPT:https://yq.aliyun.com/attachment/download/?id=847

演讲视频回放:https://yq.aliyun.com/edu/lesson/play/376


Greenplum在听云的大数据实时分析实践


Greenplum是基于PostgreSQL开发的一个关系型数据库,它的特点主要就是查询速度快,数据装载速度快,批量DML处理快,而且性能可以随着硬件的添加呈线性增加,拥有非常良好的可扩展性。因此,它主要适用于面向分析的应用。比如构建企业级ODS/EDW或者数据集市等等。 

在本次沙龙上,听云平台后端数据库工程师周金可为大家介绍了使用Greenplum解决听云实际业务痛点的一些心得。

周金可加入听云时,恰好是业务快速增长的阶段,听云后端的应用以及数据库经受了比较大的考验。去年大多数时间是在做扩容,MySQL集群由最开始的数台实例扩展到现在的数百台实例。

听云数据库经历了由MySQL单机到MySQL分库分表分布式架构的演变,后来数据量继续膨胀,又使用压缩引擎对数据进行压缩。某个模块的单表数据量达百亿级,MySQL Shared方式已经无法保证查询性能,所以听云采用了GreenPlum MPP的方案来解决性能问题。 

从下图中可以看到,采用GreenPlum MPP后性能提升将近三个数量级,检索一天的数据量查询时间仅有90多ms。

  1ffc2cd55cf7f15dfbfb6a85b4af396fa7f31a37

  

关于Greenplum在听云的具体实践,请看演讲PPT和视频回放。 

PPT:https://yq.aliyun.com/attachment/download/?id=849

视频回放:https://yq.aliyun.com/edu/lesson/play/374


Greenplum分片案例分析 


在使用Greenplum并行过程中会遇到很多问题,其中最重要的一个问题就是分片。本次沙龙最后,阿里资深开发工程师窦贤明(花名执白)介绍了Greenplum分片的原理和分片案例的分析。 

可以通过下面几张图来了解Greenplum分片的原理。 

并行导入

e8ecf527d742d534f70057fdebb2b69faacf1aca

 

复制、插入 

221f5de54019739d47ec5fac5e3d0caf5166dadd

查询  a6fb510354705f5bba5bf67d10d69d86debcf9d6

执白还介绍了Greenplum分片的一些原则,比如大表Join运算的关联字段、防止数据倾斜、避免条件字段等,具体的分片方法请看演讲PPT和视频回放。 

PPT:https://yq.aliyun.com/attachment/download/?id=850

视频回放:https://yq.aliyun.com/edu/lesson/play/378


关于云栖技术之旅


云栖技术之旅,是由阿里云云栖社区主办,整合了阿里集团内部多个领域顶级技术专家与技术资源,通过线下技术培训的方式,为热爱技术的朋友提供一个交流&分享技术观点、碰撞精彩火花的平台。

更多详情:https://yq.aliyun.com/activity/114


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
17天前
|
弹性计算 安全 关系型数据库
活动实践 | 自建数据库迁移到云数据库
通过阿里云RDS,用户可获得稳定、安全的企业级数据库服务,无需担心数据库管理与维护。该方案使用RDS确保数据库的可靠性、可用性和安全性,结合ECS和DTS服务,实现自建数据库平滑迁移到云端,支持WordPress等应用的快速部署与运行。通过一键部署模板,用户能迅速搭建ECS和RDS实例,完成数据迁移及应用上线,显著提升业务灵活性和效率。
|
1月前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
114 61
|
22小时前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
25 15
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
92 3
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
53 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
38 1
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
80 15
|
5天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
下一篇
DataWorks