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

三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。

庄建超,身为三维家的技术总监,独挑大梁,负责三维家的所有IT系统运维与开发工作,为公司的成长贡献了关键力量。他不仅是一位卓越的技术专家,而且随着角色的转变,他现今更多地从业务价值的视角审视技术,对技术的热情与专注始终未减。

庄建超认为技术人要想在工作中更上一个台阶,首先需要沉下心来认真钻研技术,同时对行业也要深入研究,两者结合才有可能更进一步。对于 DBA 的成长,他建议要多读源码,多参与到社区,多交流,多分享,多动手实践。


三维家是一家以家居产业为依托、依靠云计算、大数据和 AI 人工智能等多项核心技术打造的大家居产业云工业软件服务商,连续 5 年上榜广州“未来独角兽”创新企业,先后完成多轮融资,融资总额超过 10 亿元人民币。其一体化云设计软件(CAD+CAM)、数控系统以及前后端一体化智能制造解决方案 SaaS 服务支持着众多门店的经营,拥有广泛的企业客户。

三维家的一体化解决方案覆盖门店的营销、设计以及工厂生产计划管理、加工制造全流程,为全屋定制企业提供 C2M 柔性生产全链路工具。在整个过程中,同一套数据贯穿全流程,包括从最早的设计效果图、到后来的工厂机器生产、再到最后的交付,因此对其底层的数据库有很高的要求。

为了更好地支持业务发展,降低运维成本,从 2023 年下半年开始,三维家开始启动数据库的升级工作,从原来的 MySQL+某国产数据库(以下简称“XDB”)统一迁移到 OceanBase。

一、业务进一步增长,对数据库有了新需求

三维家成立于 2013 年,正值中国经济快速发展的黄金时期,经济的蓬勃成长带动了家装行业的蓬勃发展,三维家的业务也随之高速增长,对数据库的要求也不断提高。

三维家刚成立的时候采用的是某传统集中式数据库。该数据库功能强大,开发人员也熟悉,开发和运维都比较简单,很好地支持了业务发展。但随着公司业务的成长,数据量不断增加,时常需要对数据库进行扩容,扩容成本随之越来越高,压力之下,2017 年三维家把该数据库换成了 MySQL+ 某国产数据库 XDB 的组合。

庄建超是三维家的技术总监,也是三维家最早的技术人员,曾经一个人承担了三维家所有的 IT 工作,从开发到运维。

庄建超解释说,之所以选择 MySQL+ XDB 是由于三维家业务的复杂性。三维家有很多大客户,每个大客户就是一个数据库,客户对数据隔离性有较高要求,所以选择了 MySQL 的分库分表来满足。同时,三维家也存在合库的需求,比如对数据进行统一分析和统计,而 MySQL 可扩展性不够,同时也不支持太复杂的分析需求,所以分析工作就由 XDB 来完成。没有都采用 XDB 主要是成本上的考虑,该数据库节点多导致前期成本较高。

MySQL+XDB 的组合稳定运行了几年,MySQL 负责写,XDB 负责读,一直非常顺利。去年新的问题出现了,更准确地说——是三维家对数据库有了新的要求。

庄建超进一步解释了三维家更换数据库的原因:

第一,需要支持多基础设施的数据库。此前不止一家云厂商出现过服务中断事故,让三维家对稳定性更为看重。三维家的服务对客户很关键,如果停服将直接影响客户经营。因此,三维家考虑进行多基础设施部署,避免因某云服务中断而影响客户业务。如果继续使用 MySQL 的话,那就要在其他云上再复制一份数据,成本将直接翻倍。

第二,简化运维。MySQL 是用分库分表+中间件来解决数据量大和数据的隔离问题的,然后用 XDB 进行合库来解决数据分析问题。两个数据库之间要做同步,数据流程长,还要借助中间件,技术栈复杂,运维成本随之变高。

第三,云成本持续增长。三维家的业务增长很快,数据量同步增长,成本自然也水涨船高,考虑到未来的可持续发展,三维家对降本增效有了新需求。

基于上面这些考虑,去年三维家决定进行数据库升级,并同步启动新数据库选型。

