好系统都是设计出来的,不过数据库厂商最好让应用设计变得更简单

2024年 5月 7日 77.7k 0

经常有人谈到因为某某数据库的问题而导致了系统问题的时候,总有人会说“好的系统都是设计出来的”。几年前和 Oracle 研发的一个座谈会上,当时 Oracle 研发方面的总监说:“Oracle 的目标是让在座的开发者设计应用系统的时候变得更加简单。”所以说虽然好的系统都是设计出来的,我们的数据库厂商最好还是能够“让设计变得更为简单”。

数据库的核心肯定是让数据的存储、管理、访问更加便捷,数据的存储更加安全,不过除了做好数据库的核心之外,数据库呈现给大家的接口也应该让应用开发者更为便捷,因此多听听用户的意见总是好的。现在的国产数据库种类繁多,大家内卷的也很厉害,比 SQL 语句执行比 Oracle 快多少倍已经不是国产数据库PK的主战场了,有的数据库可以充分利用 GPU/FPGA 进行 AI 计算,有的数据库可以使用硬件加密卡加密压缩数据。实际上玩这些噱头都没什么意思,大多数客户的基本需求并不是这些小众功能。有一次和一个数据库厂家沟通的时候,他问我,如果我选两个最需要的功能,你希望国产数据库有什么能力,我的回答是高可用和与 Oracle 的兼容性。高可用是确保我们应用的最基础的保障,而绝大多数数据库目前正在从 Oracle 迁移过来,我们的大部分开发厂商也在 Oracle 上积累了大量的研发能力,如果能够在语法,使用等方面与 Oracle 保持较好的兼容,对于企业数据库系统的升级来说,可以节约大量的资金。

前几天携程的朋友分享了一个 OceanBase 读写分离实践的案例(详情点击《客户之声|携程基于 OceanBase 读写分离方案的探索与优化》),我看了之后深有同感,这是一个相当好的数据库读写分离的应用案例。大多数分布式数据库都会使用多副本,而副本之间的数据同步是异步的,因此主要的读写都集中在主副本上,对其他副本的读写需要考虑强一致性的要求,否则可能会读到不一致的数据。而有很多业务,比如统计分析、查询历史数据等,并不需要数据是十分实时的,因此读取弱一致性的副本就可以确保业务正确了。这种弱一致性读取的方法在大多数读写分离的复制集群中都可以使用。只不过大部分数据库都通过添加 hint 的方式来判断某条 SQL 是否运行读取可能存在数据复制延迟的副本时是否存在问题。

在开发时强制要求添加 HINT 当然也是一种可以实现的方式,不过这对于开发团队执行能力提出了比较高的要求,如果有更简单的方法来实现此类的自动化分析,那肯定是更好的。

好系统都是设计出来的,不过数据库厂商最好让应用设计变得更简单-1

携程的团队根据自身的业务特点,通过修改obproxy,设计了参数weak_read_user_list 来指明通过某些数据库用户登录的应用是否允许弱读一致性。可以通过只读副本读取的应用模块都通过某些特定的用户登录。而且登录到特定的 IDC 的 OBPROXY 上(通过 PROXY_IDC_NAME 确定),这样在应用程序中就不需要再去留意 HINT 了。

在大家的交流讨论中,我也建议蚂蚁把携程的这个参数收录到 OceanBase 的主版本中去。实际上我们还可以做的更加完善一些,携程的业务模块开发比较规范,不同的业务模块可以连接不同的数据库用户。而对于一些开发能力稍弱的开发商,这个参数还不够用,还可以增加一个 wead_read_module_list,定义某个模块可以使用弱一致性的只读副本来完成读取。数据库在客户端提供一个 db_client_info 的函数包,可以通过 db_client_info.set_module 来设置自己的模块名称。这样只要在开发框架中添加了 Module 名称自动设置的代码后,这部分的开发就变得简单起来了,开发人员根本不需要了解访问的数据是否是弱读一致性的还是强一致性的了。

其实,目前国产数据库厂商能够给我们的客户做的事情还相当多,只不过目前数据库厂商与客户之间的沟通渠道还不够畅通,或者说我们的数据库厂商还没有开始充分的聆听客户的需求,因此这些能够让应用开发变得更为简单的功能还没有成为数据库厂商在产品研发时的优先研发功能。

我们的数据库厂商可能还是把过多的精力放在了如何再提高一点 TPMC 测试的成绩上了。实际上这种类似于当年美苏军备竞赛的工作的价值远远没有 OceanBase 开发人员把携程的实践经验纳入到 OBPROXY 的主版本中那么大。

作者简介:徐戟(花名:白鳝),现任南京基石数据技术有限责任公司技术总监,国内著名的系统优化专家,从事过电信、政府、金融、能源行业的应用软件开发与信息系统建设工作。曾主持开发了全国第一套电信级联机实时计费系统、全国第一套三检合一的检验检疫综合管理系统和EDP电子申报系统。

推荐阅读:

基于知识图谱的开源数据库智能运维

携程基于 OceanBase 读写分离方案的探索与优化

【DBA100人】李建明:一名普通DBA的14年技术之路与成长智慧

————————————————————————————————————————————

社区版官网论坛

社区版项目网站提 Issue

欢迎持续关注 OceanBase 技术社区,我们将不断输出技术干货内容,与千万技术人共同成长!!!

搜索🔍钉钉群,或扫描下方二维码,还可进入 OceanBase 技术答疑群,有任何技术问题在里面都能找到答案哦~

好系统都是设计出来的,不过数据库厂商最好让应用设计变得更简单-2

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论