看亿级用户电商如何玩转SQL大数据

2023-10-29

 

640?wx_fmt=png

(图摘自微博,侵删)

据艾瑞咨询的报道,2017 年中国家电行业,苏宁是最大的市场占有者。线上线下的组合,占据整个行业的 20.0%. 是京东(12.3%)和国美电器(7.5%)之和,而天猫已被拉入了第三阶梯,比较起来毫无竞争力。

 

 

 

640?wx_fmt=png

 

 

我认为家电行业要赶超前三位的占有者,首先就要看懂他们的数据,因此数据工程在整个行业分析上,都已经占据极其重要的战略地位。

 

苏宁首当其冲,它目前使用的数据工程,包括数据基建,数据应用都将是其他家电竞争者知识库中重要的战略武器。作为一名数据工作者,了解了苏宁集团的数据工程,对你的求职,事业的突破都将有重要的意义。

 

在《极客时间》上看到了苏宁 OLAP 引擎的分享,自是兴奋不已的要将它看个透,且分享出来让更多人知晓。

 

所有有些规模的家电零售类集团公司,在2019年这个时间档口,基本都完成了线上线下的铺设。从应用的大范围来讲,会包括两部分,一是离线的应用,二是在线的应用。反应到数据处理层面,则是异步批次处理与实时同步处理。

 

作为传统行业的数据仓库从业人员,我觉得下面的数仓结构对大家都应该不陌生:

 

 

640?wx_fmt=png

 

 

从多个业务系统抓取数据,通过编制的 ETL 程序,将数据跑批进入数据仓库的数据模型中。前端通过报表工具,或自研或厂商提供,来展示各类关键指标数据,以便做进一步的决策。

 

自电子商务开展以来,尤其以淘宝的出现作为时间点(毕竟是中国首家规模化的电子商务应用),数据仓库的应用跨入了2.0的时代,除了要容纳离线门店的数据归档,还要实时的去处理在线应用的数据。苏宁正是这样的典型模式应用者。

 

一 、统一标准

 

在整个集团,如果将数据隔离成原先离线的应用和现有的在线应用,那么数据就会有“丢帧”出现。线上线下无法完成统一视图,资源就无法有效分配,比如部门沟通成本,基建重复建设以及数据口径变更不同步。因此集团的数据应用,目标就是要标准,要统一。

 

 

640?wx_fmt=png

 

 

二、时序数据

 

在《极客时间》的《大规模数据处理实战》课程中,有一篇讲解到了批次处理与流式处理。作者从边界角度去观察数据,将没有边界的数据称为流式数据,将有边界的数据称为批次数据。我理解的边界角度,应该是时间边界。

 

在无限长的时间角度来看,数据会源源不断的流入到系统里面,比如用户日志,用户评论以及用户事件,无非是在频次上不固定,每个人不可能每天都一时间上网聊天,看新闻,发微博。放在他的一生时间维度上,他\她所产生的数据,都是在不停地流入到手机、平板等移动应用中。这个角度来观察数据,数据就是流式的。

 

但我们在观察人产生数据的时候,盖棺定论的做法恐怕是不够的。我们需要知道更细粒度的时间维度内,这个人发生了哪些变化。因此用批次处理,即每个特定时间去收集和分析他的数据,对于商业才是可行的。

 

所以,时序数据,在哪个商业应用中,都非常普遍。

 

时序数据,即时间序列数据。据《大规模数据处理实战》指出,时序数据会有两个状态:发生和处理。

 

一个现象或者事件发生了,给它盖一个时间戳,这就是发生时间;如果事件发生了,没有被捕获、感知,那也就不会被处理,即数据失帧,失去了意义。一旦数据被捕获、感知,我们就可以对其进行处理,此时我们给它盖上一个时间戳,叫做处理时间。

 

时序数据的这两个时间戳,成为我们处理数据的两个关键。

 

时序数据,根据其发生频次,继而可分为两类:规则和不规则时序数据

 

很多loT监控工具提供的便是规则时序数据,比如传感器,每个特定时间发送一个观测数据,这类数据因为发生频次固定,有强规则性,我们称之为规则数据;而例如支付宝app的个人支付数据,则是不规则的时序数据,个人不会每隔一分钟或者十分钟去用支付宝支付购买一个商品。

 