“那时 OceanBase 已经开源,我们在对 OceanBase 进行评估和测试后,发现功能完全符合要求,同时,OceanBase 对 MySQL 的兼容性非常高,因此很快就敲定了 OceanBase。”庄建超表示。

庄建超补充说:决策的背后另一个重要原因是对 OceanBase 的信任。因为它经过了支付宝大规模金融场景的打磨,完全自研,多年成长,其稳定性和可靠性经过了很多客户验证,值得信赖。

二、分库分表加大迁移难度

从 2023 年 9 月份开始,三维家正式启动数据库的迁移工作。截至到目前,三维家已经完成 80% 的系统迁移,只有一些合库还没有合并,目前,这部分工作也在顺利推进之中。

庄建超介绍,三维家的官网系统是第一个迁移到 OceanBase 的系统。由于这个系统以静态页面为主,即使出现了故障也不会直接影响客户的业务,所以选择其进行首位升级。在官网迁移完成后,三维家开始真正进行其他关键业务系统数据库的升级。

“我们对数据库的切换很谨慎,采取两个系统并跑,也就是新旧系统都要同时写,一旦出问题,马上切换回去,保障尽量减少对业务的影响。”庄建超说。

迁移过程中最大的困难也恰恰是同步写,因为要保持两个数据库系统的数据一致性,这个难度比较大。尤其是多对一的合并迁移难度较高:迁移前分库分库表,迁移后合库合表,要确保能回退,数据就得回写到旧的数据库。

“OceanBase 的数据迁移工具 OMS 可以满足一部分数据迁移需求,对分库分表部分就得其他方式来回写了。我们选择的是 Flink CDC,同时也做了很多定制化开发和配置工作。”庄建超说。

为了确保数据库系统迁移成功,三维家做了很多准备工作,从功能测试、压力测试、到流量回放、SQL 优化、再到试点迁移等,以确保在 SQL 语法上兼容、SQL 性能没有问题。比如,针对三维家复杂的业务场景,在迁移过程中,也做了大量索引和执行计划的优化工作。

庄建超说,整体数据库迁移过程比较顺利。在迁移过程中,他也提议 OceanBase 可以进一步增强其监控和告警能力。比如,提供更细粒度的性能监控和提供监控的 API,这样他们可以把性能数据接入大屏做展示。

三、降本增效,效果看的见

随着数据库迁移工作的推进,升级效果也开始逐渐显露出来。

首先,成本下降明显。原有的 XDB 数据库被直接替换,服务器进一步节省,成本降低显而易见。而且,升级为 OceanBase 后,其对数据的高压缩比使得存储空间需求也降低了不少,整体存储成本下降了 30%。

庄建超解释说,MySQL 的数据迁移回报目前还没有充分体现出来。因为三维家需要保障业务稳定,所以目前还是双跑,为确保回退机制可行,目前整体成本还相对较高。如果双跑结束,成本会直接减少一半。

其次,运维复杂度降低。换成 OceanBase 后,原来的中间件没有了,数据库架构进一步简化,故障点更少,稳定性更好,灵活性能提升,接口响应更快。而且部署更加灵活,扩容也非常方便。

第三,对多租户架构的支持。SaaS 平台需要支持多租户,OceanBase 的多副本和分布式架构能够有效地隔离租户数据,保证租户间的数据安全和隔离,为不同客户规模的租户灵活实现提供了很大方便。

“过去用 MySQL 的时候,这一点非常头疼,采用分库分表也是出于这个方面的考虑。”庄建超说。

第四,对分析能力的支持。之所以此前使用 XDB 就是为了满足数据分析的需求,现在一个 OceanBase,TP、AP 同时都可以满足,不再需要进行数据同步,成本下降,运维也变得简单。

庄建超表示,接下来三维家将继续优化 OceanBase,同时,还会进行多基础设施部署,进一步实现多活。OceanBase 支持多基础设施部署,这为三维家提供更多便利。

另外,庄建超还透露,他对向量数据库非常感兴趣,因为三维家正在研发自己的知识库。“听说 OceanBase 正在研究这个功能,如果未来 OceanBase 能支持向量,我们搭建知识库的工作就会简单许多,将为我们业务开展带来很大方便。”庄建超说。


