共计 2456 个字符,预计需要花费 7 分钟才能阅读完成。
导语:
MongoDB 作为灵便高效易扩大的 no-schema 数据库,越来越受到互联网公司、游戏行业等开发者的青眼,然而 MongoDB 有着独特的语言接口,并不能很好满足数据分析师构建数据治理利用的需要,而数据湖摸索 DLI 恰好解决了这一痛点。搭配华为云上 DDS 服务提供的 MongoDB,DLI 无需数据搬迁,便能够间接应用 SQL 剖析,并且将剖析后的数据导入 OBS,RDS,DWS 等更多的云上数据存储。当 DLI 遇见 MongoDB,让数据不再成为“孤岛”。
一、X 游戏公司的数据分析场景
X 游戏公司最近新上了一款爆款手游 A,日活冲破百万,每月都能为 X 公司奉献数千万的利润。随着游戏业务量的迅猛发展,游戏数据分析师小鑫遇到了前所未有的挑战。
过后为了游戏疾速上线,架构师选用华为云 DDS 服务提供的 MongoDB 数据库,用于用户数据存储。MongoDB 高性能,易扩大,no-schema 等个性,很好的撑持了游戏爆发式数据增长以及游戏玩法的疾速更新迭代。然而,当初存储在 MongoDB 里的海量数据,犹如暗藏在群山中的矿脉,如何能力开掘其中更大价值?如何筛选出优质客户从而提供更好地服务?如何剖析用户行为,为游戏开发提供切实可行的数据反对?。。。种种数据分析需要,让小鑫抓狂了,他急需一种易用高效的剖析工具,帮助他实现数据挖掘工作。
二、MongoDB 的数据存储
在解决小鑫的问题之前,让咱们来理解一下 MongoDB。它是面向文档的数据库,介于关系型数据库和非关系型数据库之间,具备十分弱小的扩大能力。其数据库里的一条记录就是一个文档,它由域和值对组成。MongoDB 的文档是一个键值 (key-value) 对,相似于一个 json 对象。但 MongoDB 的文档不须要设置雷同的字段,并且雷同的字段不须要雷同的数据类型,这也是 MongoDB 的突出特点。
MongoDB 的劣势在于,其一:性能强。MongoDB 领有弱小数据长久能力,缩小对数据库系统的输出 / 输入操作;通过构建索引,反对更快的查问速度,并能够反对从嵌入式文档和数组中返回键值。其二:反对丰盛的查询语言。MongoDB 具备良好的开放性和兼容性,反对多种语言进行读写操作、文档搜寻、数据聚合等操作,当然这些 API 是 MongoDB 特有的,存在肯定学习老本。其三:便捷的复制能力。MongoDB 提供一种叫正本集(replica set)的服务,将数据分布在多台机器上以实现数据冗余和主动故障转移。其四:扩展性强。MongoDB 的外围性能之一就是良好的扩大能力。通过分片的形式将数据分布在一组计算机中,让每一个服务器外面存储的数据都是一样大小。
三、DLI 锋芒毕露
小鑫找到了华为工程师 Z,小 Z 向小鑫极力推荐华为云数据湖剖析利器 DLI,只有你会 SQL,就能玩转云上各种数据源,包含了 DDS。DLI 提供跨源交融剖析性能,兼容 SQL,SPARK,FLINK 编程 API, 只需轻松几步,便可剖析 DDS 中的 MongoDB 数据,无需数据搬迁。“这么神奇?”小鑫蠢蠢欲动。小 Z 立即祭出了,DLI 剖析 MongoDB 三版斧:
1. 建设跨源连贯
DLI 剖析集群和用户的 DDS 集群分属不同的虚构子网,存在网络隔离,而建设跨源连贯,即可买通 DLI 集群与 DDS 集群的网络。具体步骤是
- 先查看 DDS 集群网络信息,记录下集群所属 VPC、子网、子网网段
- 在 DLI 跨源连贯治理界面,创立指向 DDS 的增强型跨源连贯,在连贯中指定 DDS 所属的 VPC 和子网
- 最初在新建的跨源连贯中绑定用户队列,增强型跨源连贯绑定的队列须要是非按需队列
2. 创立跨源表
小鑫的样例数据包含了一个用户汇合,一个配备汇合。用户汇合中寄存着用户信息,配备汇合中寄存着用户游戏配备信息。
在 DLI SQL 编辑器中,执行创立 MongoDB 跨源表的 SQL,创立关联的用户表和配备表,如下所示
CREATE TABLE user(
account string,
phone string,
age int,
sex string,
credit int,
lastlogin int
) USING MONGO OPTIONS (
'url' = '192.168.0.95:8635,192.168.0.98:8635/test?authSource=admin',
'database' = 'test',
'collection' = 'user',
'user' = 'rwuser',
'password' = '***'
);
CREATE TABLE equipment(
account string,
eq_id int,
attack int,
defence int,
weight int,
name string,
value int
) USING MONGO OPTIONS (
'url' = '192.168.0.95:8635,192.168.0.98:8635/test?authSource=admin',
'database' = 'test',
'collection' = 'equipment',
'user' = 'rwuser',
'password' = '***'
);
建表胜利将在界面中返回胜利。
3. 查问剖析
建表实现后,在华为工程师的领导下,小鑫开始了再 DLI 中的数据摸索,他先执行了一些简略的查问语句:
/*
查问成年用户
*/
select * from user where age >= 18
/*
查问配备 id 为 666 福星配备的记录
*/
SELECT * FROM equipment where eq_id = 666
之后,他又试了试两张表关联查问语句:
/*
查问领有福星配备的未成年用户信息
*/
select * from user as a join equipment as b where a.account=b.account and a.age < 18 and b.eq_id=666
后果如图所示:
看来这些根本的 sql 查问基本不在话下,小鑫着手开发游戏数据 ETL,并很快搞定了业务部门的需要,播种了领导的认可。但需要总在变动,还有更加紧急的需要在等着小鑫,而 DLI 能够应酬的了么?(未完待续 …)
点击关注,第一工夫理解华为云陈腐技术~