MongoDB存储服务方案设计_第1页
MongoDB存储服务方案设计_第2页
MongoDB存储服务方案设计_第3页
MongoDB存储服务方案设计_第4页
MongoDB存储服务方案设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、mongodb存储服务方案设计2012-03-14目录1.需求分析31.1 客车平台和货运平台现有需求31.2 现有平台存储服务上存在问题52.方案设计72.1 存储服务方案设计目标72.2 存储方案设计细则72.2.1 gps实时数据存储设计72.2.2 拍照数据存储设计82.2.3 gps历史数据查询设计92.2.4 gps数据统计设计102.2.5 拍照数据发布和查询设计112.3 存储服务业务流程框架设计113.方案部署架构设计123.1 存储服务(mongodb)部署架构规划设计123.2 存储服务(mongodb)数据分片规划设计143.3 存储服务(mongodb)实例部署规划设

2、计143.4 存储服务(mongodb)服务器硬件、网络和操作系统规划设计153.5 mongodb版本规划设计163.6 存储服务(mongodb)运营监控规划设计164.方案实施174.1 实施步骤174.2 方案整体实施计划17附件1: 存储服务表(mongodb collection)结构设计18附件2: 存储服务(mongodb)对外接口统一定义262.1更新类接口262.2 查询类接口312.3 统计接口39附件3: 存储服务(mongodb)安装部署说明413.1 安装mongodb413.2 mongodb分片配置423.2.1 分片服务器(sharding)配置423.2.2

3、 副本集(replica set)配置433.2.3 启动并配置三台config server433.2.4 部署并配置三台routing server443.2.5 命令行添加分片44gps数据存储服务方案设计1. 需求分析1.1 客车平台和货运平台现有需求1) 实时数据文件存储类a. 实时轨迹数据:传统文件方式存储,一条轨迹150b,每天上报8640次,一天大约为1m;轨迹文件格式说明:偏移经度: 偏移纬度: gps时间: gps 速度: 正北方向夹角: 车辆状态: 报警编码:经度:纬度:海拔:里程:累计油耗:发动机运行总时长:引擎转速(发动机转速):位置基本信息状态位:报区域/线路报警:

4、冷却液温度:蓄电池电压: 瞬时油耗: 行驶记录仪速度: 机油压力: 大气压力: 发动机扭矩百分比: 车辆信号状态:系统时间rn特点:数据频率高,数据量大。b. 实时报警数据:传统文件方式存储,一条报警100b,每天上报8640次,一天大约为800k;报警文件格式说明:报警编码:偏移经度: 偏移纬度:经度:纬度:gps时间: gps 速度: 正北方向夹角:累计油耗: 里程: 报区域/线路报警: 海拔:系统时间rn特点:数据频率高,数据量大。c. 驾驶行为事件:传统文件方式存储,一条驾驶行为事件100b,每天上报不固定,根据实际生产环境观察,平均每天最大300k;特点:数据频率不高,数据量小。d.

5、 发动机负荷率:传统文件方式存储,一条发动机负荷率200b,每天上报360次,一天大约为80k;特点:数据频率不高,数据量小。e. 拍照数据,图片文件,每天上报数据量不定特点:数据频率不高,数据量小。f. 盲区补传轨迹文件:轨迹文件统计最大数,这里不做统计;g. 盲区补传报警文件:报警文件统计最大数,这里不做统计;2) 实时数据传统数据库存储类oracle数据库存储a 存储非法轨迹位置;b 更新车辆最后位置;c 存储、更新车辆上下线;d存储、更新车辆报警;mysql数据库存储a 更新车辆最后位置b存储、更新车辆报警3)操作指令传统数据库类oracle数据库存储a. 存储、更新下行指令,建议放在

6、mongodb中,用capped collection来存放。b. 存储车辆多媒体事件c. 存储车辆多媒体信息d. 存储车辆注册,建议放在oracle数据库中。e. 存储车辆鉴权,建议放在oracle数据库中,同步到redis中供鉴权服务用。f. 存储车辆注销,建议放在oracle数据库中。g. 存储车辆事件报告h. 存储车辆信息点播,建议放在oracle数据库中。i. 存储车辆电子运单,建议放在oracle数据库中。j. 存储车辆驾驶员信息,建议放在oracle数据库中,同步到redis,防止二次访问数据库。k. 存储车辆行驶记录仪信息,建议放在oracle数据库中。l. 存储、更新车辆调度

