客户说|单实例100TB,客如云引入云原生数据库PolarDB支撑千亿级订单存储
作者:客如云DBA 李国标
近日,国内头部餐饮SaaS服务提供商客如云使用阿里云瑶池旗下的云原生数据库PolarDB来支持其交易订单的存储和读写访问需求。通过将原始千亿行记录规模,大小超100TB的订单库存放到单个PolarDB MySQL高压缩引擎X-Engine实例中, 最终实现了超过5倍的数据压缩率,节省了大量的存储成本。
● 第一层:SaaS软硬件工具层。以第二代迷你智能收银一体机 OnPOS mini 2C、智能收银一体机 OnPOS 2C、OnPOS mini 2、第二代智能收银一体机 OnPOS 2、迷你智能收银一体机 OnPOS mini、手持智能收银 OnPOS Handset等智能收银一体机;红云2、2F智能收银机;红云2W智能称重收银机和第二代立式自主收银一体机 OnKiosk Tower 2、立式自主收银一体机 OnKiosk Tower、桌面式自助收银OnKiosk Tablet智能自助设备等智能终端为载体,通过软硬一体的SaaS模式,搭载融合了点餐、收银、外卖、报表、排队等服务的On OS 10系统,为餐饮、零售、美业品牌提供简单易用的效率工具;
● 第二层:KONNECT开放平台层。客如云开放平台通过连接“人、财、物、客”餐饮、零售、美业上下游资源,不仅为餐饮、零售、美业品牌轻松获客,还能为商家对接财务软件、人员管理、供应链管理等服务,帮助商家更加高效的管理门店;
对于客如云这样一个餐饮SaaS企业来讲,其全量历史订单数据量远超过用户信息表,记录条数差异在千倍以上,而另一方面,交易订单具有典型的流水特性,时间越久的订单被访问的概率越低。在这样的背景下,将历史交易订单与用户信息表商品信息表等分离存储在不同的实例中,能确保在线交易库的的灵活高效,是一个更合理的方案。
考虑到使用成本,餐饮收银业务变更的多样性及当前技术方案的可维护性,客如云研发团队最终选择了云原生数据库PolarDB,并启用高压缩引擎X-Engine作为历史订单归档方案,该方案的优势如下:
1. 成本足够低: PolarDB X-Engine对于客如云的历史订单具有超过5倍的压缩率,让原始100TB的数据量压缩后只有20TB,降低了5倍的存储费用。
2. 性能足够高:单节点最大规格可以到88C710G, 单写节点提供的写入能力远超归档的吞吐需求。而用户对历史订单的查询请求可以方便的通过多个只读节点来扩展。同时X-Engine引擎也支持使用Parallel Query对复杂分析查询进行加速,实现了归档和报表分析的统一。
3. 业务兼容性:完全的MySQL兼容性,让前端业务可以用一套相同代码访问在线库和历史库,降低了工程代码复杂度。
4. 备份恢复便利性:PolarDB MySQL使用了存储计算分离架构,做全量备份是只需要在存储层打一个快照即可,100TB数据秒级别即可完成,结合实时的秒级别增量redo备份。
X-Engine采用LSM-tree分层结构设计,天然适合数据量大且访问请求存在冷热特征的数据,典型的如交易订单表历史记录,历史聊天消息记录等。PolarDB X-Engine依靠如下几个特性获得了极高的存储性价比:
1. 紧凑页格式:X-Engine使用Copy-on-write技术,避免原地更新数据页,新数据会写入到新数据页中。由于既有数据不可更新,因此X-Engine的 16K数据页是全满的,没有空洞。
2. 前缀编码:数据页中记录按大小顺序存放,同时内部默认每16行为一个前缀压缩的基本单位,每行数据不存放与前一行数据的公共前缀部分,以节省行数据的存储空间. 这个特性对于有序字符串类型索引非常有效。
3. 数据页压缩:记录在紧凑页中按前缀编码完成后,会进一步调用通用压缩算法snappy/lz4/zstd/等进行空间压缩,最后压缩到接近16KB的大小并对齐16KB存放。
4. 自动空间重整:一般存储引擎如InnoDB在运行一段时间之后,表空间中会存在空洞,需要通过手动optimiz进行回收。而X-Engine有自动化的空间回收机制,会在低峰期进行有效数据搬迁,并将无效空间truncate掉减少空间消耗。
客如云通过冷热数据架构的设计,缓解了热库的存储压力,同时单表查询性能明显提升。归档库的大存储及压缩特性可以满足业务日益增长的各类需求同时节约成本,长久保存业务数据的整个生命周期,可为各类数据分析提供数据支撑,更好的赋能业务快速发展。