苏宁集团每天有着300G+的数据产生量,如此规模,为什么要选择Druid,而不是一般的RDBMS来存储呢?这个问题本质也是为什么要开发一个时序数据库的原因了。

 

 

640?wx_fmt=png

 

 

计算广告厂商,Google 可以拿来做很好的例子。作为Google,他掌握着天然的广告入口渠道和出口投放渠道。

 

广告入口渠道,就是流量。每个网站的流量都在Google的数据库里存着,这个网站是否具有投放广告的必要,Google都可以计算的出来。一旦有必要,Google就会在其网站上投放广告,通过流量点击广告,记录点击次数,就可以跟广告主计算广告费用。处于计算的需要,Google在搜集点击量的时候,就会用到时序数据。

 

就像上图所示,Google监控了三个广告源的广告点击情况,在特定时间点上进行采集,形成了时序数据流。

 

 

640?wx_fmt=png

 

 

单值,多值的时序数据,仅仅是格式不同而已,对于业务来说,并没有不同。

 

Google看上去是家高精尖的科技公司,但从盈利分布来分析,其实它是家不折不扣的广告公司

 

 

 

谷歌母公司Alphabet发布了2019年第二季度业绩。受益于移动搜索、YouTube和云计算业务的强劲增长,Alphabet第二季度总营收为389.44亿美元,比上年同期增长19%;第二季度净利润为99.47亿美元,同比增长211%,均超出市场预期。

 

谷歌仍不断从广告商那里获取大量营销资金。在Alphabet第二季度营收中,广告业务仍是谷歌收入最大的业务,占当季营收的83.7%。谷歌二季度广告收入为326.01亿美元,高于去年同期的280.87亿美元,同比增长16%;谷歌其他营收为61.81亿美元,高于去年同期的44.25亿美元。

http://tech.163.com/19/0726/14/EL143TFN00097U7R.html

 

326亿美金季度广告收入,换成年来算,那将是千亿级别收入,而且是纯现钞交易。

 

可想,并没有单一的一个网站可以产生如此之多的收益,必须是千万级,乃至是亿级共同的流量,才造就了如此强劲的广告收益。

 

这么多网站,同时要给Google去发送时序数据,仅靠 MySQL, Oracle 任何单一产品都将无法承受。应对如此频繁的增量实时数据,时序数据库应运而生。

 

先来考察下 MySQL/Hadoop 的生态:

 

MySQL: 存储成本:时序数据压缩不佳;维护成本:分库分表,人工复杂;写入吞吐低;查询性能差:聚合分析没有优势;

 

Hadoop:数据延迟高:离线批处理,数据从产生到可分析,耗时长;查询性能低:严重依赖MapReduce;

 

以下是几个常用的时序数据库,而苏宁采用的便是 Druid.

 

640?wx_fmt=png

 

 

Druid 是典型的 Lambda 架构,能够将批次处理与实时处理有效隔离,在汇总层还能达到数据查询的一致性。非常适合搭建企业数据湖的项目。

 

 

640?wx_fmt=png

 

 

那么 Kylin 在苏宁大数据架构中,扮演什么角色呢?

 

 

640?wx_fmt=png

 

 

这就要说到非时序数据了。非时序数据在苏宁采用的存储主要是 PG (PostgreSQL, 一款开源数据库),通过对其改写,使其更好的与 Spark SQL 联合起来使用。在 PG 层,最终的结果是生成一系列依据维度建模创建的模型表。

 

 

640?wx_fmt=png

 

 

这些模型表,对于细粒度查询是非常有用的,但聚合起来就费时了。因此使用 Kylin 做了预聚合,典型的使用空间换时间的做法。

 

 

640?wx_fmt=png

 

 

做为一个完整的数据架构,必须由存储和计算组成。存储综上所述是分为时序与非时序两类,而计算更多采用的是 Spark SQL 来完成。

 

 

640?wx_fmt=png

 

 

640?wx_fmt=png

 

不是给做数据库的朋友故意制造焦虑,由上面的架构也看的出来,未来的数据应用更加偏向于场景定制化,哪种架构更适合用户应用场景,就会被构造出来,那种以数据库一招打遍天下模式的用法,已经一去不复返了!

 

 

 

 