7、信息,建议放在oracle数据库中。m. 更新车辆照片信息n. 更新终端参数信息o. 更新路线信息,建议放在oracle数据库中。p. 更新电子围栏,建议放在oracle数据库中。q. 存储、更新终端参数设置,建议放在oracle数据库中。r. 更新终端版本号,建议放在oracle数据库中。s. 存储多媒体数据检索t. 存储上行透传信息u. 存储数据压缩透传v. 更新提问应答mysql数据库存储:a. 存储、更新下行指令,建议废弃mysql,用redis来替代。b. 存储车辆多媒体信息,建议废弃mysql,用redis来替代。4)历史数据查询统计类a. 轨迹回放条件:gps时间(开始时间、接收

8、时间)、vid;b. 区域查车(当前区域内车辆)条件:车辆类型、车辆速度、是否报警;c. 区域协查(历史区域内车辆)条件:gps时间;d. 历史报警条件:类型、状态、时间;1.2 现有平台存储服务上存在问题1) 盲区补传数据分离问题;2) 跨多天历史轨迹查询的问题;3) 报警数据和gps实时数据分离的问题;4) 区域查车、区域协查的准确性和计算效率问题;5) 报警数据、can总线数据统计分析问题,mongodb提供mapreduce(一个大规模数据并行计算技术,源于google)服务来进行统计分析;6) 拍照数据问题(统一管理,方便访问);7) 业务流程、数据流程合理性问题;8) 设计质量问题

9、,如下:3|165694816606456724140420020120312/172641|165694236606454524141519920120312/1726429) 集群、负载均衡问题;10) 高可用性问题(在线扩容、故障转移);11) 运营监控问题(存储实例监控);2. 方案设计2.1 存储服务方案设计目标利用mongodb来一体化解决gps实时数据(高并发)存储和相关的查询统计业务(如历史轨迹查询),并解决存储服务的长期运营的高可用性问题。具体包括:a. 解决gps实时位置信息存储问题(高并发写、高速查询、高速统计分析);b. 解决gps报警数据存储问题(高并发写、高速查询、

10、统计分析);c. 解决司机驾驶行为数据存储问题(高并发写、高速查询、统计分析);d. 解决拍照数据存储问题(高并发写、自动发布、高速查询);e. 解决区域查车、区域协查等运算量大的业务统计问题;f. 解决存储服务高可用性问题(如负载均衡、线性扩容、故障转移、灾备恢复、服务监控等);最终目标:简化现有平台业务流程,减少故障节点,提高存储服务的高可用性。2.2 存储方案设计细则2.2.1 gps实时数据存储设计针对gps实时数据存储,存储服务提供c/c+客户端接口,供通信系统调用,可以直接把gps数据存放在mongodb中,而调用者无需关系mongodb的性能和负载问题。mongodb采用目前通用

11、的json格式,并提供json格式的解析和组装包,支持c/c+、java、javascript、flex等众多主流开发语言,方便平台各层面来使用。针对mongodb的数据格式特点,我们把gps实时数据格式定义为标准json格式,其定义如下:1) gps实时数据格式定义详见“附件1“ 和 ”附件2“相关定义。 2) 司机驾驶行为数据司机驾驶行为现有平台的数据格式:驾驶行为类型|起始位置纬度起始位置经度起始位置高度起始位置速度起始位置方向起始位置时间|结束位置纬度结束位置经度结束位置高度结束位置速度结束位置方向结束位置时间。具体数据样例:3|1656948166064567241404200201

12、20312/172641|165694236606454524141519920120312/172642。3) 发动机负荷率数据格式:无固定格式(base64后得到)具体数据:-1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000mongodb数据库格式定义(json)vid : 311,ts : isodat

13、e(2012-02-17t14:22:46.777z), dat :“-1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”json格式说明:车辆编号(vid)、时间戳(ds)、负荷数据(dat)。 2.2.2 拍照数据存储设计mongodb提供gridfs特性,用来存储大文件,如图片文件和视频文件。由通信平台

