阿里如何利用MongoDB 实现高性能大数据处理


概述

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

前言

考虑这样一个场景,有个数据量有10多亿数据的设备库,里面存放了注册的设备的信息,并且设备数据还可能会递增,然后业务集群需要对指定条件的设备群发信息,那么如何才能高效的来处理这个问题那?

思考

离线分析


为了不影响在线业务,以往需要把一份数据进行多次复制来分别进行业务交易和数据分析的问题,也就是业务交易的数据是在原来的库,而数据分析是通过手段把原来库数据定时同步到另外的存储设备离线分析。上面所说消息群发设备就可以使用这种方式,首先全量把数据同步到另外的存储设备,然后在定时把原来库里面的新数据增量到存储设备。

 离线库

 阿里云产品mondb介绍

对于存储设备可以选择阿里云产品MongoDB,原因是MongoDB 分片集群(Sharded Cluster)通过将数据分散存储到多个分片(Shard)上来实现高可扩展性。实现分片集群时,MongoDB 引入 Config Server 来存储集群的元数据,引入 mongos 作为应用访问的入口,mongos 从 Config Server 读取路由信息,并将请求路由到后端对应的 Shard 上。下面看下原理图


  • 用户访问 mongos 跟访问单个 mongod 类似;

  • 所有 mongos 是对等关系,用户访问分片集群可通过任意一个或多个mongos;

  • mongos 本身是无状态的,可任意扩展,集群的服务能力为“Shard服务能力之和”与“mongos服务能力之和”的最小值;

  • 访问分片集群时,最好将应用负载均匀的分散到多个 mongos 上。

Sharding Cluster使得集合数据被分散到多个Shard存储,也就是每个shard存放整体数据的一部分

<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值