导语:

MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司、游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求,而数据湖探索DLI恰好解决了这一痛点。搭配华为云上DDS服务提供的MongoDB,DLI无需数据搬迁,便可以直接使用SQL分析,并且将分析后的数据导入OBS,RDS,DWS等更多的云上数据存储。当DLI遇见MongoDB,让数据不再成为“孤岛”。

一、X游戏公司的数据分析场景

X游戏公司最近新上了一款爆款手游A,日活突破百万,每月都能为X公司贡献数千万的利润。随着游戏业务量的迅猛发展,游戏数据分析师小鑫遇到了前所未有的挑战。

当时为了游戏快速上线,架构师选用华为云DDS服务提供的MongoDB数据库,用于用户数据存储。MongoDB高性能,易扩展,no-shema等特性,很好的支撑了游戏爆发式数据增长以及游戏玩法的快速更新迭代。但是,现在存储在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可以应付的了么?(待续)

点击这里→了解更多精彩内容

[技术分享]【DLI跨源】当DLI遇见MongoDB相关推荐

  1. 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制

    源宝导读:企业数字化生态建设中为解决集成多样性和资源统一管理的痛点引入企业级网关,网关作为资源访问的大门,身份认证鉴权是其业务的重中之重,本文将介绍企业级网关-天际集成开放平台是如何通过Identit ...

  2. 【华为云技术分享】揭秘华为云DLI背后的核心计算引擎

    云湖湖导读:本文主要给大家介绍隐藏在华为云数据湖探索服务(后文简称DLI)背后的核心计算引擎--Spark.DLI团队在Spark之上做了大量的性能优化与服务化改造,但其本质还是脱离不了Spark的核 ...

  3. mysql多源复制 知乎_技术分享 | MySQL 多源复制场景分析

    作者:杨涛涛 今天有客户问起:如何汇总多台 MySQL 数据到一台上? 我回答:可以尝试下 MySQL 的多源复制. 我们知道 MySQL 单主一从,单主多从,或者级联的主从架构我们都见的很多了.但是 ...

  4. 【华为云技术分享】上亿条数据,如何查询分析简单又高效?

    正值618大促,小张遇到了一个棘手的问题,需要在一周内将公司近1年电商部门的营收和线下门店经营数据进行联合分析. 这将产生哪些数据难题呢? 数据孤岛:电商部门的数据存在数仓A.门店经营收入数据存在数仓 ...

  5. 阿里技术分享:闲鱼IM基于Flutter的移动端跨端改造实践

    本文由阿里闲鱼技术团队祈晴分享,本次有修订和改动,感谢作者的技术分享. 1.内容概述 本文总结了阿里闲鱼技术团队使用Flutter在对闲鱼IM进行移动端跨端改造过程中的技术实践等,文中对比了传统Nat ...

  6. 通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说

    原文http://www.cnblogs.com/cyq1162/archive/2012/11/07/2756848.html 上节内容: 1:通用社区登陆组件技术分享(开源)上篇:OAuth 授权 ...

  7. php源码二次开发的技术,Thinkphp二次开发威客RW平台源码详细搭建教程(技术分享帖)-一颗优雅草科技yungui...

    Thinkphp二次开发威客RW平台源码详细搭建教程(技术分享帖)-一颗优雅草科技yungui原地址:这里不能发 应会员要求,本着互帮互助的原则,在这里出一套搭建教程. 首先 查看是否跟我的运行环境一 ...

  8. 【技术分享篇】Linux内核——手把手带你实现一个Linux内核文件系统丨Linux内核源码分析

    手把手带你实现一个Linux内核文件系统 1. 内核文件系统架构分析 2. 行行珠玑,代码实现 [技术分享篇]Linux内核--手把手带你实现一个Linux内核文件系统丨Linux内核源码分析 更多L ...

  9. 【华为云技术分享】详解浏览器跨域的几种方法

    1前言 2背景知识介绍 2.1同源政策 2.2为什么要有跨域限制 3浏览器跨域的解决方案 3.1 CORS标准 3.2 CORS跨域判定的总体流程 3.3简单请求 3.4非简单请求 3.5 CORS相 ...

最新文章

  1. 量子技术发展的一小步:Google AI推出开源框架Cirq
  2. python列表的切片操作
  3. sun.misc.BASE64Encoder 不建议使用java.sun自带包中的内容
  4. 浅谈计算机程序设计语言,探讨计算机程序设计语言教学
  5. 【Python】Matplotlib在直方图中添加概率密度曲线和数学表达式
  6. 10款 非常酷炫的网站首页焦点图 兼容ie浏览器
  7. python使用sphinx自动生成文档
  8. 爬虫(十五):scrapy中的settings详解
  9. centos7 firewalld
  10. 斯坦福大学的Gss Audio Codec 调试分析
  11. 基于STM32的电量采集系统
  12. Word转PDF后,排版错乱怎么办?
  13. 13个提炼卖点的角度,让你的产品大卖!
  14. 启动优化之一——启动分析及优化方案
  15. Linux下基于UDP协议实现的聊天室项目(附源码)
  16. 插入数据报错:ISAM error:no free disk space
  17. linux 申请连续内存,Linux-Linux应用层编程,如何申请物理地址连续的内存空间?...
  18. 大学计算机课程制作生日卡片,DIY手工制作生日贺卡
  19. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第三步---编辑器(2)---更方便更多操作更像编辑器
  20. 用水流的概念来玩硬件(二)----三极管

热门文章

  1. Bootstrap 插件的选项
  2. CSS IE6躲猫猫Bug
  3. CSS 普通流 和 行格式化上下文 IFC
  4. 深度学习笔记(12) Batch归一化网络
  5. oracle获取上年年初,【Oracle】TRUNC:获取去年年初和年末,获取月初和月末;
  6. php geteditor,wordpress函数get_editor_stylesheets()用法示例
  7. 在搜索框自动输入文本_【Zotero文档翻译】管理篇:搜索
  8. django,form表单,数据库增删改查
  9. 2、组件注册-@Configuration@Bean给容器中注册组件
  10. 线段树——最大数——洛谷——1198