14、产生的有效拍照图片,可以连同属性信息(如车机id、时间戳、图片id、访问路径(http)一起直接存储在mongodb中,方便前端应用查询。mongodb数据库格式定义(json)vid : 311,ts : isodate(2012-02-17t14:22:46.777z), “fid”: “file1”,“hp”: “3:270001/file.jpg”,dat :“0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

15、0000000000000000000000000000000000000000000000000000000000000000000000”json格式说明:车辆编号(vid)、时间戳(ds)、文件名(fid)、发布路径(hp)、图片数据(dat)。2.2.3 gps历史数据查询设计gps数据查询主要包括:实时数据查询和历史数据查询。为解决海量gps数据查询的效率和并发负载问题,在设计时考虑从3各方面来设计和优化:1) 创建数据索引mongodb支持对数据进行索引,即可在设计之初就设计好索引,也可在运营期间来对数据的索引进行调整,建议在采用前者。针对历史轨迹数据的查询需求条件:车机id,起止

16、时间,可以对“vid”、“ts”字段创建索引,来提高gps历史轨迹数据的查询效率。针对报警查询查询需求:起止时间和报警状态,可以对“ts”字段、“vs”字段创建索引。2) 数据读写分离和负载均衡设计在mongodb服务部署方案中,我们采用多服务器集群,读写分离的部署架构,即通过部署多个写服务和多个读服务,来解决gps数据存储的效率和服务可靠性、可扩展性问题。3) 内存数据mongodb为提高数据查询的效率,也采用了内存机制,把大量的热点数据放在内存中,来提高数据查询的命中率,我们可以利用这个特性来满足车辆位置查询的需求。4) gps数据查询接口设计a.车辆位置查询接口提供查询车辆最新位置信息,

17、查询条件为车辆id,具体实现主要是通过mongodb的缓存机制来完成。可提供java和javascript接口,供上层应用调用。注:此处与实时服务的功能有些重复,建议由实时服务来统一提供。b.历史轨迹查询接口设计提供查询每辆车的历史轨迹数据,查询条件为:车辆id、开始时间、结束时间。返回集应包含去除除can总线后的数据。可提供java和javascript接口,供上层应用调用。注:查询返回的数据集结果尽量简洁,针对每类业务要求的访问,不必要的信息要剔除掉,减少网络压力、提高查询效率。c报警数据查询2.2.4 gps数据统计设计1) 快照功能提供查询某个区域内、某段时间、都有哪些车辆,查询条件为

18、。提供查询某个区域内、某段时间、都有哪些类型的报警车辆。2) 报警统计可以按报警类别来统计某个时间段内都有哪些报警车辆。可以统计某辆车在某段时间内的报警次数统计,可按总计、按报警类别来统计。2.2.5 拍照数据发布和查询设计通过mongodb的插件,与nginx应用服务代理集成,可以直接把存储在mongodb中的数据发布成http图片服务,供web应用层调用。在具体应用中的业务流程如下:方案说明:a. 解决图片文件储存储分布的问题,可以利用mongodb把gps数据、图片数据、视频数据等都存储在一起,方便管理和维护;b. 解决图片文件便利访问的问题,如文件的属性,文件的存储,文件的访问路径都作

19、为一条记录存储在mongodb中,方便上层应用获取;c. 解决图片高效访问的问题,如利用nginx解决图片资源并发访问的问题,利用squid/varnishd缓存服务来解决二次访问mongodb的问题;2.3 存储服务业务流程框架设计mongodb存储服务提供c+/c#接口、java接口和javascript接口,分别为通讯层、服务层和应用层提供存储服务。3. 方案部署架构设计3.1 存储服务(mongodb)部署架构规划设计为保证mongodb的高可用性(高并发、高可扩展性、高稳定性),我们采用了replica set + sharding部署架构,这是一种可以水平扩展的模式,在数据量很大时

