-
Notifications
You must be signed in to change notification settings - Fork 3
/
详细说明.txt
37 lines (28 loc) · 3.96 KB
/
详细说明.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
MyData说明
MyData是一个时序数据库,用于存储有明显时间标记的数据(如,仪器仪表数据和日志数据)。
请先安照example文件夹中的使用说明,部署服务并写入数据。
一、MyData中的类型
类型表示存取数据的格式,类型由7种基本类型(char,short,int,longlong,float,double,string)组合而成。可以通过web中的类型信息查看和编辑。最多可以把16个基本类型组合成一个类型。
二、MyData中的表
表是存放标签点的集合。表有类型属性,所有存放在该表中的标签点,都只能存取对应类型的数据。
三、MyData中的标签点
标签点是读写数据的基本单元。类似于一个仪表,用于存放一个仪表中的所有数据。数据的格式由标签点所在的表决定。
四、MyData中的数据文件
数据文件用于存放写入的数据。每个数据文件有开始时间和结束时间,数据的时间戳只有在该时间段内,才能存放到该数据文件中。MyData会自动生成数据文件,所以一般不需要介入数据文件的管理。数据文件的信息可以通过web的“数据文件信息”查看。其中结束时间为"——"的文件是活动文件,表示可以存储比开始时间大的所有数据。文件有大小属性。活动文件的数据量超过文件的大小属性时,活动文件的结束时间会被修改,不再是活动文件。而空文件会变成活动文件。
注意:如果写入的数据是该标签点的最新数据应当使用WriteNewDatas写入数据,如果不是最新的数据应当使用WriteOldDatas写入数据。否则空文件可能不会切换为活动文件,也可能写入失败。
数据文件默认存放于data目录下,datafile_mgr.dat管理所有的数据文件。每个数据文件由4个文件组成(如20171203_092123_1.dat,index_20171203_092123_1.dat,indexmgr_20171203_092123_1,sd_20171203_092123_1.dat),文件名为文件创建的日期,index前缀表示是索引文件,在上面4个文件中,数据存放于20171203_092123_1.dat中,调用重建索引API时,另外3个文件会根据20171203_092123_1.dat文件重新生成。
“数据文件信息”页面中有创建按钮,当要写入的数据的时间戳,并不包含于当前所有数据文件的时间段内时,需要手动创建文件。文件名应使用英文,且不超过31个字符。开始时间和结束时间不应与现有的数据文件有重合。
“数据文件信息”页面中的排除文件和加入文件一般用于移动数据库。排除文件后,文件中的数据无法查到,加入文件后可以再次查看到数据。如果加入的数据文件是活动文件,可能活动文件已经存在,会导致冲突,需要删除新创建的活动文件。
五、web管理页面
web使用flask开发,只能满足基本需求,性能未做任何优化,只用于了解管理Mydata运行情况。
由于web知识有限,页面写得很一般。
注意:由于web默认数据都是utf-8编码,都会以utf-8转换数据,所以使用其他工具写入数据时,请确保数据编码为utf-8,否则MyData可以正常运行,但是web无法继续使用。
六、API使用
编译需要Common目录下的MyDataAPI.h、MyDataCommon.h、MyDataError.h文件,release版本:lib目录下的MyDataAPI.dll和MyDataAPI.lib以及ACE.dll,debug版本:lib目录下的MyDataAPId.dll和MyDataAPId.lib以及ACEd.dll
编译环境不小于vs2010,所有动态库均是64位
API的使用说明在MyDataAPI.h中,也可参看APITest的使用方法
七、序列化器
数据需要在客户端通过序列化器序列化后,才能写入数据库。序列化器的使用:先调用MakeSerializer,初始化一个序列化器,安照类型id中的基本类型顺序,依次调用对应的API(Write[Char\Int\String...])把数据写入序列化器中。全部写完后,才能调用写入数据库的函数(WriteNewDatas或WriteOldDatas)。
八、插件
插件功能用于定制服务端的处理方式。目前只定制了写入实时数据(即最新数据)时的处理,可用于判断数据是否可以写入,数据是否达到报警线,以及把数据发往其他程序。插件是一个dll,PlugInTest项目演示了插件的制作方法。一般的处理需求都需要导入MyDataPlugIn.dll(如果不需要也可不导入)。MyData服务为插件提供3个回调,1.用于插件初始化。2.用于插件停止运行的清理工作。3.用于处理实时数据。回调的函数名可以自定义,但是返回值和参数需要与MyData\PlugIn.h中的InitFun、WriteNewDataFun、CloseFun保持一致。加载时,服务通过配置文件plugin.ini加载插件。plugin.ini的键名是不可变的,值名用于确定插件动态库的名称和回调函数名称。如果不需要3个回调都实现,可不把相关配置写入plugin.ini中即可。如果有多个插件,每个插件的配置之间用“%%”作为一行,把插件的配置隔开即可。3个回调的具体定义和注意事项在PlugInTest(插件测试项目)和MyDataPlugIn.dll的头文件中都有说明,插件的加载在MyData\PlugIn.cpp中定义。插件的加载在日志中会有描述,服务启动后,请查看日志确定插件是否加载成功。部署时,插件dll、MyDataPlugIn.dll、plugin.ini请放在MyData程序执行文件所在目录。插件功能比较单一,如果有好的建议请邮件至[email protected]
感谢能看到这里,如果有任何疑问或bug请邮件至[email protected]