




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IoT系统中的MongoDB架构设计第1页,共28页。开篇通过一个实际IoT案例的分析,讨论如何使用MongoDB解决一个实际的需求?需要考虑哪些方面的问题?第2页,共28页。理论篇第3页,共28页。IoT系统的特点海量数据入库采样点越密,数据量越大设备越多,数据量越大灵活的数据模型设备类型越多,模型越多变软件迭代越快,模型变化越多高并发访问设备/用户越多,反馈数据越密集区域分散性设备分散在各地但需要集中处理分析需求数据的价值来自分析数据乱序设备网络问题导致的数据乱序第4页,共28页。MongoDB的应对海量数据入库水平扩展灵活的数据模型原生支持高并发访问水平扩展区域分散性区域分片分析需求Ag
2、gregationSpark ConnectorBI Connector数据乱序数据模型+应用端解决第5页,共28页。结论MongoDB非常适合支撑IoT系统第6页,共28页。实践篇第7页,共28页。案例需求介绍涉及的IoT设备包括但不限于:电灯,门禁,插座等室内设备;员工笔记本定期上报数据;厂区穿梭车定期上报数据;规划设备数量:1000万;数据上报频率:平均5分钟,但依设备不同,上报频率为1分钟至1小时不等;数据大小:0.2KB/条;数据存储时间:1年以上;数据使用:提取某设备某时间段内的所有数据供下游系统分析。50tps,2s;给定位置范围,给定时间段,获取所有数据。10tps,4s;第8
3、页,共28页。设计目标MongoDB架构满足需求的数据模型MongoDB容量规划第9页,共28页。一点数学计算插入性能1000万/5分钟/60秒 30000 次/秒文档总量1000万 * 365天 * 24小时 * 60分钟 / 5分钟 = 10512亿 / 年数据容量10512亿 * 0.2KB 210TB压缩后容量210TB * 30%1 63TB第10页,共28页。数据模型Q:什么是分桶模式?A:把n条数据聚合后放在一个文档里。 _id: ObjectId(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate
4、(2019-01-01T00:00:00+0800), data: time: 00:00, value: ., time: 00:30, value: ., time: 01:00, value: ., . 假设每小时1个桶,每30秒1条数据总共120条分桶后数据量 = 总数据量 / 120第11页,共28页。更深入的理解分桶分桶模式背后的意义是什么?大幅度减少重复数据带来的额外负担;数据本身的IO消耗修改索引带来的IO消耗IoT系统中的海量数据大部分时候没有必要进行细粒度的查询;在高并发、海量数据应用场景中,每条数据减少一点开销,最后累计都将带来可观的收益!土豪随意 _id: Object
5、Id(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate(2019-01-01T00:00:00+0800), data: time: 00:00, value: ., time: 00:30, value: ., time: 01:00, value: ., . 重复的数据粒度第12页,共28页。一个典型场景本例中的场景:提取某设备某时间段内的所有数据供下游系统分析。50tps,2s;桶1桶2时间桶n用户需要的范围桶n+1索引提供的范围应用过滤的部分第13页,共28页。还有一个问题IoT设备因为网络不稳定造成的
6、数据乱序问题怎么解决? _id: ObjectId(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate(2019-01-01T00:00:00+0800), data: time: 00:00, value: ., time: 01:00, value: ., time: 00:30, value: ., . _id: ObjectId(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate(2019-01-01T00:00:00+08
7、00), data: 0000: ., 0130: ., 0030: ., . 方案一$push: time: 00:00, value: . 桶内无序,桶间有序应用侧完成桶内排序方案一方案二方案二$set: data.0000: .应用侧按顺序遍历第14页,共28页。另一个场景本例中的另一个场景给定位置范围,给定时间段,获取所有数据。10tps,4s; _id: ObjectId(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate(2019-01-01T00:00:00+0800), data: 0000: l
8、oc: ., 0130: loc: ., 0030: loc: ., . _id: ObjectId(.), sensorId: 传感器ID, region: CN, groupId: 100, bucketTime: ISODate(2019-01-01T00:00:00+0800), data: time: 00:00, loc: ., time: 01:00, loc: ., time: 00:30, loc: ., . db.coll.createIndex(data.loc: 2d) db.coll.createIndex(?)第15页,共28页。小结Step 1: 了解MongoD
9、B的优势Step 2: 列出可选解决方案Step 3: 根据实际情况选择最佳方案第16页,共28页。下一步该干什么?如何写数据?update(sensorId: ., bucketTime: ISODate(.), $push: , upsert: true);如何读数据?find(sensorId: ., bucketTime: $gt: ISODate(.), $lt: ISODate(.)find(bucketTime: $gt: ISODate(.), $lt: ISODate(.), loc: $geoWithin: .)如何聚合数据?按何种粒度预处理?索引怎么建?第17页,共28页
10、。然后?造假!第18页,共28页。造假的方式benchRun: mongo shell集成的压测工具/mongodb/mongo/wiki/JavaScript-Performance-Testing-HarnessPOCDriver: MongoDB工程师编写的压测工具/johnlpage/POCDriver/Java Faker: Ruby Faker的Java移植版,帮助你更精准地造假/DiUS/java-fakerYCSB: (略)第19页,共28页。造假的目的取得压测结果,评估性能指标取得参考压缩率,评估容量取得索引大小,评估内存容量第20页,共28页。目前得到的信息数据模型索引压测数据容量索引大小IOPS容量规划机器规格第21页,共28页。容量规划的原则分片容量视节点硬件性能,每个分片数据量建议不超过3TB压缩前不含索引主节点从节点数据同步oplog同步oplog210TB / 3TB = 70 片第22页,共28页。容量规划的原则内存内存必须容纳热数据的索引索引在磁盘和内存中都是前缀压缩的CacheSizeGB = (RAM - 1GB) * 50%70片共有多少内存?第23页,共28页。容量规划的原则IOPS分片IOPS总和大于测试推算出的总IOPS建议使用SSD重读写时建议RAID 10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商丘市重点中学2025届初三下学期第二次段考化学试题试卷含解析
- 苏州健雄职业技术学院《建筑环境前沿技术》2023-2024学年第二学期期末试卷
- 辽宁省抚顺德才高级中学2025年高三高考适应性月考(一)化学试题含解析
- 咸宁职业技术学院《大学体育-乒乓球》2023-2024学年第一学期期末试卷
- 模电 1.3 晶体三极管学习资料
- 内蒙古自治区鄂尔多斯市达标名校2025年初三下学期联合语文试题含解析
- 南京视觉艺术职业学院《康复体操》2023-2024学年第二学期期末试卷
- 西藏大学《临床基本技能学2》2023-2024学年第二学期期末试卷
- 清华大学中学2025届高三下学期第二次质量测试物理试题含解析
- 豫章师范学院《室内专题设计1》2023-2024学年第一学期期末试卷
- asme焊接工艺评定
- 2024年口腔医疗相关项目招商引资方案
- 培训固定资产管理制度
- 电厂灰场环境风险评估报告
- 原子核物理实验方法课后习题(附答案)
- 医疗废物处理中的安全与风险管理
- 国企投资培训课件
- 客人醉酒服务流程
- 财政局保密知识讲座
- 克罗恩病 护理查房课件
- 2024年贵州路桥集团招聘笔试参考题库含答案解析
评论
0/150
提交评论