20、特给力,实际大规模应用一般会采用这种架构去构建mongodb存储系统。mongodb存储服务方案部署架构设计,如下图所示:mongodb存储服务集群架构设计架构图说明:a. 分片cluster:分别在3台服务器(见上图server-1,server-3,server-5)运行一个mongod实例(见上图mongod shard_11,mongod shard_21,mongod shard_31)。b. 副本集:分别在3台服务器(见上图server-2,server-4,server-6)运行一个mongod实例(称为mongod shard12,mongod shard22,mongod s

21、hard32),其中:n server-2的mongod shard12是server-2的mongod shard_11的副本。n server-4的mongod shard22是server-2的mongod shard_21的副本。n server-2的mongod shard31是server-2的mongod shard_31的副本。c. 2台服务器,每台服务器(见上图server-1、server-3)运行一个mongod实例,作为2个config,其作用是config双机热备。d. 3台服务器,每台服务器(见上图server-2,server-4,server-6)运行一个mon

22、gos路由进程,用于客户端连接。e线性扩展:可以同时增加2台服务器(见上图server-5、server-6),其一个作为分片,另一个作为分片的副本和路由。备注说明:1)mongod实例 : 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台服务器组个一个relica set承担,防止主机单点故障。2)config server存储分片集群的的元数据,其中包括在每个mongod实例的基本信息和块信息。每个配置服务器所有块的元数据的副本。通过两次提交来确保在配置服务器信息与块数据的一致性。3)mongos 可以被看作是一个数据和请求分发的中心,使单一的mongod实例组

23、成互相关联的集群。当接收客户端请求, mongos根据config server路由到相应的mongod实例(可能是一组mongod),处理并返回结果。mongos 进程没有持久状态,在mongos启动时和配置服务器建立连接并获取状态,当配置服务器发生任何变化时,会将之传播到每个mongos 进程。3.2 存储服务(mongodb)数据分片规划设计1)什么叫分片以及分片的作用?数据分割以及在不同机器存储数据的过程称之为分片。通过在多台机器上分割数据,使得数据库系统能存储更多的数据,和处理更多的负载,在此过程中不需要更多更强大的机器。mongodb分片的基本概念是分割集群成更小的块,或是文档。这

24、些分档可以分布于很多的shards,这样每个shard负载总数据集得子集。举个例子,思考一下。当你从集合选择一个key安装分片时,并使用key分割数据。这个key称为shard key。假设你有一个联系人的集合。如果我们选择“姓”作为shard key,那么一个分片可以存储“姓”以a-f开头的,下一个分片可以存储“姓”以g-p开头的,最后一个分片存储“姓”以q-z开头的。当你添加和删除分片时,mongodb会重新做数据的负载,这样每个分片会获取一定量的流量和实际量的数据。所以在决定什么开始分片呢?考虑一下几个因素:l 目前的机器的磁盘什么时候用完;l 希望比单一的mongod处理速度更快;l

25、希望在内存中保留更多的数据以改善性能;3.3 存储服务(mongodb)实例部署规划设计由于本方案是:规划用4到6台服务器,多个mongodb(6个mongod实例、2个config实例、3各mongos实例)实例同时运行在这些服务器上,所以在部署前需要先规划好服务器的ip地址、实例的名称、实例的分布(在那台服务器上)、实例的端口等,然后再实施。本方案的mongodb数据库实例部署规划如下表所示:主机ip服务名及端口server_1=“mongodb01”(内网)(外网)mongod shard_11:27017mongod config_1:20000s

26、erver_2 = “mongodb02”(内网)(外网)mongod shard_12:27018mongos_1:30000server_3 = “mongodb03”(内网)(外网)mongod shard_21:27017mongod config_2:20000server_4 =“mongodb04”(内网)(外网)mongod shard_22:27018mongos_2:30000server_5=“mongodb05”(内网)

27、(外网)mongod shard_31:27017server_6=”mongodb06”(内网)(外网)mongod shard_32:27018mongos_3:300003.4 存储服务(mongodb)服务器硬件、网络和操作系统规划设计1)服务器硬件规划要求服务器内存:至少:16g,32g标配,越大越好。硬盘存储空间:1t以上,非raid格式,越大越好。注:不建议用磁盘阵列。服务器cpu:至少4核以上,标配8核,核越多越好cpu。网卡:千兆网卡,双网卡;2)网络规划要求mongodb服务器集群在一个独立的网段内。集群服务器用千兆交换机连接。3)操作