640

 

精彩回顾:

 

禁用 SQL 游标,告诉你外面听不到的原因【内含福利】

SQL Join 不可不知的一点优化策略

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

看亿级用户电商如何玩转SQL大数据 的相关文章

  • 我的创作纪念日——看看我是如何一步一步发展的?

    关于我的创作纪念日 一 机缘 二 收获 三 日常 四 成就 五 憧憬 六 结尾 博主 拉莫帅 博文 127篇 原创 125篇 转载 2篇 总阅读量 337155 粉丝量 91 感谢大家一直以来对我的支持 以及关注 本人是一名从事移动开发人员
  • 一文看尽 27 篇 CVPR2021 2D 目标检测论文

    6月25日 CVPR 2021 大会结束 共接收了 7039 篇有效投稿 最终有 1366 篇被接收为 poster 295 篇被接收为 oral 其中录用率大致为 23 6 略高于去年的 22 1 CVPR 2021 全部接收论文列表 h
  • 一道关于C++虚函数和多继承的面试题

    问题 假设有两个基类A和B 它们有一个相同签名的虚函数void foo 但是拥有不同的实现 现在要求创建一个新类C 它同时继承A和B 也有相同的签名的函数void foo 并能分别对A和B中的foo函数进行重写 overwrite 已知条件
  • CTF Linux 命令执行常规bypass

    截断符 常见的RCE的形式是给一个ping的命令执行 只需要输入ip 然后返回ping ip的输出信息 常见的用来截断的符号 windows或linux下 command1 command2 先执行command1后执行command2 c
  • MySQL 卸载重装出现的问题:MySQL Server Instance Configuration Wizard 未响应

    问题 安装了MySQL用了一段时间后卸载了 再重装的时候 总会显示 MySQL Server Instance Configuration Wizard未响应 解决办法 Win7系统中 以管理员的权限登录系统 将C盘的ProgramData
  • 2020-08-28生活记录

    今天在无意之间发现一个大神上传的技术类的PDF书籍和学习资料 满满的干货现在放出链接地址 雨夜的博客
  • 买服务器操作系统怎么选择,买服务器操作系统怎么选择

    买服务器操作系统怎么选择 内容精选 换一换 提供预装操作系统 应用环境和各类软件的优质第三方镜像 无需配置 可一键部署 满足建站 应用开发 可视化管理等个性化需求 市场镜像经过服务商和华为云的严格测试 可保证镜像内容的安全性 市场镜像主要有
  • 【python】操作Excel和word模块

    一 Excel操作操作模块 xls和 xlsx使用的两种不同的模块 xls xlrd 常用函数 python操作excel主要用到xlrd和xlwt这两个库 即xlrd是读excel xlwt是写excel的库 data xlrd open
  • 混合双向无线传输装置助力智能工厂建设

    智能制造的出现 将为各制造企业解决现有问题 实现创新驱动转型提供了一条全新的发展思路和技术途径 智能工厂建设作为智能制造发展的载体 是当前制造业的发展愿景 也是正在积极努力的重点方向 但对于如何建设与企业战略规划一致且符合企业自身实际应用需
  • ES数据库学

    一 es数据库简介 1 简介 es数据库的英文全称为ElsticSearch 是位于Elastic Stack核心的分布式搜索和分析引擎 是一个由Apache开源的高扩展 全文检索和分析引擎 NoSQL数据库功能 的系统 它可以准实地快速存
  • ​5- GPIO操作

    本笔记是根据STM32F429单片机的 其他STM32单片机与此类似 基本上都一样的 会一款 其他的基本上没啥问题 本人也是刚学 有不足之处请下方评论 目录 笔记1 GPIO操作 1 1 读 修改 写操作 常用操作 位与 可实现目标字段的清
  • mysql 中show 命令用法详细介绍

    a show tables或show tables from database name 显示当前数据库中所有表的名称 b show databases 显示mysql中所有数据库的名称 c show columns from table
  • 专升本——倒装

    文章目录 1 动词的分类 2 完全倒装 3 部分倒装 3 1 前倒后不倒 4 也 的倒装 4 1 肯定 也 关键词 so 4 2 否定的 也 4 3 Only的倒装 4 3 1 补充 5 练习 6 As的倒装 7 练习 1 动词的分类 V
  • stm32学习笔记---GPIO口操作

    一 GPIO的基本概念及寄存器介绍 1 GPIO接口简介 通用输入输出接口GPIO是嵌入式系统 单片机开发过程中最常用的接口 用户可以通过编程灵活的对接口进行控制 实现对电路板上LED 数码管 按键等常用设备控制驱动 也可以作为串口的数据收
  • spring boot 处理请求的方式 Controller 与RestController

    spring boot 基于spring MVC的基础上进行了改进 将 Controller 与 ResponseBody 进行了合并成一个新的注解 RestController 当用户请求时 需要有视图渲染的 与请求数据的请求分别使用 C
  • 利用java工具实现发送Email

    目录 一 引言 二 封装建立相关session的工具类 三 发送电子邮件 一 引言 在电子邮件之前 人们发邮件通常是通过将信件投放到邮筒或交给邮递员然后经过交通运输到达收件人手里 电子邮件出现之后 类似的也是模仿这个原理 不过不是具体的纸质
  • 调试与优化

    文章目录 IDEA常用快捷键 单元测试JUnit 导包步骤 进行JUnit测试 IDEA常用快捷键 提示与代码生成部分 Alt Enter IDEA 根据光标所在问题 提供快速修复选择 Ctrl Alt T 对选中的代码弹出环绕选项弹出层
  • 毕业设计 单片机自动写字机器人 - 物联网 嵌入式 stm32

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 4 1 总体框架 4 2 AB32VG1主控MCU 5 软件说明 5 1 总体框架 6 部分核心代码 7 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提
  • java parser_java parser

    package org javaparser examples chapter2 import com github javaparser StaticJavaParser import com github javaparser ast
  • Seaborn常见绘图总结

    以前粗略的学习过Matplotlib绘图 Pandas绘图 这里是pandas的常见绘图总结 但是都未深入的去学习过 一遇到问题就翻文档 效率低下 听 他们 说matplotlib中的seaborn绘图很好看而且实用 所以 这里系统的总结一

