导语:

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可以应付的了么?(未完待续...)

点击关注,第一时间了解华为云新鲜技术~

【华为云技术分享】DLI跨源|当DLI遇见MongoDB的更多相关文章

  1. 成为高手前必懂的TCP干货【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  2. Python正则表达式,看完这篇文章就够了...#华为云&#183;寻找黑马程序员#【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  3. AIOps产品与架构浅析【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  4. Spring Boot 最流行的 16 条实践解读!【华为云技术分享】

    置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. Spring Boot是最流行的用于开发微服务的Java框架.在本文中,将与大家分享自2016年以来笔者 ...

  5. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  6. 挑战10个最难的Java面试题(附答案)【上】【华为云技术分享】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/devcloud/article/deta ...

  7. 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

    1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...

  8. 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?

    [摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...

  9. 【华为云技术分享】数据库开发:MySQL Seconds_Behind_Master简要分析

    [摘要]对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数.通过在slave上执行"show slave status;& ...

  10. 【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

    当今K8s独霸天下之时,咱们站在更高的角度,好好的看看K8s网络是以什么理念构筑的.以及一个容器集群的好保姆,是如何分别照顾 南北流量和东西流量的. 一.简单介绍下Kubernetes 略..容器集群 ...

随机推荐

  1. Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!! 片尾有彩蛋

    语言:Python 功能: 1.清洗CSV文件中重复数据. 2.保存为CSV文件 大体流程: 1.首先观察CSV文件中的数据布局格式如何? 2.通过csv包读取数据.并根据规则使用continue,来 ...

  2. Cloud Bursting解决方案,Serverless容器降本增效极致体验

    本文分享自华为云社区<DTSE Tech Talk | 第42期:Cloud Bursting解决方案,Serverless容器降本增效极致体验>,作者:华为云社区精选. 线下IDC自建K ...

  3. 【Spring】AOP实现原理

    注册AOP代理创建器 在平时开发过程中,如果想开启AOP,一般会使用@EnableAspectJAutoProxy注解,这样在启动时,它会向Spring容器注册一个代理创建器用于创建代理对象,AOP使 ...

  4. 搞懂Event Loop

    本文关键: V8是单线程的 任务队列排队执行 抽出io命令抽出到evenloop线程,消息线程,区别与主线程.(同步和异步) 微任务和宏任务执行顺序 重绘和回流 以上流程无限循环 可以这样理解,一个人 ...

  5. QT(9)-QStyleOption及其子类

    1 QStyleOption QStyleOption及其子类包含QStyle函数绘制图形元素所需的所有信息. 出于性能考虑,成员函数很少,对成员变量的访问是直接的(即使用.或者->运算符).这 ...

  6. [数据校验/数据质量] 数据校验框架:hibernate-validation

    0 前言 其一,项目中普遍遇到了此问题,故近两天深入地研究了一下. 其二,能够自信地说,仔细看完本篇,就无需再看其他的Java数据校验框架的文章了. 1 数据校验框架概述 1.0 数据校验框架的产生背 ...

  7. windows11配置wsl2虚拟linux环境

    windows11配置wsl2虚拟linux环境 wsl( Windows Subsystem for Linux )是microsoft官方为windows开发的模拟Linux方法.避免了虚拟机vm ...

  8. 万字长文:从 C# 入门学会 RabbitMQ 消息队列编程

    RabbitMQ 教程 目录 RabbitMQ 教程 RabbitMQ 简介 安装与配置 安装 RabbitMQ 发布与订阅模型 生产者.消费者.交换器.队列 多工作队列 交换器类型 Direct F ...

  9. 洛谷5789 [TJOI2017]可乐(矩阵快速幂,Floyd思想)

    题意:可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机触发一种行为.现在给加里敦星球城市图,在第 0秒时可乐机器人在 1号城市,问经过了 t秒,可乐机器人的行为方案数是多少 ...

  10. 有什么BI工具可以实现中国式报表?

    BI(Business Intelligence)工具是指用于帮助企业收集.分析.处理和展示数据的软件工具,以支持企业决策制定和业务运营优化的技术系统. 中国式报表在BI工具中的实现主要涉及到对中国商 ...