特别感谢徐戟(白鳝)对本期《DB 大咖说》的特别支持。徐戟老师是业内资深 Oracle 数据库优化专家,南京基石数据的 CTO,在数据库领域深耕 20 余年。同时,也是知名科技公众号《白鳝的洞穴》主理人,热衷于分享他在数据库方面的多面见解。

相关文章:

三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。 庄建超,身为三维家的技术总监,独挑大梁,负…...

ai智能语音机器人是如何影响客户体验的?电销机器人部署

随着人工智能技术的进步,越来越多的企业在寻求如何将人工智能技术融合到现有的商业模式上,进而实现自动化、智能化。在通信行业大量使用智能语音机器人、聊天机器人、客服机器人时,它能和“客户体验”并驾齐驱吗,还是可以让客户体…...

vue3使用v-html实现文本关键词变色

首先看应用场景 这有一段文本内容,是项目的简介,想要实现将文本中的关键词进行变色处理 有如下关键词 实现思路 遍历文本内容,找到关键词,并使用某种方法更改其字体样式。经过搜寻资料决定采用v-html实现,但是v-h…...

C#面:举列 a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

要在不使用第三方变量的前提下交换a和b的值,可以使用异或运算。异或运算的特性是,对于两个相同的数进行异或运算,结果为0;对于任意数与0进行异或运算,结果为该数本身。因此,可以通过多次异或运算来实现变量…...

编写动态库

1.创建库.c .h文件 2.编写Makefile文件 3.make之后形成.so文件 4.make output,形成mylib 5.把mylib拷贝到test里面 mv mylib /test 6.编译 gcc main.c -I mylib/include -L mylib/lib -lmymethod形成a.out 但是直接执行会出现以下问题 很显然没有找到动态库 7.解决加载找不…...

记一次阿里云服务器java应用无法响应且无法远程连接的问题排查

问题表现 java服务无响应,无法远程链接到服务器。 今天中午12点多,应用直接崩溃。后续进入到服务器,发现java进程都不在了, 排查过程 先安装atop工具 安装、配置并使用atop监控工具 等下次再出现时看相关时间点日志&#xff…...

雷池WAF+Modsecurity安装防护及系统加固

