CN114090295A - 一种支持哈希的链表式共享内存数据库生成方法及系统 - Google Patents
一种支持哈希的链表式共享内存数据库生成方法及系统 Download PDFInfo
- Publication number
- CN114090295A CN114090295A CN202111402168.1A CN202111402168A CN114090295A CN 114090295 A CN114090295 A CN 114090295A CN 202111402168 A CN202111402168 A CN 202111402168A CN 114090295 A CN114090295 A CN 114090295A
- Authority
- CN
- China
- Prior art keywords
- data
- shared memory
- writing
- name
- ith
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000005259 measurement Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 23
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000012545 processing Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据库技术领域,公开一种支持哈希的链表式共享内存数据库生成方法及系统,在变电站嵌入式装置中使用偏移量技术,建立链表结构的共享内存数据库;在链表结构数据库中,采用基于数据ref索引的哈希散列值标识数据具体位置;采用哈希算法对ref进行处理,形成散列值位置信息,在初始化数据之时就写入散列值位置,结合链表的偏移量,不仅实现跨类型数据之间的关系查找,也支持单个数据通过ref的快速定位。
Description
技术领域
本发明属于数据库技术领域,特别涉及一种支持哈希的链表式共享内存数据库生成方法及系统。
背景技术
在智能变电站中,广泛使用了基于IEC61850标准,所有的嵌入式装置都采用面向对象的建模技术,支持CID模型文件的导入,生成实例化的嵌入式装置内存数据库。目前国内大部分厂商装置共享内存数据库都采用二维表来存储模型信息,需要先将层次化的设备模型进行解析,拆解形成若干个内存表格存放到共享内存中,表格数据之间通过增加一列父子关系属性列来实现不同表格间数据所属关系的索引。这种方式虽然能满足装置运行需求,但存在着占用空间大,数据检索繁琐,实时性有待提升的问题。
共享内存技术是Linux系统的底层IPC技术,支持不同进程间的数据访问,一般被用作实时数据库。共享内存由于支持多个进程的访问,因此里面存放的数据必须是实例化的数据结构,不能包含指针等链接关系,因此共享内存目前大部分都是一张张的表格,表格间的数据如果要建立所属关系需要增加一列来标识其上级数据的ID号,通过ID号来检索上级数据。
目前部分桌面或服务计算机采用了链表式共享内存,通过在数据结构中增加编译量属性,共享内存数据库初始化之时,在偏移量中就存入数据父节点的位置偏移个数。因此,在共享内存中也实现了链表式的数据结构索引。
一方面是嵌入式装置共享内存技术还是基于二维数据表结构,在这种方式下,进程检索数据需要在多张表格中进行重复查询,无法快速定位上下级数据,实时库读写数据的效率大幅降低。还未引入链表式共享内存数据库结构。
另一方面是链表式数据结构虽然解决了共享内存中的数据父子节点快速索引问题,但未解决变电站模型数据基于ref索引需求,偏移量只能包含上级数据的ID号,指明其内存空间位置,但无法支持通过数据ref索引实现单一数据的精准定位,还需要通过ID-ref对照表查询才能确定具体的数据位置,检索效率有待进一步提升。
发明内容
本发明的目的在于提供一种支持哈希的链表式共享内存数据库生成方法及系统,用以提升检索效率。本发明设计用于链表式共享内存数据库的快速哈希方法,实现在二维表结构共享内存数据库中,通过偏移量实现多张表格数据的层次关系快速索引,并采用哈希算法,支持对全局及单张数据表页面数据ref索引的快速查询,大幅优化嵌入式装备实时数据库的内存消耗,支持面向对象模型的关系索引,提高数据查询及检索效率,满足变电站嵌入式装备的占用资源小、实时性高的要求。
为了实现上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种支持哈希的链表式共享内存数据库生成方法,其特征在于,包括:
获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址;
解析所述CID模型文件,获得IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体;所述数据结构体包括名称、中文描述、ref索引、偏移量和数据值;
生成接口函数。
本发明进一步的改进在于:所述获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址的步骤中,具体包括:获取嵌入式装置的CID模型文件;使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址。
本发明进一步的改进在于:所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有逻辑设备数据的数据结构体具体包括:
获取逻辑设备数据中第i个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+posi+1位置的数据结构中,偏移量中写入posi+1,数据值置零;posi为使用哈希算法计算第i个逻辑设备数据索引的散列值。
本发明进一步的改进在于:所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有逻辑节点数据的数据结构体具体包括:
获取逻辑节点数据中第i个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos1i+posn位置的数据结构中,偏移量中写入posn,数据值置零;pos1i为使用哈希算法计算的第i个逻辑节点数据索引的散列值,posn为第i个逻辑节点数据所属的逻辑设备数据的偏移量。
本发明进一步的改进在于:所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有量测量数据的数据结构体具体包括:
获取量测量数据中第i个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零;posm为使用哈希算法计算第i个量测量数据索引的散列值,posx为第i个量测量数据所属的逻辑节点数据的偏移量。
本发明进一步的改进在于:所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有状态量数据的数据结构体具体包括:
获取状态量数据中第i个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零;Poss为使用哈希算法计算第i个状态量数据索引的散列值,posx为第i个状态量数据所属的逻辑节点数据的偏移量。
本发明进一步的改进在于:所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有控制量数据的数据结构体具体包括:
获取控制量数据中第i个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零;Post为使用哈希算法计算第i个控制量数据索引的散列值,posx为第i个控制量数据所属的逻辑节点数据的偏移量。
第二方面,本发明提供一种支持哈希的链表式共享内存数据库生成系统,包括:
创建模块,用于获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址;
解析模块,用于解析所述CID模型文件,获得IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
获取模块,用于获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
写入模块,用于在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体;所述数据结构体包括名称、中文描述、ref索引、偏移量和数据值;
生成模块,用于生成接口函数。
本发明进一步的改进在于:所述获创建模块使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址。
本发明进一步的改进在于:写入模块在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中具体包括:
获取逻辑设备数据中第i个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+posi+1位置的数据结构中,偏移量中写入posi+1,数据值置零;posi为使用哈希算法计算第i个逻辑设备数据索引的散列值;
获取逻辑节点数据中第i个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos1i+posn位置的数据结构中,偏移量中写入posn,数据值置零;pos1i为使用哈希算法计算的第i个逻辑节点数据索引的散列值,posn为第i个逻辑节点数据所属的逻辑设备数据的偏移量;
获取量测量数据中第i个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零;posm为使用哈希算法计算第i个量测量数据索引的散列值,posx为第i个量测量数据所属的逻辑节点数据的偏移量;
获取状态量数据中第i个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零;Poss为使用哈希算法计算第i个状态量数据索引的散列值,posx为第i个状态量数据所属的逻辑节点数据的偏移量;获取控制量数据中第i个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零;Post为使用哈希算法计算第i个控制量数据索引的散列值,posx为第i个控制量数据所属的逻辑节点数据的偏移量。
相对于现有技术,本发明采用如下技术方案:
本发明提供一种支持哈希的链表式共享内存数据库生成方法及系统,在变电站嵌入式装置中使用偏移量技术,建立链表结构的共享内存数据库;在链表结构数据库中,采用基于数据ref索引的哈希散列值标识数据具体位置;采用哈希算法对ref进行处理,形成散列值位置信息,在初始化数据之时就写入散列值位置,结合链表的偏移量,不仅实现跨类型数据之间的关系查找,也支持单个数据通过ref的快速定位。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明一种支持哈希的链表式共享内存数据库生成方法的流程示意图;
图2为本发明一种支持哈希的链表式共享内存数据库生成系统的结构框图。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本发明所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
相关术语解释:
共享内存数据库:实时数据库是一种通过Linux共享内存技术,生成的一组数据结构体集合,支持多进程对同一内存空间数据的存储和访问的数据库。
变电站嵌入式装置:面向变电站专业需求开发的小型化就地计算处理单元,包括变电站保护、测控、故障录波等间隔层装置。
哈希:把任意长度的字符串输入通过散列算法变换成固定长度的输出。
SCD模型:智能变电站系统配置描述文件,xml格式,相当于变电站二次系统设计图纸,定义了变电站设备间连接关系,包含变电站所有嵌入式设备的模型。
CID模型:单个嵌入式装置的模型文件,xml格式,由SCD中提取,描述了单个嵌入式装置所能提供的服务功能及数据集合。
数据ref索引:一种标准格式的最长128位字符串,变电站所有数据的唯一身份索引编码。
IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据、控制量数据:逐层递进的包含关系,IED数据包含若干个逻辑设备,每个逻辑设备包含若干个逻辑节点,每个逻辑节点包含若干个量测量数据、状态量数据和控制量数据。
嵌入式装置实时库要求支持多进程间共享访问,需要共享内存技术支撑;变电站设备的数据结构是按照层次化模型组建,依托CID文件建立,所有数据都采用ref索引进行查询,而共享内存技术不支持链表指针,无法实现层次关系数据索引,传统的做法是采用多张二维表,并通过索引属性实现不同表格数据间的关联查找,同时为了支撑ref-id的关系检索,还需单独建立ref-id关系对照表;采用偏移量技术实现在共享内存中建立链表式共享内存数据库;支持各数据间关系的快速检索;但无法通过ref索引精准定位具体数据。本发明采用哈希算法对ref进行处理,形成散列值位置信息,在初始化数据之时就写入散列值位置,结合链表的偏移量,不仅实现跨类型数据之间的关系查找,也支持单个数据通过ref的快速定位。
实施例1
请参阅图1所示,本发明一方面通过在变电站嵌入式装置中建立基于链表的共享内存数据结构,支持设备模型在共享内存中的完整标识;另一方面在数据结构中增加哈希散列值,支持数据ref索引的快速定位。
本发明一种支持哈希的链表式共享内存数据库生成方法,包括以下步骤:
1、获取嵌入式装置的CID模型文件;使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址;
2、创建数据结构体,所述数据结构体包含数据的名称(name)、中文描述(desc)、ref索引(reference)、偏移量(offset)和数据值(value);
3、解析CID模型文件,解析生成多类型数据,包括IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
4、获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
5、获取逻辑设备数据中第一个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+pos1+1位置的数据结构中,偏移量中写入pos1+1,数据值置零;pos1为使用哈希算法计算第一个逻辑设备数据索引的散列值;
6、获取逻辑设备数据中第二个逻辑设备数据的名称、中文描述、ref索引,写入位于首地址+pos2+1位置的数据结构中,偏移量中写入pos2+1,数据值置零;pos2为使用哈希算法计算第二个逻辑设备数据索引的散列值;
7、依次写入所有逻辑设备数据的名称、中文描述、ref索引、偏移量和数据值。
8、获取逻辑节点数据中第一个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos11+posn位置的数据结构中,偏移量中写入posn,数据值置零。pos11为使用哈希算法计算的第一个逻辑节点数据索引的散列值,posn为第一个逻辑节点数据所属的逻辑设备数据的偏移量;
9、依次写入所有逻辑节点数据的名称、中文描述、ref索引、偏移量和数据值。
10、获取量测量数据中第一个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零。posm为使用哈希算法计算第一个量测量数据索引的散列值,posx为第一个量测量数据所属的逻辑节点数据的偏移量。
11、依次写入所有量测量数据的名称、中文描述、ref索引、偏移量和数据值。
12、获取状态量数据中第一个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零。Poss为使用哈希算法计算第一个状态量数据索引的散列值,posx为第一个状态量数据所属的逻辑节点数据的偏移量;
13、依次写入所有状态量数据的名称、中文描述、ref索引、偏移量和数据值。
14、获取控制量数据中第一个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零。Post为使用哈希算法计算第一个控制量数据索引的散列值,posx为第一个控制量数据所属的逻辑节点数据的偏移量。
15、依次写入所有控制量数据的名称、中文描述、ref索引、偏移量和数据值;
16、完成数据库封装,生成接口函数。
实施例2
请参阅图2所示,本发明提供一种支持哈希的链表式共享内存数据库生成系统,包括:
创建模块,用于获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址;
解析模块,用于解析所述CID模型文件,获得IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
获取模块,用于获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
写入模块,用于在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体;所述数据结构体包括名称、中文描述、ref索引、偏移量和数据值;
生成模块,用于生成接口函数,完成数据库封装。
本发明一种预选的实施方案中:所述获创建模块使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址。
本发明一种预选的实施方案中:写入模块在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中具体包括:
获取逻辑设备数据中第i个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+posi+1位置的数据结构中,偏移量中写入posi+1,数据值置零;posi为使用哈希算法计算第i个逻辑设备数据索引的散列值;
获取逻辑节点数据中第i个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos1i+posn位置的数据结构中,偏移量中写入posn,数据值置零;pos1i为使用哈希算法计算的第i个逻辑节点数据索引的散列值,posn为第i个逻辑节点数据所属的逻辑设备数据的偏移量;
获取量测量数据中第i个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零;posm为使用哈希算法计算第i个量测量数据索引的散列值,posx为第i个量测量数据所属的逻辑节点数据的偏移量;
获取状态量数据中第i个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零;Poss为使用哈希算法计算第i个状态量数据索引的散列值,posx为第i个状态量数据所属的逻辑节点数据的偏移量;
获取控制量数据中第i个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零;Post为使用哈希算法计算第i个控制量数据索引的散列值,posx为第i个控制量数据所属的逻辑节点数据的偏移量。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种支持哈希的链表式共享内存数据库生成方法,其特征在于,包括:
获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址;
解析所述CID模型文件,获得IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体;所述数据结构体包括名称、中文描述、ref索引、偏移量和数据值;
生成接口函数。
2.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址的步骤中,具体包括:获取嵌入式装置的CID模型文件;使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址。
3.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有逻辑设备数据的数据结构体具体包括:
获取逻辑设备数据中第i个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+posi+1位置的数据结构中,偏移量中写入posi+1,数据值置零;posi为使用哈希算法计算第i个逻辑设备数据索引的散列值。
4.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有逻辑节点数据的数据结构体具体包括:
获取逻辑节点数据中第i个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos1i+posn位置的数据结构中,偏移量中写入posn,数据值置零;pos1i为使用哈希算法计算的第i个逻辑节点数据索引的散列值,posn为第i个逻辑节点数据所属的逻辑设备数据的偏移量。
5.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有量测量数据的数据结构体具体包括:
获取量测量数据中第i个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零;posm为使用哈希算法计算第i个量测量数据索引的散列值,posx为第i个量测量数据所属的逻辑节点数据的偏移量。
6.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有状态量数据的数据结构体具体包括:
获取状态量数据中第i个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零;Poss为使用哈希算法计算第i个状态量数据索引的散列值,posx为第i个状态量数据所属的逻辑节点数据的偏移量。
7.根据权利要求1所述的一种支持哈希的链表式共享内存数据库生成方法,其特征在于,所述在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中,写入所有控制量数据的数据结构体具体包括:
获取控制量数据中第i个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零;Post为使用哈希算法计算第i个控制量数据索引的散列值,posx为第i个控制量数据所属的逻辑节点数据的偏移量。
8.一种支持哈希的链表式共享内存数据库生成系统,其特征在于,包括:
创建模块,用于获取嵌入式装置的CID模型文件;创建一个共享内存空间,以所述CID模型文件的大小作为共享内存空间的初始大小,并获取共享内存空间的首地址;
解析模块,用于解析所述CID模型文件,获得IED数据、逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据;
获取模块,用于获取解析的IED数据的名称、中文描述、ref索引,写入共享内存空间首地址的数据结构中,数据值和偏移量置零;
写入模块,用于在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体;所述数据结构体包括名称、中文描述、ref索引、偏移量和数据值;
生成模块,用于生成接口函数。
9.根据权利要求8所述的一种支持哈希的链表式共享内存数据库生成系统,其特征在于,所述获创建模块使用shmget函数创建一个共享内存空间,以装置CID模型文件的大小作为共享内存空间的初始大小,使用shmat函数获取共享内存空间的首地址。
10.根据权利要求8所述的一种支持哈希的链表式共享内存数据库生成系统,其特征在于,写入模块在共享内存空间中写入所有逻辑设备数据、逻辑节点数据、量测量数据、状态量数据和控制量数据的数据结构体的中具体包括:
获取逻辑设备数据中第i个逻辑设备数据的名称、中文描述、ref索引,写入位于共享内存空间首地址+posi+1位置的数据结构中,偏移量中写入posi+1,数据值置零;posi为使用哈希算法计算第i个逻辑设备数据索引的散列值;
获取逻辑节点数据中第i个逻辑节点数据的名称、中文描述、ref索引,写入位于首地址+pos1i+posn位置的数据结构中,偏移量中写入posn,数据值置零;pos1i为使用哈希算法计算的第i个逻辑节点数据索引的散列值,posn为第i个逻辑节点数据所属的逻辑设备数据的偏移量;
获取量测量数据中第i个量测量数据的名称、中文描述、ref索引,写入位于首地址+posx+posm位置的数据结构中,偏移量中写入posx,数据值置零;posm为使用哈希算法计算第i个量测量数据索引的散列值,posx为第i个量测量数据所属的逻辑节点数据的偏移量;
获取状态量数据中第i个状态量数据的名称、中文描述、ref索引,写入位于首地址+posx+poss位置的数据结构中,偏移量中写入posx,数据值置零;Poss为使用哈希算法计算第i个状态量数据索引的散列值,posx为第i个状态量数据所属的逻辑节点数据的偏移量;
获取控制量数据中第i个控制量数据的名称、中文描述、ref索引,写入位于首地址+posx+post位置的数据结构中,偏移量中写入posx,数据值置零;Post为使用哈希算法计算第i个控制量数据索引的散列值,posx为第i个控制量数据所属的逻辑节点数据的偏移量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111402168.1A CN114090295A (zh) | 2021-11-19 | 2021-11-19 | 一种支持哈希的链表式共享内存数据库生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111402168.1A CN114090295A (zh) | 2021-11-19 | 2021-11-19 | 一种支持哈希的链表式共享内存数据库生成方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090295A true CN114090295A (zh) | 2022-02-25 |
Family
ID=80303837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111402168.1A Pending CN114090295A (zh) | 2021-11-19 | 2021-11-19 | 一种支持哈希的链表式共享内存数据库生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090295A (zh) |
-
2021
- 2021-11-19 CN CN202111402168.1A patent/CN114090295A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321344B (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
Plattner | A course in in-memory data management | |
Arora et al. | Modeling and querying data in mongodb | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
CN106202548A (zh) | 数据存储方法、查找方法及装置 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
RU2005105582A (ru) | База данных и система управления знаниями | |
US7849039B2 (en) | Method for using one-dimensional dynamics in assessing the similarity of sets of data using kinetic energy | |
CN110134681A (zh) | 数据存储与查询方法、装置、计算机设备及存储介质 | |
CN111984745A (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 | |
US20140067853A1 (en) | Data search method, information system, and recording medium storing data search program | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
Liu et al. | G-Learned Index: Enabling Efficient Learned Index on GPU | |
CN110020001A (zh) | 字符串数据的存储、查询方法以及相应的设备 | |
WO2023123287A1 (zh) | 分子数据存储方法及装置、应用方法及装置 | |
CN114090295A (zh) | 一种支持哈希的链表式共享内存数据库生成方法及系统 | |
Černjeka et al. | NoSQL document store translation to data vault based EDW | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN109753533A (zh) | 一种多源关系型数据库客户端开发方法及装置 | |
CN117743316A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN115099309A (zh) | 一种为图数据的存储和索引设计代价评估模型的方法 | |
CN106055543B (zh) | 基于Spark的大规模短语翻译模型的训练方法 | |
CN113284573A (zh) | 一种文档数据库检索方法与装置 | |
Zhang et al. | Improving performance by creating a native join-index for OLAP | |
Chen | Multi-perspective evaluation of relational and graph databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |