导语:

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能够应酬的了么?(未完待续...)

点击关注,第一工夫理解华为云陈腐技术~