随机推荐

  • web渗透测测试(sqlmap)

    通过分析靶机JLS02页面信息 寻找漏洞页面 将WEB服务存在SQL注入漏洞的页面名称作为Flag提交 Flag index2 php 通过本地PC中的渗透测试平台KALI2020对靶机进行SQL注入攻击 获取靶机的数据库信息 将用来存放W
  • JavaScript-----变量与数据类型

    目录 前言 1 注释 2 变量 定义变量 关键字 命名规范 3 数据类型 数据类型的判断 4 类型转换 前言 前面我们学过了C语言 Python Java之类的编程语言 所以我们有一定的基础的话学起来会比较轻松 同样的JavaScript也
  • hbase 知识点(1) hbase涉及维度

    1 数据模型 数据的存储方式 kv 非结构 2 存储模型 内存 磁盘 3 一致性 强一致性 4 物理模型 分布式 5 读写性能 同步写 副本支持读 6 辅助索引 key有效 bloom 7 故障管理 region移动 8 压缩 多种压缩算法
  • docker环境搭建实战--腾讯云课堂

    看完这篇文章 你会从一个docker小白变为一个不是那么菜的菜鸟 docker简介 docker是一个开放源代码软件项目 让应用程序部署软件的工作可以自动化进行 借此在linux操作系统上 提供一个额外的软件抽象层 以及操作系统层虚拟化的自
  • delphi操作ini文件

    INI文件操作 1 INI文件的结构 这是关于INI文件的注释部分 节点 关键字 值 INI文件允许有多个节点 每个节点又允许有多个关键字 后面是该关键字的值 类型有三种 字符串 整型数值和布尔值 其中字符串存贮在INI文件中时没有引号 布
  • J2SE-API:Object和System类的基本操作

    Object类 所有对象 包括数组 都实现这个类的方法 protected Object clone 创建并返回此对象的一个副本 boolean equals Object obj 指示其他某个对象是否与此对象 相等 protected v
  • PEP544——协议-结构化子类型(静态鸭子类型)

    文章目录 2 基本原理和目标 2 1 名义子类型 vs 结构子类型 2 2 非目标 3 结构子类型的现有方法 4 规范 4 1 术语 4 2 定义一个协议 4 3 协议成员 4 4 显式声明实现 4 5 合并以及拓展协议 4 6 泛型协议
  • 电商平台零售数据分析

    本次目标主要是利用RFM模型对用户进行分类 通过对比分析不同用户群体在时间 地区等维度下的交易量 交易金额等 总结分析结果并提出优化建议 R Recently 最近一次的消费时间 F Frequency 消费频率 单位时间的消费次数 M M
  • 高斯拟合原理_高斯过程回归(GPR)

    1 高斯过程是定义在连续域上的无限多个服从高斯分布的随机变量所组成的随机过程 2 高斯过程回归有两个视角 权重空间视角和函数空间视角 这两者是等价的 3 权重空间视角是贝叶斯线性回归与核函数的结合形式 4 函数空间视角是函数服从高斯过程的随
  • 人工智能的道德与伦理

    人工智能 人工智能 Artificial Intelligence 英文缩写为AI 它是研究 开发用于模拟 延伸和扩展人的智能的理论 方法 技术及应用系统的一门新的技术科学 谈到人工智能的伦理 首先就会想到各种机器人电影 从早些1968年的
  • LintCode-460. Find K Closest Elements

    Find K Closest Elements Given target a non negative integer k and an integer array A sorted in ascending order find the
  • mysql 输入密码后报错_mysql安装后输入密码登录不上数据库解决方案

    如果mysql你成功安装并且配置后 输入mysql u root p进入密码页面 输入密码后报错 错误为 MySQL ERROR 1045 28000 Access denied for user root localhost using
  • web前端需要掌握的PS技术

    做WEB前端 常常会用到的PS操作有以下几种 1 常规切图 2 生成图片资源 3 生成CSS代码 4 批量压缩图片 5 抠图技巧 6 修图技巧 7 图层操作 8 文字编辑 9 图像合成 前四个技术教程 web前端需要掌握哪些ps的操作呢 教
  • C语言 一维数组求和

    计算数组成员的总和是多少 include
  • 【Python】conda实现虚拟环境的创建

    conda实现虚拟环境的创建 虚拟环境的背景 在同一台主机上创建和运行不同的开发项目是一件很常见的事件 但是在这个过程中 难免会遇到项目的依赖具有差异的问题 即在每次切换不同的项目时 都必须考虑当前python软件包或模块的版本是否符合该项
  • 解决谷歌浏览器Chrome 代理设置不能上网的问题

    如图 打开fq软件后 就访问不了了 解决办法 如下图 点开设置 gt 直接搜索代理 gt 点击代理设置 在Intert属性中 gt 连接 gt 选择局域网设置 gt 设置成自动检测设置 保存 刷新网页就OK了
  • java学习过程报错合集

    1 基础入门篇 创建的新项目无法右键创建新的java文件 没有指定模版 去project structure创建一个需要的模版就可以创建模版 IDEA Error java 无效的源发行版 13 编译不统一我的理解是这样 如下操作可以解决
  • 机器学习---利用sklearn库实现SVM的花卉数据分类代码详解

    import numpy as np import pandas as pd from sklearn datasets import load iris from sklearn model selection import train
  • 会议OA项目之我的会议排座&批审功能

    目录 背景 一 会议排座 后台代码 前台代码 二 会议送审 后台代码 前台代码 背景 会议排座犹如我们日常生活中的餐桌礼仪 一般来说 面朝大门的座位是留给最年长或者最尊贵的客人的 所谓面朝大门即为尊说的就是这个 常遵循左卑右尊 而大门旁边的
  • 看亿级用户电商如何玩转SQL大数据

    图摘自微博 侵删 据艾瑞咨询的报道 2017 年中国家电行业 苏宁是最大的市场占有者 线上线下的组合 占据整个行业的 20 0 是京东 12 3 和国美电器 7 5 之和 而天猫已被拉入了第三阶梯 比较起来毫无竞争力 我认为家电行业要赶超前