
1.前言

2.数据中台的产品能力
2.1 实时大屏
秒级更新的数据大屏可以说是企业经营管理层的驾驶舱,可以直观、全面的了解到每天的销售、发货情况,同时可以更快、更精准地发现问题,防控风险,提高管理的时效性。

数据中台大屏 示意图
2.2 发货预警

发货预警 示意图

物流实时预警 示意图

赔付风险订单预警 示意图
更多主播、售后、商品、合作商家的功能就不一一展开了,关于产品的介绍及商家使用反馈可移步《双11,他们都在聚水潭数据中台里看什么?》
3.数据中台是如何使用PolarDB IMCI的?
3.1 PolarDB IMCI的技术特点
IMCI是In-Memory Column Index的缩写,是在已有MySQL行存表Btree索引的基础上,扩展列存形式的索引,从其名称中也不难看出,行列索引共享了基础表的数据,从而让普通的MySQL表具备了同时支持行列场景的查询需求,可以称得上是行列共存表,列存索引特性在PolarDB MySQL引擎中的功能架构图如下:

列存索引特性在PolarDB MySQL引擎中的功能架构图
存储引擎:支持实时事务级别一致性的行列混合存储; 执行算子:面向列存的向量化并行执行算子,支持极速的单表和多表查询; SQL Parser/优化器:面向行列混合存储的CBO优化器,可以根据代价自动选择行存或者列存执行查询请求;
在此架构下,是的原有PolarDB MySQL具备如下优势:
100%兼容MySQL:列存具有与MySQL一致的数据类型系统,支持灵活的类型转换,100%兼容MySQL协议; 极致的HTAP性能:PolarDB在OLTP方面本身具备极致性能。列存索引使其OLAP性能也与专用的OLAP数据库系统处于同一水平; 行列混合存储,降低成本:同时支持行存储和列存储两种格式,且实时保证行列的事务级一致,同时,列存更具有低成本的优势。
3.2 基于PolarDB IMCI的数仓架构

聚水潭实时数仓架构图
1. 资源隔离:复杂的OLAP查询与RW节点完全的资源隔离,OLTP和OLAP的请求互不受影响。
2. 自动分离:PolarDB提供的自动SQL分流功能,自动的将复杂查询指向分析型只读节点,业务无需手动对OLTP型SQL和OLAP型SQL进行手动分流。
这些能力帮助数据研发团队极大的提升研发速度,从而助力产品的快速迭代。
3.3 PolarDB IMCI是如何支撑百亿级的订单分析?
SELECT sku_id,max(sku_name) sku_name,sum(order_item_amt) order_item_amtFROM (SELECT sku_id,sku_name,order_item_amtFROM ads_jst_erp_dataportal_shop_sku_detail --店铺自营商品售后指标表WHERE co_id = $coId#if($startDate && $startDate != '') -- 开始时间&结束时间AND biz_date >= '$startDate'#elseAND biz_date >= date_add($globalTime ,interval - (replace('$statisticsPreriod','d','') - 1) DAY)#end#if($endDate && $endDate != '')AND biz_date <= '$endDate'#elseAND biz_date <= $globalTime#end#if($skuId && $skuId != '') -- 商品编码AND sku_id LIKE '%$skuId%'#end#if($skuName && $skuName != '') -- 商品名称AND sku_name LIKE '%$skuName%'#end) temp_sku_dataGROUP BY sku_id;
SELECT sku_id,max(sku_name) as sku_name,sum(order_item_amt) order_item_amtFROM (SELECT sku_id,sku_name,sum(order_item_amt) order_item_amtfrom ads_jst_erp_dataportal_shop_sku_detail --店铺自营商品售后指标表WHERE co_id = $coId#if($startDate && $startDate != '') -- 开始时间&结束时间AND biz_date >= '$startDate'#elseAND biz_date >= date_add($globalTime ,interval - (replace('$statisticsPreriod','d','') - 1) DAY)#end#if($endDate && $endDate != '')AND biz_date <= '$endDate'#elseAND biz_date <= $globalTime #end #if($authShopIds && $!authShopIds != '') -- 多个渠道AND shop_id IN ( #foreach($authShopId IN $authShopIds) $authShopId, #end - 999)#end#if(($shopIds && $shopIds != '') | | ($platforms && $platforms != ''))and (1 = 0#if($shopIds && $shopIds != '')OR shop_id IN ( #foreach($shopId IN $shopIds) $shopId, #end - 999)#end#if($platforms && $platforms != '')OR platform IN ( #foreach($platform IN $platforms) '$platform', #end '-999')#end)#end#if($skuId && $skuId != '') -- 商品编码AND sku_id LIKE '%$skuId%'#end#if($skuName && $skuName != '') -- 商品名称AND sku_name LIKE '%$skuName%'#end) temp_sku_dataGROUP BY sku_id;
对于第一个场景通过增加
CREATE TABLE `ads_jst_erp_dataportal_shop_sku_detail` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`biz_date` varchar(15) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '业务日期(yyyy-mm-dd)',`co_id` int(11) DEFAULT NULL COMMENT '商家编号',`shop_id` int(11) DEFAULT NULL COMMENT '店铺编号',`shop_name` text COLLATE utf8mb4_bin COMMENT '店铺名称',`platform` varchar(15) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '平台',`sku_id` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '商品编码',`sku_name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品名称',`order_item_amt` decimal(38,6) DEFAULT NULL COMMENT '今日确认退款金额'PRIMARY KEY (`id`),KEY `idx_co_sku_bizdate` (`co_id`,`sku_id`,`biz_date`),COLUMNAR INDEX (`id`,`biz_date`,`co_id`,`shop_id`,`shop_name`,`sku_id`,`sku_name`,`platform`,`order_item_amt`)
店铺自营商品售后统计指标表
使用列存索引后SQL查询性能提升超过100倍,同时借助PolarDB Proxy节点的智能路由能力,OLAP查询可以自动路由至PolarDB IMCI节点并选择列存索引执行SQL,做到了OLTP和OLAP架构一体化的体验。

1. 数据量巨大,达到100亿级别,普通的MySQL表索引遇到瓶颈;
1. 架构创新:Flink+PolarDB升级实时数仓新引擎,支持百万级商家全渠道数据实时分析;
2. 降本增效:统一HTAP架构,OLTP+OLAP混合负载,助力数据中台产品快速迭代;
/ End /







点击「阅读原文」查看云原生关系型数据库PolarDB更多信息