28、系统red had linux 64位企业版操作系统,支持中文字符编码。a关闭文件系统/分区的atime 选项vi /etc/fstab在对应的分区项后面添加noatime ,nodiratimelabel=/1 / ext3 defaults 1 1label=/data1 /data ext4 defaults,noatime,nodiratime 1 2b.设置文件句柄,目前该配置已经集成到启动脚本中。vi /etc/security/limit.conf* soft nproc 65536* hard nproc 65536* soft nofile 65536* hard nofil

29、e 65536c.不要使用large vm page (不要使用大内存页选项)linux 大内存页参考:d.用dmesg 查看主机的信息。e.linux 文件系统的选择mongodb 采用预分配的大文件来存储数据,我们推荐:ext3,xfs.f.linux系统内核版本网络上对2.6.33-31 以及2.6.32 的表现持怀疑度, 而强力推荐2.6.36g线程堆栈的尺寸默认的线程堆栈尺寸为10m,调整为1m,已经集成在启动脚本中。3.5 mongodb版本规划设计版本号:2.0.3 for liunx 64位。注:偶数的版本是稳定版,奇数是开发版,例如,1.2开头的是稳定版(1.2.0 , 1.

30、2.1 , 1.2.2 等等) ,1.3开头的开发版(1.3.0 , 1.3.1 ,1.3.2 等。3.6 存储服务(mongodb)运营监控规划设计4. 方案实施4.1 实施步骤1) 方案设计2) 方案评审3) 设计验证4) 结论评估5) 上线实施4.2 方案整体实施计划附件1: 存储服务表(mongodb collection)结构设计1. gps实时数据存储集合(表)结构定义表名:gps_his_infos。作用:用于存储车机实时上传gps数据,并供前端应用查询和统计。具体表结构信息如下所示:编号字段名称中文对照别名字段类型是否索引备注1vid车辆ida整数是2tsgps时间b整数是不包

31、含时区3lon经度c整数是偏移后的4lat纬度d整数是偏移后的5sp速度e整数6dir方向f整数7alt海拔高度g整数8vs车辆状态g整数9ac报警编码h报警编码子集合9.1s1紧急报警s1整数9.2s2超速报警s2整数9.3s3疲劳驾驶s3整数9.4s4预警s4整数9.5s5导航模块故障s5整数9.6s6导航系统天线未接s6整数9.7s7导航天线短路s7整数9.8s8终端主电源欠压s8整数9.9s9终端主电源掉电s9整数9.10s10终端显示屏故障s10整数9.11s11语音模块故障s11整数9.12s12摄像头故障s12整数9.13s13当天累计驾驶超时s13整数9.14s14超时停车s1

32、4整数9.15s15进出区域s15整数9.16s16进出路线s16整数9.17s17路线行驶时间不足/过长s17整数9.18s18路线偏移报警s18整数9.19s19车辆速度传感器故障s19整数9.20s20车辆油量异常s20整数9.21s21车辆被盗s21整数9.22s22车辆非法点火s22整数9.23s23车辆非法位移s23整数9.24s24碰撞侧翻报警s24整数9.25s25严重故障s25整数9.26s26制动气压报警s26整数9.27s27油压报警s27整数9.28s28水位低报警s28整数9.29s29制动蹄片磨损报警s29整数9.30s30空滤堵塞报警s30整数9.31s31缓速器

33、高温报警信号s31整数9.32s32仓温报警信号s32整数9.33s33机滤堵塞信号s33整数9.34s34燃油堵塞信号s34整数9.35s35机油温度报警信号s35整数9.36s36燃油警告s36整数9.37s37空档滑行告警s37整数9.38s38超长怠速告警s38整数9.39s39怠速空调告警s39整数9.40s40发动机超转告警待添加的隐藏文字内容2s40整数9.41s41急加速报警s41整数9.42s42急减速报警s42整数9.43s43门开报警s43整数9.44s44冷却液温度过高报警s44整数9.45s45蓄电池电压报警s45整数9.46s46abs故障告警s46整数9.47s4

34、7关键点报警s47整数10lo经度i整数原始经度11la纬度j整数原始纬度12mil里程l整数13tow累计油耗m整数14ett发动机运行时长n整数15er引擎转速o整数16ls位置状态位p整数17als区域/线路报警q字符串18ct冷却液温度r整数19sbv蓄电池电压s整数20iow瞬时油耗t整数21rsp记录仪速度u整数22sd机油压力v整数23ad大气压力w整数24enp发动机扭矩百分比x整数25ds车辆信号状态y整数26st系统时间z整数建议:为节省gps实时数据的存储空间,我们建议采用英文首字符缩写方式来定义每个字段的名称,当然也可以用a、b、c、d来表示每个字段的名称,这样的好处是