君衍. 一、雷池WAF1、什么是雷池2、什么是WAF3、雷池的功能4、WAF部署架构5、整体检测流程 二、雷池WAF环境依赖1、查看本地CPU架构2、Docker安装2.1 卸载旧版本2.2 安装yum-utils工具包2.3 设置镜像仓库2.4 安装docker2.5 启动docker并查看版本 3、Docker Compose安装3.1 卸载…...

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中,当我们在调用函数时混合使用位置参数(p…...

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…...

利用深度学习模型进行语音障碍自动评估

语音的产生涉及器官的复杂协调,因此,语音包含了有关身体各个方面的信息,从认知状态和心理状态到呼吸条件。近十年来,研究者致力于发现和利用语音生物标志物——即与特定疾病相关的语音特征,用于诊断。随着人工智能&…...

TP8 JS(html2canvas) 把DIV内容生成二维码并与背景图、文字组合生成分享海报

方法一:前端JS生成(推荐) 注意: 1.这个网页只能截图图片效果代码,其它任何html效果都不能有,不然截图就不准确 2.如果要生成的图片DIV内容中引用了第三个方的图片,就是不使用同一个域名下的图片,需要把后…...

计算机科学中的接口(Interface)介绍

计算机科学中的接口(Interface)介绍 计算机科学中,接口是一个广泛的概念,在不同上下文中有不同含义: 1.任何两电路或设备间的连接电路,用于连接CPU与内存、CPU与外设之间。这是一个重要的硬件层面的接口概…...

大创项目推荐 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...

黑芝麻科技A1000简介

文章目录 1. A1000 简介2. 感知能力评估3. 竞品对比4. 系统软件1. A1000 简介...

详解C语言分支与循环语句

分支语句 if elseswitch 循环语句 whilefordo while goto语句 文章目录 1.什么是语句2.分支语句(选择结构)2.1 if语句2.1.1 悬空else2.1.3 练习 2.2 switch语句2.2.1 在switch语句中的break2.2.2 default子句 3.循环语句3.1 while循环3.1.1 while语句中…...

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理 使用Pandas进行数据预处理1.合并数据2.清洗数据3.标准化数据4.转换数据 使用Pandas进行数据预处理 1.合并数据 2.清洗数据 3.标准化数据 4.转换数据...

Nosql期末复习

mongodb基本常用命令(只要掌握所有实验内容就没问题) 上机必考,笔试试卷可能考: 1.1 数据库的操作 1.1.1 选择和创建数据库 (1)use dbname 如果数据库不存在则自动创建,例如,以下…...

Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …...

SQL面试题练习 —— 查询前2大和前2小用户并有序拼接

目录 1 题目2 建表语句3 题解 1 题目 有用户账户表,包含年份,用户id和值,请按照年份分组,取出值前两小和前两大对应的用户id,需要保持值最小和最大的用户id排首位。 样例数据 ------------------------- | year | user_id | v…...

Arthas常见使用姿势

文章目录 Arthas常见使用姿势官网基本命令通用参数解释表达式核心变量说明常用命令一些常用特殊案例举例其他技巧关于OGNLOGNL的常见使用OGNL的一些特殊用法与说明OGNL内置的虚拟属性OGNL的个人思考OGNL的杂碎,收集未做验证 Arthas常见使用姿势 官网 https://arth…...

Apache Kylin的入门学习

Apache Kylin的入门学习可以从以下几个方面进行: 1. 了解Kylin的基本概念 定义:Apache Kylin是一个开源的分布式分析引擎,它基于Hadoop和HBase构建,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能…...

React@16.x(46)路由v5.x(11)源码(3)- 实现 Router

目录 1,Router 的结构2,实现2.1,react-router1,matchPath.js2,Router.js3,RouterContext.jsx4,index.jsx 2.2,react-router-domBrowserRouter.jsxindex.jsx 1,Router 的结…...

openGauss真的比PostgreSQL差了10年?

前不久写了MogDB针对PostgreSQL的兼容性文章,我在文中提到针对PostgreSQL而言,MogDB兼容性还是不错的,其中也给出了其中一个能源客户之前POC的迁移报告数据。 But很快我发现总有人回留言喷我,而且我发现每次喷的这帮人是根本不看文…...

【国产开源可视化引擎Meta2d.js】快速上手

提示 初始化引擎后,会生成一个 meta2d 全局对象,可直接使用。 调用meta2d前,需要确保meta2d所在的父容器element元素位置大小已经渲染完成。如果样式或css(特别是css动画)没有初始化完成,可能会报错&…...

c#与倍福Plc通信

bcdedit /set hypervisorlaunchtype off...

【OceanBase诊断调优】—— 如何通过trace_id找到对应的执行节点IP

1. 前言 OceanBase作为分布式数据库,查问题找对节点很关键。好在OceanBase执行的每一条SQL都能通过trace_id来关联起来,知道trace_id怎么知道是在哪个节点发起的呢,请看本文。 2. trace_id生成规则 ob内部trace_id的生成函数如下&#xff0…...

鸿蒙开发Ability Kit(程序访问控制):【使用粘贴控件】

使用粘贴控件 粘贴控件是一种特殊的系统安全控件,它允许应用在用户的授权下无提示地读取剪贴板数据。 在应用集成粘贴控件后,用户点击该控件,应用读取剪贴板数据时不会弹窗提示。可以用于任何应用需要读取剪贴板的场景,避免弹窗…...

PL/SQL入门到实践

一、什么是PL/SQL PL/SQL是Procedural Language/Structured Query Language的缩写。PL/SQL是一种过程化编程语言,运行于服务器端的编程语言。PL/SQL是对SQL语言的扩展。PL/SQL结合了SQL语句和过程性编程语言的特性,可以用于编写存储过程、触发器、函数等…...

双非本 985 硕,我马上要入职上海AI实验室大模型算法岗

暑期实习基本结束了,校招即将开启。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&…...

C盘清理和管理

本篇是C盘一些常用的管理方法,以及定期清理C盘的方法,大部分情况下都能避免C盘爆红。 C盘清理和管理 C盘存储管理查看存储情况清理存储存储感知清理临时文件清理不需要的 迁移存储 磁盘清理桌面存储管理应用存储管理浏览器微信 工具清理 C盘存储管理 查…...