工作内容_鸟巢_新浪博客

{dy}部分Berkeley DB

Berkeley DB是轻量级嵌入式数据库,它不仅适用于嵌入式系统,而且可以直接连接到应用程序内部,和应用程序运行在同一地址空间。它具有轻巧、高效等特性。可以通过函数库中提供方法进行数据库的操作,另外新版本的支持Sqlite3ODBC等标准接口。

我们的现阶段项目中对实时数据库的需求如下:

1、 能够短时间内的插入大量的数据,30秒内插入数据不少于20000条;

2、 能够高效迅速的查询数据;

3、 能够存储7天不小2G的数据;

4、 能够提供有效的接口给应用程序;

5、 轻便、小巧;

6、 能够将下层的通讯程序同上层的应用程序隔离开;

7、 能够实现无缝移植到开源免费的Sqlite数据库上;

针对上述需求,分析BDB 的特性。BDB插入一万条数据,时间开销为0.08秒;BDB查询速度能够满足项目需求;BDB的空间大小500KB十分小巧,却能够管理高达256TB的数据;BDB支持Sqlite3,支持SQL语句的查询,另外还提供ODBC接口,Sqlite3Sqlite数据的{zx1}的接口库。从上述的Berkeley DB的特性上我们可以看出该实时数据库xx满足我们项目的需要。

 对于使用Berkeley DB的通讯程序部分应用思路是这样的,该部分程序分成两个部分一个是通讯客户端部分;另外一部分为通讯服务端部分;两部分都能够根据配置中内容来选择实时数据库的路径及创建库表。

客户端:通讯客户端的主要功能是根据要求读取实时数据源(文件或数据库表),然后进行其自己特有的逻辑分析(不同的系统,分析方式不一样),例如人员定位系统,人员位置变动分析,将分析后用来交互数据、源数据、及其它数据一并上传至通讯程序服务端。通讯客户端具有网络中断后,上传数据缓存的机制。这样的设计,可以让服务端不用考虑下面的会挂载什么样的客户端,可以高效的实现扩展。

 

服务端:通讯服务端的主要功能接受客户端发送来的数据,根据客户端的不同,存入BDB库的表中,一个客户端对应一张表。通讯服务端程序使用BDB提供的Sqlite3接口进行数据的存入,因为只有使用Sqlite3接口才能实现同Sqlite数据库之间无缝移植。在存入BDB库表的同时生成接受到数据的SQL脚本文件。通讯服务端的BDB库的数据只保留最近7天内的产生数据,早于7天前的数据,由独立线程负责清掉,对于类似于人员定位系统中设备描述文件则至少保留一份。另外BDB中还有两个表,一个用来保存网络状态数据,另一用来保存所有客户端提供的实时交互数据,30秒一批。以覆盖的形式不断的更新。

应用程序:应用程序需要的数据,如果是7天内的数据可以从BDB中读取,同过BDBODBC接口进行访问;读取早于7天的数据从其它数据库中。通讯客户端进行的逻辑分析只是基于单系统的分析,如若获得复合数据,即基于两种系统以上的数据分析出的数据,则应用程序要自己进行分析。

表:对于表结构的要求,表能够存储任何系统上传来的数据,能够明确标识出记录的数据类型,产生数据的时间,插入数据库的时间。表结构可以如下:

DataType      varchar(8)

MineID        varchar(10)

MineName     varchar(20)

SystemID      varchar(10)

SystemName   varchar(20)

MakeTime      varchar(20)

Data           mediumtext

其中DataType是用来区分数据类型的,要能够区分实时数据、历史数据、设备描述数据、交互数据。

下图为BDB在项目中应用的结构图。

 

 

                           BDB应用图

注:

1、图中其它数据库是用来保存早于7天的数据,期限为一年,通讯程序服务端到其它数据库中省略了,通讯程序服务端生成SQL脚本文件,然后有独立的程序将其执行到其它数据库中。

2、用MakeTime字段标识该数据发生的时间,来解决历史和实时数据排序问题。

3对于使用BDB的目标是高效、单一的接收存储数据,而不涉及到任何业务逻辑上的处理。

4、客户端读取的实时数据源为多种形式,如按照一定标准协议生成的文本文件,或按照一定表结构的数据库表中的数据,又或按照一定通讯协议接收到的通讯数据;再或通过串口通讯获取的一些设备信息等;

5通讯服务端和通讯客户端之间通过Socket方式进行点对点的UDT通讯,进而保证了数据在传输过程当中不会出现数据丢失。 

        

已投稿到:
  • 评论加载中,请稍候...

验证码:

郑重声明:资讯 【工作内容_鸟巢_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——