35、节省存储空间,缺点是可读性差,但可以通过相关查询接口函数还原数据项可读性差的问题。2. gps报警历史数据存储集合(表)结构定义表名:alarm_his_infos。作用:用于车辆报警事件信息的集合(表),包括报警位置、报警时间、报警附加信息、报警处理信息等。具体表结构信息如下所示:编号字段名称中文对照别名字段类型是否索引备注1aid报警ida整数是2vid车辆idb整数是3vno车牌号c字符串是4did当班司机编号d整数5sts报警开始时间e1整数是6slon经度(起始位置)f1整数偏移后的7slat纬度(起始位置)g1整数偏移后的8ssp速度(起始位置)h1整数9sdir方向(起始位置)i

36、1整数10salt海拔(起始位置)j1整数11smil里程(起始位置)k1整数12stow累计油耗(起始位置)l1整数13ets报警结束时间e2整数是14elon经度(结束位置)f2整数偏移后的15elat纬度(结束位置)g2整数偏移后的16esp速度(结束位置)h2整数17edir方向(结束位置)i2整数18ealt海拔(结束位置)j2整数19emil里程(结束位置)k2整数20etow累计油耗(结束位置)l2整数21at报警类型编码m整数详见报警编码对照表22as报警源n整数1:车载终端,2:企业监控平台,3:政府监管平台,9:其它23bs基本状态o1整数24es扩展状态o2整数25saa

37、报警附加信息(开始位置)p1字符串26eaa报警附加信息(结束位置)p2字符串27ats报警时间/系统时间q整数建议和系统时间合并28aps报警处理状态r整数是-1:未处理;0:不作处理;1:将来处理;2:处理完毕29uid报警处理人s整数30apts报警处理时间t整数是31todo督办状态u整数0:未督办;1:内部督办;2:监管平台督办建议:为节省车辆报警数据的存储空间,我们建议采用英文首字符缩写方式来定义每个字段的名称,当然也可以用a、b、c、d来表示每个字段的名称,这样的好处是节省存储空间,缺点是可读性差,但可以通过相关查询接口函数还原数据项可读性差的问题。注:(1)报警类型编码对照表,

38、如下表所示:报警类型报警编号紧急报警0超速报警1疲劳驾驶2预警3导航模块故障4导航系统天线未接5导航天线短路6终端主电源欠压7终端主电源掉电8终端显示屏故障9语音模块故障10摄像头故障11当天累计驾驶超时18超时停车19进出区域20进出路线21路线行驶时间不足/过长22路线偏移报警23车辆速度传感器故障24车辆油量异常25车辆被盗26车辆非法点火27车辆非法位移28碰撞侧翻报警29严重故障32制动气压报警33油压报警34水位低报警35制动蹄片磨损报警36空滤堵塞报警37缓速器高温报警信号38仓温报警信号39机滤堵塞信号40燃油堵塞信号41机油温度报警信号42燃油警告43空档滑行告警44超长怠速

39、告警45怠速空调告警46发动机超转告警47急加速报警48急减速报警49门开报警50冷却液温度过高报警51蓄电池电压报警52abs故障告警53关键点报警220(2)报警附加信息编码定义1.超速报警,格式:位置类型|区域或路段id类型: 0:无特定位置;1:圆型区域;2:矩形区域;3:多边形区域;4:路段 当类型为0时,无区域id或路段id值2.进出区域/路段报警附加信息类型 ,格式:位置类型区域或线路id方向 类型: 0:无特定位置;1:圆型区域;2:矩形区域;3:多边形区域;4:路线方向: 0:进,1:出3.路线行驶时间不足/过长, 格式: 路段id路段行驶时间结果 结果: 0:不足,1:过长

