Oracle数据库设计请教

ljan0612 2013-06-20 09:29:56
正在给长途货车公司做项目,在3000辆货车上安装了采集器,能采集汽车的当前gps位置,载重, 剩余油量,车速,报警等信息,每30秒采集一次,每天采集3000万条信息,推送到车辆动态信息表,表结构如下:
cheliang_dongtai_xinxi(
主键,
车牌号,
车辆注册地行政区划,
车辆当前gps经度信息,
车辆当前gps纬度信息,
车速,0为停驶,大于零则为具体车速,
载重,
剩余油量, 记录时间,
各种报警信息
)

我们的应用,需针对每一辆车,查询及分析以下信息:
1.查询每辆车的行为轨迹信息,并用地图展示车辆当前及历史行驶轨迹
2.根据剩余油量的增减情况 ,分析每辆车的加油情况,
3.分析每辆车的总体油耗情况。
4.车辆预报警信息,如油量耗尽,车辆超载等。
5. 根据车辆当前位置的不断变化,根据指定算法,计算车辆行驶里程信息。
6. 货车从装货开始,每到一个站点卸一次货,直到卸货完毕,完成整个过程叫一个趟次,相邻两次卸货的行驶过程叫一个趟段。根据采集信息,分析出每辆车的趟次及趟段信息。


不知道怎么设计表结构,包括上述采集表,及为了分析而建立的中间分析表,望各位前辈指教。
客户对车辆轨迹信息有一定的实时性要求,对趟段和趟次要求允许一天延迟。
查询时,主要按时间区间,查询每一辆车的上述信息。



我的初步思路是,
1. 对上表车辆动态信息表设计,想到以下几种方法
a. 按车牌号分区,再按时间按季度分区,但有3000辆车,这样就得分3000个主分区,还有时间子分区,是不是太多了?
b. 或只按车辆分区,再在时间上加索引,或只按时间分区,在为车牌号建立索引
c. 车辆注册地行政区划分区,再按时间或车牌分区
感觉哪一种都不合适,网各位前辈指点怎么分区,或有什么其它办法。

2.对需求1,直接查询动态信息表
3.对需求2、3、4、5,分别建立独立的表,从原始表抽出发生对应事件的采集时点的信息,并结合历史信息进行计算,将结果放到表中供业务查询
4. 对需求6,建立两张表,趟次表及趟段表,并从原始动态表抽取对应时点数据存储到该表中供业务查询

不知上述思路是否可行,在线焦急等待中,望各位前辈不吝赐教。
...全文
155 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hh7yx 2013-06-25
果然还是业务 占主要部分,技术只是其次啊。
回复
wlnet 2013-06-25
按月按时间分区不太妥当吧,3000wX30=9亿,这个表的查询性能有问题。 可以按天分区(看需要存多久), 或者直接按车牌分区,时间本地索引 3000分区不多
回复
bonlog 2013-06-24
每30s采集一次,对数据库的访问很大。 0.所有信息一个表空间即可(除非再有其他需求)。 1.把车辆信息单独一个表(因为车辆注册地行政区划分区,不变化,对吗?你讲的不是很清楚)。 2.gps信息单独一个表。 这样,要查经纬度及速度。速度要快的多。
回复
iqlife 2013-06-24
3.分析每辆车的总体油耗情况。 这个很简单吧,分组统计,每天统计一次,然后其它统计在这个基础上统计 4.车辆预报警信息,如油量耗尽,车辆超载等。 根据808里的格式解析统计好了,分为明细和汇总表 5. 根据车辆当前位置的不断变化,根据指定算法,计算车辆行驶里程信息。 这个有点难,我写过很多代码来做这个算法,感觉数据的清洗比较重要,用plsql实现起来还算是有难度。看记录仪的数据精确度如何和数据的质量情况了,一般每天晚上跑job,解析出车辆的各种信息,实时的计算对数据库性能影响较大 6. 货车从装货开始,每到一个站点卸一次货,直到卸货完毕,完成整个过程叫一个趟次,相邻两次卸货的行驶过程叫一个趟段。根据采集信息,分析出每辆车的趟次及趟段信息。 这个车辆在国标里应该叫行驶记录,停止20分钟以上的,等红绿灯的必须过滤掉,反正算法稍复杂,也是半夜去解析的, 一句话,设计的时候考虑性能,会生成每天每车的各种情况的明细表,然后查询的时候根据明细表去计算
回复
iqlife 2013-06-24
2.根据剩余油量的增减情况 ,分析每辆车的加油情况, 这个功能估计要根据记录仪的采集精确度指定,相应的算法,不过之前做过了这个计算,还是蛮准的,根据传感器速度来判断停车和开车,同时取油耗数据,加上误差,基本上能得到加油记录,不过准确度有待提高
回复
iqlife 2013-06-24
好熟悉了,做车联网2年多了,无奈上家公司(厦门xx客车)太TM的欺骗人了,所以离职了,转做sybase iq数据仓库,离开oracle了 想想JT808交通部的协议闭着眼睛都清楚,哈哈 1.查询每辆车的行为轨迹信息,并用地图展示车辆当前及历史行驶轨迹 30秒一条频率还行,一般设计大数据量的话,从时间分区入手,没有必要做复合分区,估计下数据量,制定合理的时间分区,一个月或者一个季度分区,然后做个memcached缓存当前最新记录
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-06-20 09:29
社区公告
暂无公告