System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种基于levedb技术的电网模型数据缓存系统及方法,尤其涉及尤其涉及一种电网调度自动化系统中基于leveldb的电网一次设备物理模型数据存储系统及方法,属于nosql数据库。
技术介绍
1、leveldb是一个嵌入式、可持久化、高效的k-v数据库存储引擎。leveldb采用了基于日志树lsm(log structure merge tree)的存储结构,它将数据按照键的顺序存储在多个层级中,每个层级被称为一个level。当数据写入leveldb时,首先会被写入到位于内存中的活动内存表(active memtable)中,当内存表的数据大小达到设定的阈值后,会转换成只读内存表(immutable memtable),随后后台线程会将只读内存表刷成一个磁盘文件sstable(sorted strings table),并将其添加位于磁盘中的level-0层。随着写操作的进行,level-0层中的磁盘文件sstable会通过归并排序算法重新组织到更高的level-1~level-n层中,保持数据有序性的同时压缩合并数据,释放更多存储空间。leveldb的数据查询过程也非常高效,当需要查找某个键对应的值时,leveldb会首先从内存表memtable中查找,如果找到则直接返回;如果没有找到,则会从位于磁盘的level-0层开始逐层向上查找,直到找到对应的键值或者遍历完所有的层级没有找到对应的键值。
2、目前,在新一代电网调度自动化系统中,电网一次设备物理模型数据(以下简称电网模型数据)主要存储于传统关系型数据
技术实现思路
1、专利技术目的:本专利技术的目的是提供了一种基于levedb技术的电网模型数据缓存系统及方法,用于解决单机数据库面临巨大的高并发读写压力从而导致效率降低的问题。
2、技术方案:本专利技术所述的基于leveldb的电网模型数据缓存系统,其特征在于包括:
3、创建列族模块,用于客户端请求服务端创建列族;
4、数据建模模块,用于客户端通过数据建模,将数据模表结构信息和电网模型行、列数据建模成k-v数据后请求服务端写入列族;
5、数据查询模块,用于基于leveldb接口对列族中存储的k-v数据扩展查询引擎,在支持原有k-v数据查询的基础上,提供二维表行列数据查询。
6、基于levedb技术的电网模型数据缓存系统基于c/s架构实现,包括用作适配层的客户端client实现对外交互的数据存储和查询接口、用作服务层的服务端server实现列族的管理和提供基础的k-v数据读写功能、以及封装leveldb用作k-v数据存储层的公共列族和模型表列族构成,其中模型表列族内部包含了主索引列族和一系列的二级索引列族。单一的leveldb被扩展成列族,定义了列族名、列族存储位置、列族创建接口\销毁接口、列族打开\关闭接口、列族迭代器等,一个列族中存储了一类数据,k-v缓存客户端实现对外的数据存储和查询接口,k-v缓存服务端实现列族管理和提供基础的k-v数据读写功能,列族实现对k-v数据的存储。
7、进一步的,所述的创建列族模块包括公共列族单元、主索引列族单元和二级索引列族单元;
8、所述的公共列族单元是客户端请求服务端创建公共列族,服务端的列族构建器创建公共列族,创建完成后向列族管理中心注册;所述的主索引列族是客户端将创建模型表列族请求发送到服务端,服务端的列族构建器通过opentable接口根据模型表名创建主索引列族,创建完成后向列族管理中心注册;所述的二级索引列族单元是当需要建立二级索引时,客户端请求服务端为电网模型表创建二级索引列族,创建完成向列族管理中心注册;所述的列族管理中心是列族资源池,同时控制列族的注册、开启和自动关闭回收资源。
9、列族构建器创建完成的列族会处于打开状态,并把内存地址注册到列族管理中心,列族读写器根据表名请求列族管理中心打开表名对应的列族,如果列族是已打开状态,会直接返回列族内存地址,如果列族是关闭状态,列族管理器会重新打开列族并注册内存地址,随后返回内存地址给列族读写器,列族读写器就可读写列族中存储的k-v数据。
10、进一步的,所述的数据建模模块包括k-v元数据单元、k-v主索引数据单元、k-v二次索引数据单元;
11、所述的k-v元数据单元是客户端通过元数据建模,将数据模表结构信息建模成k-v数据后请求服务端通过列族读写器写入公共列族;所述的k-v主索引数据单元是存入元数据后,客户端通过主索引建模,将电网模型表的行数据编码成k-v数据后请求服务端通过列族读写器写入电网模型表主索引列族;所述的k-v二次索引数据单元是存入主索引数据后,客户端通过二级索引建模,将电网模型表中用作索引的列编码成k-v数据后请求服务端通过列族读写器写入电网模型表二级索引列族;所述列族读写器是从列族管理中心请求指定列族资源内存地址,读请求时通过点读或者迭代器的方式读取列族中存储的k-v数据,写请求时将k-v数据写入到列族中存储起来。
12、写入元数据时,将数据模表结构信息建模成列族结构k-v数据,其中k表示数据表名,v表示模型表列族结构元数据,包括表名、主键(primary key)、拥有的列(column)、列的数据类型、用于描述电网模型表主索引的存储结构、用于描述模型表二级索引的存储结构。随后,客户端将建模完成的k-v数据提交给k-v服务端进行写入。列族读写器首先从列族管理中心请求公共列族的内存地址,并将模型表列族结构k-v数据写入元数据列族。
13、写入主索引数据时,通过主键索引建模,将电网模型表的行数据编码成k-v数据,其中k表示关键字,v是整行数据内容,随后,客户端将k-v数据提交给服务端,服务端列族读写器首先从列族管理中心请求模型表主索引列族的内存地址,并将k-v数据写入主索引列族。
14、写入二级索引数据时,通过二级索引建模,将电网模型表中用作索引的列编码成k-v数据,其中:k是关键字,表示索引列和主键的绑定组合,v内容为空,随后,客户端将k-v数据提交给服务端,服务端列族读写器首先从列族管理中心请求模型表二级索引内存地址,并将k-v数据写入二级索引列族。因为二级索引的k中包含主键数据,每条二级索引k-v都能定位到与之关联的主索引k-v,因此可以通过二级索引实现快速条件查询。
15、通过将传统关系库存储的电网模型数据建模成k-v数据写入缓存系统,其中k作为唯一标识符,是查找每条数据地址的唯一关键字,v是该数据实际存储内容。客户端调用存储接口创建和电网模型表对应的列族用于存储k-v数据。
16、进一步的,所述的数据查询模块包括元数据查询单元和主索引数据查询单元;
17、所述的元数据索引单元通过客户端请求服务端查询模型表的本文档来自技高网...
【技术保护点】
1.一种基于LevelDB的电网模型数据缓存系统,其特征在于包括:
2.根据权利要求1所述的基于LevelDB的电网模型数据缓存系统,其特征在于:所述的创建列族模块包括公共列族单元、主索引列族单元和二级索引列族单元;
3.根据权利要求1所述的基于LevelDB的电网模型数据缓存系统,其特征在于:所述的数据建模模块包括K-V元数据单元、K-V主索引数据单元、K-V二次索引数据单元;
4.根据权利要求1所述的基于LevelDB的电网模型数据缓存系统,其特征在于:所述的数据查询模块包括元数据查询单元和主索引数据查询单元;
5.根据权利要求4所述的基于LevelDB的电网模型数据缓存系统,其特征在于:所述的数据查询模块还可以通过二级索引数据查询单元加速模型表数据查询;
6.一种基于LevelDB的电网模型数据缓存方法,其特征在于:包括以下步骤:
7.根据权利要求6所述的基于LevelDB的电网模型数据缓存方法,其特征在于:所述的步骤(1)包括以下具体步骤:
8.根据权利要求6所述的基于LevelDB的电网
9.根据权利要求6所述的基于LevelDB的电网模型数据缓存方法,其特征在于:所述的步骤(3)包括以下具体步骤:
10.根据权利要求9所述的基于LevelDB的电网模型数据缓存方法,其特征在于:所述的步骤(32)还可以通过二级索引加速模型表数据查询;
...【技术特征摘要】
1.一种基于leveldb的电网模型数据缓存系统,其特征在于包括:
2.根据权利要求1所述的基于leveldb的电网模型数据缓存系统,其特征在于:所述的创建列族模块包括公共列族单元、主索引列族单元和二级索引列族单元;
3.根据权利要求1所述的基于leveldb的电网模型数据缓存系统,其特征在于:所述的数据建模模块包括k-v元数据单元、k-v主索引数据单元、k-v二次索引数据单元;
4.根据权利要求1所述的基于leveldb的电网模型数据缓存系统,其特征在于:所述的数据查询模块包括元数据查询单元和主索引数据查询单元;
5.根据权利要求4所述的基于leveldb的电网模型数据缓存系统,其特征在于:所述的数据查询模块还...
【专利技术属性】
技术研发人员:刘春尧,杨启京,曹卫华,樊鹏浩,丁健,刘琪,徐天品,亓志超,翟毅,邹金良,鞠涛,令少亮,
申请(专利权)人:国电南瑞科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。