前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >做物联网平台,MongoDB是首选

做物联网平台,MongoDB是首选

作者头像
希望的田野
发布2019-09-24 16:56:01
1.8K0
发布2019-09-24 16:56:01
举报
文章被收录于专栏:信息化漫谈信息化漫谈

至少前天接触了有致于做物联网平台的某鞋业集团,发现对MongoDB文档数据库理解还是不够深刻。今天再次在两台Linux CentOS主机安装了MongoDB数据库,对其高级特性进行了验证。有以下经验。

一、MongoDB无初始结构化的定义,有利于物联网数据的松散化管理。

1、我们插入两条文档数据,"name","color","failure" 元数据事先并未定义

> db.mxCollection.insert({"name":"car1","color":"yello"})

WriteResult({ "nInserted" : 1 })

> db.mxCollection.insert({"name":"car1","failure":"yes"})

WriteResult({ "nInserted" : 1 })

2、查询这两条数据,发现数据显示不像mysql,单元列存储无规则;而且默认有_id元数据,有利于进行唯一性的检索

> db.mxCollection.find()

{ "_id" : ObjectId("5cee854cc74bc88162353db6"), "name" : "car1", "color" : "yello" }

{ "_id" : ObjectId("5cee8589f918f3b3837a6c81"), "name" : "car1", "failure" : "yes" }

3、MongoDB直接架构在磁盘上,并未在HDFS上

标粗的两个文件即为数据库文件。

[root@ecs-maxing-0001 bin]# cd /data/db

[root@ecs-maxing-0001 db]# ls

journal local.0 local.ns maxing.0 maxing.ns mongod.lock storage.bson _tmp

二、MongoDB原生支持读写分离,以及自动主备切换

1、用rs.add命令在primary节点加入secondary节点,当主节点死亡时,将自动连接备节点。

2、比起mysql主从同步后,mysql切换节点需要proxy软件支持,而MongoDB数据库原生支持。不得不说,后起之秀的数据库的确先进了很多。

三、MongoDB原生支持数据切片,支持自动横向伸缩

Shard节点为真正的数据存储节点,而ConfigServer则进行数据的分配管理,RouterSDK安装在App端。通过RouterSDK与configServer的通信,实现自动选择Shard节点,满足数据在不同服务器存储的需求。Router前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用,实现了去中心化。

同时Shard节点支持自动弹性扩展、伸缩,任意增加、减少服务器不影响业务的运行。

MongoDB去中心、支持不中断业务的扩展,比Mysql的复杂分布式数据库配置的确先进、简单了不少。

因篇幅有限,明天我们测试一下数据库分片的实际效果。

四、MongoDB通过建索引可以极大加速数据检索时间

物联网的时代,数据增加非常之快,且数据量非常之在。比如一个物联网的智能穿戴手环,一天可能增加10M的数据量,后期的数据检索时间将非常痛苦。例如,想查询一年内,所有的走路步数,实际已经完成了一次count()计算。如果没有建索引,如果数据量很多,有可能十几分钟都难以得到结果。建索引后效果将提升很多,有利于物联网数据的大数据快速检索。

1、建立索引

> db.mxCollection.createIndex({"name":1})

{

"createdCollectionAutomatically" : false,

"numIndexesBefore" : 1,

"numIndexesAfter" : 2,

"ok" : 1

}

2、实测在1GB左右的数据量,从优化前的执行15.15S到优化后降至0.013S,性能提升了1000多倍。

> db.mxCollection.find({"name":"hello"}).pretty()

{ "_id" : ObjectId("5cee8b41d0e361b43e717d4d"), "name" : "hello" }

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信息化漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档