一种基于LeveDB技术的电网模型数据缓存系统及方法与流程

文档序号:37927313发布日期:2024-05-11 00:06阅读:16来源:国知局
本发明涉及一种基于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、所述的元数据索引单元通过客户端请求服务端查询模型表的元数据建模的k-v数据,服务端的列族读写器首先请求列族管理中心打开公共列族,从公共列族中读取该模型表的元数据建模的k-v数据返回给客户端,客户端解析元数据建模的k-v数据得到模型表结构;所述的主索引数据查询单元通过客户端请求服务端查询模型表主索引建模的k-v数据,服务端收到查询请求后,列族读写器首先请求列族管理中心打开模型表主索引列族,根据k的范围读取主索引建模的k-v数据并返回给客户端,客户端根据模型表结构解析主索引建模的k-v数据,得到一组行列二维数据。18、扩展新的查询接口时,输入参数可以是sql查询语句,也可以是一些参数组合,这些参数包括表名、本次查询需要的列名、关键字、关键字范围、过滤条件、返回行数等,输出参数是行列二维数据表。客户端解析数据建模的k-v数据得到模型表结构,如表名、拥有的列名、列的数据类型、主键、二级索引列等。19、进一步的,所述的数据查询模块还可以通过二级索引数据查询单元加速模型表数据查询;20、所述的二级索引数据查询单元通过客户端请求服务端查询二级索引建模的k-v数据,服务端收到查询请求后,列族读写器请求列族管理中心打开模型表二级索引列族,根据二级索引列的范围读取二级索引建模的k-v数据,根据模型表结构将二级索引建模的k-v数据解析得到一组只包含主键k的集合,客户端根据表名、主键k的集合请求服务端查询主索引建模的k-v数据,服务端收到查询请求后,从列族管理中心请求打开主索引列族,根据主键k的集合读取主索引建模的k-v数据返回给客户端,客户端根据模型表结构将主索引建模的k-v数据解析得到一组类似传统关系库形式的行列二维数据。21、本发明所述的基于leveldb的电网模型数据缓存方法,其特征在于:包括以下步骤:22、(1)客户端请求服务端创建列族;23、(2)客户端通过数据建模,将数据模表结构信息和电网模型行、列数据建模成k-v数据后请求服务端写入列族;24、(3)基于leveldb接口对列族中存储的k-v数据扩展查询引擎,在支持原有k-v数据查询的基础上,提供二维表行列数据查询。25、进一步的,所述的步骤(1)包括以下具体步骤:26、(11)客户端请求服务端创建公共列族,服务端的列族构建器创建公共列族,创建完成后向列族管理中心注册;所述的列族管理中心是列族资源池,同时控制列族的注册、开启和自动关闭回收资源;27、(12)客户端将创建模型表列族请求发送到服务端,服务端的列族构建器通过opentable接口根据模型表名创建主索引列族,创建完成后向列族管理中心注册;28、(13)当需要建立二级索引时,客户端请求服务端为电网模型表创建二级索引列族,创建完成向列族管理中心注册。29、进一步的,所述的步骤(2)包括以下具体步骤:30、(21)客户端通过元数据建模,将数据模表结构信息建模成元数据建模的k-v数据后请求服务端通过列族读写器写入公共列族;所述列族读写器是从列族管理中心请求指定列族资源内存地址,读请求时通过点读或者迭代器的方式读取列族中存储的k-v数据,写请求时将k-v数据写入到列族中存储起来;31、(22)存入元数据后,客户端通过主索引建模,将电网模型表的行数据编码成k-v数据后请求服务端通过列族读写器写入电网模型表主索引列族;32、(23)存入主索引数据后,客户端通过二级索引建模,将电网模型表中用作索引的列编码成k-v数据后请求服务端通过列族读写器写入电网模型表二级索引列族。33、进一步的,所述的步骤(3)包括以下具体步骤:34、(31)客户端请求服务端查询模型表的元数据建模的k-v数据,服务端的列族读写器首先请求列族管理中心打开公共列族,从公共列族中读取该模型表的元数据建模的k-v数据返回给客户端,客户端解析元数据建模的k-v数据得到模型表结构;35、(32)客户端请求服务端查询模型表主索引建模的k-v数据,服务端收到查询请求后,列族读写器首先请求列族管理中心打开模型表主索引列族,根据k的范围读取主索引建模的k-v数据并返回给客户端,客户端根据模型表结构解析主索引建模的k-v数据,得到一组行列二维数据。36、进一步的,所述的步骤(32)还可以通过二级索引加速模型表数据查询;37、客户端请求服务端查询二级索引建模的k-v数据,服务端收到查询请求后,列族读写器请求列族管理中心打开模型表二级索引列族,根据二级索引列的范围读取二级索引建模的k-v数据,根据模型表结构将二级索引建模的k-v数据解析得到一组只包含主键k的集合,客户端根据表名、主键k的集合请求服务端查询主索引建模的k-v数据,服务端收到查询请求后,从列族管理中心请求打开主索引列族,根据主键k的集合读取主索引建模的k-v数据返回给客户端,客户端根据模型表结构将主索引建模的k-v数据解析得到一组类似传统关系库形式的行列二维数据。38、有益效果:与现有技术相比,本发明具有如下显著优点:1、提供高效的电网模型数据访问能力,实现大规模的电网模型数据快速访问应用场景,减轻传统单机数据库压力,扩展了基于k-v数据库的缓存机制,实现数据读写分离,从而极大减轻单一关系型数据库的压力,提升数据整体读写效率;2、最大化的存储了电网模型结构、电网模型数据本身及电网模型数据间的关系;3、降低磁盘的io和cpu负载,能为计算业务提供更加精准、高效的数据。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1