40、3. 司机驾驶行为事件存储集合(表)结构定义表名:driver_action_infos。作用:用于存储司机驾驶行为数据的表。具体表结构信息如下所示:编号字段名称中文对照别名字段类型是否索引备注1vid车辆ida整数是2aid驾驶行为类型b整数是详见下表3stsgps时间(起始位置)c整数是不包含时区4slon经度(起始位置)d整数偏移后的5slat纬度(起始位置)e整数偏移后的6ssp速度(起始位置)f整数7salt海拔(起始位置)g整数8sdir方向(起始位置)h整数9etsgps时间(结束位置)i整数是不包含时区10elon经度(结束位置)j整数偏移后的11elat纬度(结束位置)k整数

41、偏移后的12esp速度(结束位置)l整数13ealt海拔高度(结束位置)m整数14edir方向(结束位置)n整数15st系统时间o整数注:驾驶行为类型定义 :驾驶行为类型行为编号加热器工作1空调工作2发动机超转3过长怠速4超经济区运行5空档滑行6怠速空调7二档起步8档位不当9超速10疲劳驾驶114. 发动机负荷率存储集合(表)结构定义表名:engine_load_infos。作用:用于存储车辆的发动机负荷率数据的集合(表)。具体表结构信息如下所示:编号字段名称中文对照别名字段类型是否索引备注1vid车辆ida整数是2ts时间c整数是不包含时区3dat负荷数据d字符串5. 拍照数据存储集合(表)

42、结构定义表名:photo_infos。作用:用于存储车辆的拍照图片数据的集合(表)。具体表结构信息如下所示:编号字段名称中文对照别名字段类型是否索引备注1vid车辆ida整数是2ts拍照时间b整数是不包含时区3fn文件名c字符串4hp发布地址d字符串5dat图片e二进制对象6. 上下行指令数据集合结构定义表名:up_down_command_infos。作用:用于存储车辆的拍照图片数据的集合(表)。具体表结构信息如下所示:附件2: 存储服务(mongodb)对外接口统一定义存储服务的对外统一接口分为3大类:更新类接口、查询接口和统计类接口。由于写操作接口跟通信服务紧密相关,所以优先提供c+类型

43、的接口。查询和统计接口跟上层服务和应用紧密相关,所以提供java类型的接口和javascript接口,这里优先提供java接口。2.1更新类接口1) gps实时位置数据更新接口agps实时数据插入操作接口int insertgps(bsonobj& gpsdata);注:bsonobj为mongodb c+客户端驱动的bson数据的基本对象。gpsdata参数的声明类型为bsonobj其具体格式定义如下a : 1175, / 车辆id“b” : isodate(2012-02-17t14:22:46)/ gps时间c : 69838489,/ 经度d : 23946431,/ 纬度e : 59

44、,/ 速度f : 234,/ 方向“g”: 1225,/ 海拔高度vs : / 车辆状态子类(嵌套)“s1” : / 紧急报警“s2” : / 超速报警“s3” : / 疲劳驾驶“s4” : / 预警“s5” : / 导航模块故障“s6” : / 导航系统天线未接“s7” : / 导航天线短路“s8” : / 终端主电源欠压“s9” : / 终端主电源掉电“s10” : / 终端显示屏故障“s11” : / 语音模块故障“s12” : / 摄像头故障“s13” : / 当天累计驾驶超时“s14” : / 超时停车“s15” : / 进出区域“s16” : / 进出路线“s17” : / 路线行

45、驶时间不足/过长 “s18” : / 路线偏移报警“s19” : / 车辆速度传感器故障“s20” : / 车辆油量异常“s21” : / 车辆被盗“s22” : / 车辆非法点火“s23” : / 车辆非法位移“s24” : / 碰撞侧翻报警“s25” : / 严重故障“s26” : / 制动气压报警“s27” : / 油压报警“s28” : / 水位低报警“s29” : / 制动蹄片磨损报警“s30” : / 空滤堵塞报警“s31” : / 缓速器高温报警信号“s32” : / 仓温报警信号“s33” : / 机滤堵塞信号“s34” : / 燃油堵塞信号“s35” : / 机油温度报警信号“s36” : / 燃油警告“s37” : / 空档滑行告警“s38” : / 超长怠速告警“s39” : / 怠速空调告警“s40” : / 发动机超转告警“s41” : / 急加速报警“s42” : / 急减速报警“s43” : / 门开报警“s44” : / 冷却液温度过高报警“s45” : / 蓄电池电压报警“s47” : / ab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论