数据库
首页 > 数据库> > 从数据库底层说起,探究用户画像系统的储存该如何选型

从数据库底层说起,探究用户画像系统的储存该如何选型

作者:互联网

1.什么是用户画像

在给用户画像做定义之前,我们先来了解一下什么是推荐系统

场景:

在现在的互联网时代,网上购物已经称为常态,当我们在各大电商平台购物的时候,不难发现这样一个现象。当你搜索某个上面进行浏览的时候,点击目标商品,之后返回到首页,很大概率你就可以发现,你刚才搜索的商品的相关产品已经在首页的推荐栏目。例如,你购买了一件护肤品面霜,回到首页推荐处,系统可能就会给你推荐口红或者相关护肤品。又例如当你搜索用户画像书籍的时候,推荐栏目就会出现有关用户画像的书籍。这些功能就叫做推荐,而完成这些行为的即为推荐系统。

在这里插入图片描述

本质:

推荐系统就是对用户的浏览行为进行记录分析,并基于这些行为对用户将要购买的商品进行预测。老王购买了用户画像的书籍,那么老王便与这本书之间产生一个连接。小丽购买了护肤品,那么小丽便于这个护肤品之间产生了连接。而推荐系统就是根据一些算法去预测用户与商品之间还未产生的连接。

来看一张简单的用户画像表:

客户ID客户年龄所在省份生日性别购物喜好
00122广东20000821电子产品
00222北京20000908科技类书籍
00323河北19991201化妆品

给用户画像下定义:

2.用户画像在储存方面的要求
3.一号选手:Mysql

在这里插入图片描述

mysql这个数据库大家应该都不陌生,这里我们从这个数据库的底层结构开始说起,mysql底层所选用的数据结构为B+树,说到B+树这里就不得不提一下另一种数据结构B数

B树介绍

在这里插入图片描述

上图是一个 B树 的形式, 每个节点有两个数据元素, 每个节点有三个子节点, 每个叶子节点有两个数据元素

无论是什么形式的 B树, 都具备以下定理, 这四个定理也是保证 B树 插入和删除能够平衡的原因

  1. 根节点至少两个子节点
  2. 每个中间节点都包含 m 个孩子, 每个中间节点都包含 m - 1 个数据元素
  3. 最底层的节点称之为叶子节点, 所有叶子节点都位于同一层
  4. 所有节点中的数据元素按照大小排列, 所有子节点按照数据元素的大小排列, 父节点的数据元素恰好是子节点数据元素的值域划分点

B树插入规则:

B树存在的问题:

基于B树存在的这些问题,B+树出现了

B+树:

在这里插入图片描述

B+树的特性:

B+数的优点:

B+树与MySql的关系:

聚集索引:

在这里插入图片描述

非聚集索引:

在这里插入图片描述

MySQL的索引类型:

总的来说,无论是否聚集, MySQL 中的索引都是 B+树 结构

MySQL特性总结:

MySQL存在的问题:

4.二号选手:Hbase

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,参考谷歌的BigTable后使用java语言进行了实现。也是Apache软件基金会的Hadoop项目的一部分,可以运行运行在HDFS文件系统容错地存储海量稀疏的数据。

先来说说LSM-Tree

LSM-Tree全称是Log Structured Merge Tree,是一种分层,有序,面向磁盘的数据结构,其核心思想是充分了利用了,磁盘批量的顺序写要远比随机写性能高出很多。

如图为LSM-Tree日志合并树

在这里插入图片描述

当我们的log以这种格式写入的时候,全部都是以Append的模式追加的,不存在删除和修改,这种结构虽然大大提升了数据的写入能力,但是以牺牲部分读取性能为代价,索引这种结构通常适合于写多读少的场景。故LSM被设计来提供比传统的B+树或者ISAM更好的写操作吞吐量。

Hbase与LSM-Tree

HBase 的一个表有多个 Region 分布在多个 RegionServer 上, 一个 RegionServer 有多个 Region

在这里插入图片描述

每个 Region 又分为 Memstore 和 DiskStore, 其实就是 LSM树

在这里插入图片描述

HBase 的存储结构是 Key-Value

虽然 HBase 对外提供的看起来好像一种表, 但其实在 Region 中, 数据以 KV 的形式存在

在这里插入图片描述

一级缓存: BlockCache

在这里插入图片描述

二级缓存: 当查找数据时, 会先查内存, 后查磁盘, 然后汇总返回

综上所述:

5.用户画像储存选型

对上面所提到的数据库再进行一次总结:

MySQL

Hbase

MySQL VS Hbase

  1. 从存储形式上来看, 选 HBase, HBase 是 KV 型数据库, 是不需要提前预设 Schema 的, 添加新的标签时候比较方便
  2. 从使用方式上来看, 选 MySQL 似乎更好, 但是 HBase 也可以, 因为并没有太多复杂查询
  3. 从写入方式上来看, 选 HBase, 因为画像的数据一般量也不小, HBase 可以存储海量数据, 而 MySQL 不太适合集群部署

总结:

最终选择的方案为HBase,其实在大数据的生态圈中还存在着很多数据储存的工具,例如Hive,ES等等,在特定的情况下这些输出储存工具也是可取的。

标签:画像,数据库,探究,用户,选型,MySQL,HBase,数据,节点
来源: https://blog.csdn.net/weixin_45574790/article/details/120685284