CN114490651A - 数据存储方法及装置 - Google Patents
数据存储方法及装置 Download PDFInfo
- Publication number
- CN114490651A CN114490651A CN202210062579.9A CN202210062579A CN114490651A CN 114490651 A CN114490651 A CN 114490651A CN 202210062579 A CN202210062579 A CN 202210062579A CN 114490651 A CN114490651 A CN 114490651A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- database
- structured query
- query statement
- 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
Images
Classifications
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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
- G06F16/24534—Query rewriting; Transformation
-
- 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/2455—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- 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/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Remote Sensing (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据存储方法及装置,包括:获取待存储数据;根据数据元素的数据内容以及数据元素之间的拓扑关系,生成数据元素对应的数据对象;遍历数据对象,并根据数据对象中的数据内容和拓扑信息,生成数据元素对应的结构化查询语句;将结构化查询语句发送至数据库执行,以对数据元素以及数据元素之间的拓扑关系进行存储。本申请整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中通信质量的要求,提高了数据持久化操作的成功概率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法及装置、电子设备、机器可读介质。
背景技术
将具有拓扑关系的数据存储在数据库的过程,称为拓扑关系数据的持久化。
在进行拓扑关系数据的持久化的过程中,需要维护每一条数据的拓扑关系,相关技术中可以采用递归插入数据库的方式,将每一条数据插入数据库,并根据数据库在数据插入后返回的信息,确定下一条插入的数据的拓扑信息,从而通过多次访问数据库的方式,完成数据及拓扑关系的持久化存储。
但是,目前的方案中,由于访问数据库的次数过多,会造成数据库的访问压力较大,且在访问不稳定的环境下,可能导致数据的持久化失败。
发明内容
本申请实施例提供了一种数据存储方法,以解决相关技术中访问数据库的次数过多的问题。
相应的,本申请实施例还提供了一种数据存储装置、电子设备以及存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种数据存储方法,所述方法包括:
获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素;
根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象;所述数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息;
遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句;
将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
本申请实施例公开了一种数据存储装置,所述装置包括:
获取模块,用于获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素;
第一生成模块,用于根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象;所述数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息;
第二生成模块,用于遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句;
存储模块,用于将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的方法。
与相关技术相比,本申请实施例包括以下优点:
本申请实施例中,待存储数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储待存储数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象,转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问一次数据库,将所有数据元素各自对应的结构化查询语句发送至数据库执行以实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中的通信质量的要求,提高了数据持久化操作的成功概率。
附图说明
图1是本申请实施例的一种模板数据存储方法的架构图;
图2是本申请实施例的一种数据对象集合的结构图;
图3是本申请实施例的一种应用场景的界面图;
图4是本申请实施例的一种办公场景下的数据存储方法的架构图;
图5是本申请实施例的另一种应用场景的界面图;
图6是本申请实施例的一种地图场景下的数据存储方法的架构图;
图7是本申请实施例的另一种应用场景的界面图;
图8是本申请实施例的一种数据存储方法的步骤流程图;
图9是本申请实施例的另一种数据存储方法实施例的步骤流程图;
图10是本申请实施例的一种结构化查询语句的标识数值示意图;
图11是本申请实施例的一种数据存储装置的结构框图;
图12是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:
待存储数据:用于存入数据库中数据表的数据,待存储数据存入数据库的对应数据表后,即完成了待存储数据的永久化,此后可以通过访问查询数据库的数据表,来获取待存储数据的数据内容。
数据元素:待存储数据中的一条独立数据,如针对一张表格数据,表中某行某列的一个数据内容即为一个数据元素。
拓扑关系:拓扑关系是指满足拓扑几何学原理的各空间数据间的相互关系。待存储数据中数据元素之间的拓扑关系即是指这些数据元素之间满足拓扑几何学原理的相互关系,一种拓扑关系为树形结构的数据,构成树形结构的数据具有层级关系,以及相邻层级间的父子节点关系;拓扑关系还可以包括如星型结构、环形结构、总线结构、网状结构、混合拓扑结构、蜂窝拓扑结构等。
数据对象:数据元素通过数据内容和拓扑关系构建得到的实体类,在数据库存储场景中,数据对象是与数据库中的数据表结构映射的类的对象。
结构化查询语句(SQL,Structured Query Language):是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,具有数据定义、数据操纵、和数据控制的功能。
自增标识:用于实现自增运算的标识,如在上一操作时刻自增标识的值为n,则在下一操作时刻,该自增标识的值会自动进行自增加一的运算,使得自增标识的值变为n+1。
反射机制:是指在Java环境的运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
本申请实施例的一种实现方式中,数据存储方法可应用于模板数据的存储场景,目的是实现模板数据在数据库中的持久化存储,以便后续提供模板数据内容的访问查询,在本申请实施例中,模板数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储模板数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问数据库一次,将所有数据元素各自对应的结构化查询语句发送至数据库,数据库会将结构化查询语句导入数据表中实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中通信质量的要求,提高了数据持久化操作的成功概率。
参照图1,其示出了本申请实施例提供的一种模板数据存储方法的架构图,包括模板服务器和数据库服务器,在该场景下,模板服务器可以维护模板数据,模板可以为分类分级模板,分类分级模板可以针对数据的分类分级,划分出若干不同的数据元素,分类分级模板中的数据元素构成的拓扑结构可以为树形结构。
具体的,图1示出的分类分级模板可以为金融领域的金融分类分级模板,其包括4个层级,层级1具有数据元素服务;层级2具有数据元素交易信息和数据元素合约协议;层级3具有数据元素交易通用信息、数据元素合同通用信息和数据元素信用卡服务信息;层级4具有数据元素风险等级S3、数据元素风险等级S2和数据元素风险等级S2。需要说明的是,本申请实施例示出的所有模板数据都是脱敏后且在互联网公开发布的数据,且数据的读取经过客户和各方平台的同意。另外,本申请实施例支持进行持久化存储操作的模板还可以包括自定义的分类分级模板和其他领域的模板,如工业分类分级模板、能源分类分级模板等。
在本申请实施例中,为了方便模板服务器对模板数据的处理,可以根据金融分类分级模板中数据元素的拓扑结构,将金融分类分级模板转换为excel表格文件,以通过行列关系对拓扑关系进行维护,具体转换后的excel表格文件如下表1:
层级1 | 层级2 | 层级3 | 层级4 |
服务 | 交易信息 | 交易通用信息 | 风险等级S3 |
服务 | 合约协议 | 合同通用信息 | 风险等级S2 |
服务 | 合约协议 | 信用卡服务信息 | 风险等级S2 |
表1
进一步的,模板服务器可以根据转换后的excel表格文件,将其中的数据元素转换为数据对象,得到数据对象集合,数据对象具体可以为一个实体类,其中定义了数据元素的数据内容和拓扑关系,在一种实现方式中,数据对象具体可以为map形式的实体类,map中的键可以定义数据元素的名称(如“服务”),map中的值包括该数据元素所有子节点数据元素的拓扑信息,拓扑信息具体可以为一个包含子节点数据元素的子节点对象列表,其中,map是一个将键映射到值的对象,Map对象保存键/值对,是键/值对的集合,任何值(对象或者原始值)都可以作为一个键或一个值,本申请实施例基于map形式的实体类来反映待插入数据表中的数据元素,更加符合数据库的场景下的访问需求,即通过访问数据库并由键查询得到数据的值的需求。
本申请实施例在转换后的数据对象中对数据元素的数据内容定义的基础上,将数据对象的子孙节点数据对象的集合进行了定义,从而实现了在数据对象中对该数据对象的拓扑关系的维护,参照图2,其示出了本申请实施例提供的一种数据对象集合的结构图,图2即反映了基于图1的金融分类分级模板转换后得到的数据对象集合的结构,其中可以看出,各个数据对象除了包含自己的属性(数据内容)之外,还包括子节点对象列表(拓扑信息),根据表1中的拓扑关系,数据对象服务的子节点对象列表包含数据对象交易信息和数据对象合约信息;数据对象交易信息的子节点对象列表包含数据对象交易通用信息;数据对象交易通用信息的子节点对象列表包含数据对象风险等级S3;数据对象合约协议的子节点对象列表包含数据对象交易合同信息和数据对象信用卡服务信息;数据对象交易合同信息的子节点对象列表包含数据对象风险等级S2;数据对象信用卡服务信息的子节点对象列表包含数据对象风险等级S2。数据对象风险等级S3、数据对象风险等级S2、数据对象风险等级S2由于没有子节点,则这三者的子节点对象列表为空。
参照图1,在得到图2示出的数据对象集合之后,可以从层级1开始遍历各个数据对象,将每一个数据对象基于数据内容和拓扑信息构建成结构化查询语句(SQL),得到数据对象对应的结构化查询语句集合,构建结构化查询语句时,可以利用Java的反射机制,获取数据对象的属性和属性值,并通过解析注解得到表名,属性、属性值和表名即为构建结构化查询语句的三个关键参数,最后按照结构化查询语句的构建格式,将这三个关键参数拼装为结构化查询语句即可,该过程可以通过结构化查询语句转换工具实现。
需要说明的是,数据对象对应的结构化查询语句集合是针对数据元素的维度构建的,本申请实施例还可以针对金融分类分级模板的维度,构建一条用于表征金融分类分级模板的描述信息的模板结构化查询语句,模板结构化查询语句用于定义模板的标识、创建时间、修改时间、模板名称、启用状态、支持的最大分类级别、删除状态、模板类别等字段。
最后,本申请实施例可以通过访问一次数据库,将金融分类分级模板的数据对象对应的结构化查询语句集合,以及用于表征金融分类分级模板的描述信息的模板结构化查询语句一同发送给数据库进行执行,数据库可以根据模板结构化查询语句,将金融分类分级模板的描述信息存储在第一数据表中,并根据结构化查询语句集合,将金融分类分级模板包含的数据元素存储在第二数据表中,完成金融分类分级模板的持久化存储。另外,为了体现模板结构化查询语句与数据对象对应的结构化查询语句之间的关联,数据对象对应的结构化查询语句中使用了金融分类分级模板在第一数据表中的标识的字段。
参照图1,模板服务器还可以与客户端进行通信交互,向客户端提供基于金融分类分级模板的服务,在将金融分类分级模板持久化存储至数据库服务器的数据库之后,模板服务器可以响应于客户端对金融分类分级模板的查询请求,根据查询请求从数据库服务器的数据库中提取金融分类分级模板的数据内容并反馈给客户端,另外,当客户端的用户为具有开发权限的用户时,模板服务器还可以响应于客户端发送的增加/删除/修改/查询的处理请求,并通过访问数据库服务器的数据库,对数据库中存储的金融分类分级模板进行的增加/删除/修改/查询的处理。
针对模板服务器与客户端的通信交互,可以实现的几种基于分类分级模板的场景如下:
在一种场景中,参照图3,其示出了本申请实施例提供的一种应用场景的界面图,用户在客户端的界面11办理金融服务时,客户端可以通过后台向模板服务器申请使用金融分类分级模板,客户端可以通过模板服务器从数据库提取并返回的金融分类分级模板的数据内容,对当前界面11的数据进行识别,从而确定进行的信用卡办理服务对应的金融类别、风险等级以及相关建议,并在界面11进行相应展示和打标。
在另一种场景中,参照图3,客户端可以向模板服务器申请使用金融分类分级模板,客户端可以通过模板服务器从数据库提取并返回金融分类分级模板的数据内容,以对元数据筛查界面12中的元数据1和元数据2进行识别,从而确定元数据对应的金融类别、风险等级以及相关建议,以便后续基于元数据对应的金融类别、风险等级及相关建议,对元数据进行脱敏处理。
在本申请实施例中,数据存储方法还可以应用于办公场景下的组织架构数据的持久化存储,参照图4,其示出了本申请实施例提供的一种办公场景下的数据存储方法的架构图,包括组织架构服务器和数据库服务器,在该场景下,组织架构服务器可以用于维护公司的组织架构。
需要强调的是,本申请实施例中,对于所有客户相关数据,都是经客户和各方同意之后才能获取和使用。
具体的,图4示出的组织架构数据可以包括3个层级,层级1具有数据元素总部;层级2具有数据元素分公司1和数据元素分公司2;层级3具有数据元素网点11、数据元素网点21和数据元素网点22。需要说明的是,本申请实施例示出的所有组织架构数据都是脱敏后且在互联网公开发布的数据,且数据的读取经过客户和各方平台的同意。
在本申请实施例中,组织架构服务器可以根据组织架构数据中数据元素的拓扑结构,将组织架构数据转换为excel表格文件,进而将excel表格文件,中的数据元素转换为数据对象,得到数据对象集合,并从层级1开始遍历各个数据对象,将每一个数据对象基于数据内容和拓扑信息构建成结构化查询语句,得到数据对象对应的结构化查询语句集合,最后可以通过访问一次数据库,将数据对象对应的结构化查询语句集合发送给数据库进行执行。
参照图4,组织架构服务器还可以与客户端进行通信交互,向客户端提供基于组织架构数据的服务,在将组织架构数据持久化存储至数据库服务器的数据库之后,组织架构服务器可以响应于客户端对组织架构数据的查询请求,根据查询请求从数据库服务器的数据库中提取组织架构数据的数据内容并反馈给客户端,另外,当客户端的用户为具有开发权限的用户时,组织架构服务器还可以响应于客户端发送的增加/删除/修改/查询的处理请求,并通过访问数据库服务器的数据库,对数据库中存储的组织架构数据进行的增加/删除/修改/查询的处理。
例如,参照图5,其示出了本申请实施例提供的另一种应用场景的界面图,针对组织架构服务器与客户端的通信交互,可以实现的一种基于组织架构数据的场景具体为:用户在客户端的界面13办理入职时,需要进行多个组织架构下管理人员的授权,客户端可以向组织架构服务器申请使用组织架构数据,客户端可以通过组织架构服务器从数据库提取并返回的组织架构数据内容,对当前页面的数据进行识别,从而确定各个管理人员的具体组织架构展示并打标,得到先进行分公司2管理人员审批,再进行网点21管理人员审批的流程,以帮助用户更清晰的完成服务的办理。
在本申请实施例中,数据存储方法还可以应用于地图场景下的地图区块数据的持久化存储,参照图6,其示出了本申请实施例提供的一种地图场景下的数据存储方法的架构图,包括地图服务器和数据库服务器,在该场景下,地图服务器可以用于维护地图中地图区块之间的拓扑关系,这种拓扑关系包括地图区块之间的所属关系和层级关系。
具体的,图6示出的地图区块数据可以包括3个层级,层级1具有数据元素华东;层级2具有数据元素江州省和数据元素京州省;层级3具有数据元素江城市、数据元素京城市和数据元素叶州市。需要说明的是,本申请实施例示出的所有地图区块数据都是脱敏后且在互联网公开发布的数据,且数据的读取经过客户和各方平台的同意。
在本申请实施例中,地图服务器可以根据地图区块数据中数据元素的拓扑结构,将地图区块数据转换为excel表格文件,进而将excel表格文件,中的数据元素转换为数据对象,得到数据对象集合,并从层级1开始遍历各个数据对象,将每一个数据对象基于数据内容和拓扑信息构建成结构化查询语句,得到数据对象对应的结构化查询语句集合,最后可以通过访问一次数据库,将数据对象对应的结构化查询语句集合发送给数据库进行执行。
参照图6,地图服务器还可以与客户端进行通信交互,向客户端提供基于地图区块数据的服务,在将地图区块数据持久化存储至数据库服务器的数据库之后,地图服务器可以响应于客户端对地图区块数据的查询请求,根据查询请求从数据库服务器的数据库中提取地图区块数据的数据内容并反馈给客户端。
例如,参照图7,其示出了本申请实施例提供的另一种应用场景的界面图,针对地图服务器与客户端的通信交互,可以实现的一种基于地图区块数据的场景具体为:用户在客户端的界面14进行导航服务时,通过地图服务器计算得到的初始路线为:地点A—地点B—地点C,客户端可以向地图服务器申请使用地图区块数据,客户端可以通过地图服务器从数据库提取并返回的地图区块数据的数据内容,对初始路线进行识别,从而确定更准确的导航路径:京州省京城市地点A—京州省叶洲市地点B—京州省江城市地点C。
本申请实施例中,待存储数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储待存储数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象,转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问一次数据库,将所有数据元素各自对应的结构化查询语句发送至数据库执行以实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中的通信质量的要求,提高了数据持久化操作的成功概率。
参照图8,其示出了本申请实施例提供的一种数据存储方法的步骤流程图,包括:
步骤101,获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素。
在本申请实施例中,待存储数据是用于存入数据库的数据表中的数据,待存储数据存入数据库的对应数据表后,即完成了待存储数据的永久化,此后可以通过访问查询数据库的数据表,来获取待存储数据的数据内容,数据元素是待存储数据中的一条独立数据,待存储数据中数据元素之间的拓扑关系即是指这些数据元素之间满足拓扑几何学原理的相互关系。如图1、图4、图6中分别示出的金融分类分级模板、组织架构数据、地图区块数据都是数据元素之间具有拓扑关系的待存储数据,这三种数据的拓扑关系都为树形结构,拓扑关系还可以包括如星型结构、环形结构、总线结构、网状结构、混合拓扑结构、蜂窝拓扑结构等,本申请实施例对拓扑关系的具体结构不做限定。
步骤102,根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象。
其中,数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息。
在本申请实施例中,根据数据元素的数据内容以及数据元素之间的拓扑关系,将数据元素转换为数据对象,得到数据对象集合,数据对象具体可以为一个实体类,其中定义了数据元素的数据内容和拓扑关系,在拓扑关系为具有层级关系和父子节点关系的树形结构的情况下,在数据对象中对数据元素的数据内容定义的基础上,通过将拓扑信息具体作为一个包含其他数据元素的数据对象的子节点对象列表的形式,从而实现了对数据对象的子孙节点数据对象的集合的定义,从而达到了在数据对象中对该数据对象的拓扑关系的维护的目的。
步骤103,遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句。
在得到数据对象集合之后,可以开始遍历各个数据对象,将每一个数据对象基于数据内容和拓扑信息构建成结构化查询语句,得到数据对象对应的结构化查询语句集合。
构建结构化查询语句时,可以利用Java的反射机制,获取数据对象的属性和属性值,并通过解析注解得到表名,属性、属性值和表名为构建结构化查询语句的三个关键参数,最后按照结构化查询语句的构建格式,将这三个关键参数拼装为结构化查询语句即可,该过程可以通过结构化查询语句转换工具实现。需要说明的是,本申请也可以通过其他方式获取数据对象的属性、属性值和表名,如自行提取或定义这三个关键参数的具体值。
步骤104,将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
本申请实施例可以通过访问一次数据库服务器,将数据对象对应的结构化查询语句集合发送给数据库进行执行,数据库可以将数据对象对应的结构化查询语句存储在数据表中,完成待存储数据的持久化存储。
综上所述,本申请实施例中,待存储数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储待存储数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象,转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问一次数据库,将所有数据元素各自对应的结构化查询语句发送至数据库执行以实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中的通信质量的要求,提高了数据持久化操作的成功概率。
参照图9,示出了本申请的另一种数据存储方法实施例的步骤流程图。包括:
步骤201,获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素。
该步骤具体可以参照上述步骤101,此处不再赘述。
步骤202,根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成map形式的所述数据对象。
在本申请实施例中,为了方便对待存储数据的处理,可以根据待存储数据中数据元素的拓扑结构,将待存储数据转换为excel表格文件,以通过行列关系对拓扑关系进行维护,在读取excel表格文件的数据内容是,可以获取到List<List<String>>list对象,list中的每一个元素为excel中的每一行数据,每一个元素为List<String>形式,该元素中的索引从0-N位置的数据为excel每行中第0到第N列的数据。
以图1和表1中的金融分类分级模板为例,List<List<String>>list对象具体数据形式如下:
接下来,针对list中的每一个元素,即excel中的每一行数据,可以得到各个数据元素之间的拓扑关系,再根据数据元素的数据内容以及数据元素之间的拓扑关系,生成map形式的数据对象的过程中,可以构建map的键和值,键可以为数据元素的数据名称,值包括数据对象的子节点数据对象的数据内容,即值可以为图2中数据对象的子节点对象列表。遍历所有数据元素后可以得到如图2所示的数据对象集合,可见子节点的数据对象存在于其父节点数据对象的子节点对象列表中,形成一个多层嵌套的结构,使得各个层级之间的父子节点拓扑关系通过子节点对象列表所关联起来,后续可以通过获取层级1的实体对象,遍历层级1的实体对象以及其子节点对象列表,即可完成后续生成结构化查询语句的操作。
可选的,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;所述map形式的数据对象的键包括所述数据对象的名称,所述map形式的数据对象的值包括所述数据对象的子节点数据对象的数据内容。
在本申请实施例中,map形式的数据对象的值为包含其他数据元素的数据对象的子节点对象列表,本申请实施例在转换后的数据对象中对数据元素的数据内容定义的基础上,将数据对象的子孙节点数据对象的集合进行了定义,从而实现了在数据对象中对该数据对象的拓扑关系的维护。
步骤203,遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句。
该步骤具体可以参照上述步骤101,此处不再赘述。
可选的,在一种实现方式中,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;所述拓扑信息包括所述数据元素的所有子节点数据元素对应的数据对象;所述步骤203具体可以包括:
子步骤2031、按照所述层级的顺序遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成具有自增标识字段和父节点标识字段的结构化查询语句。
在本申请实施例中,具体可以按照层级的顺序,如图1中由层级1到层级4的顺序,遍历数据对象,并且在遍历之前,设定自增标识和父节点标识这两个标识参数参与后续遍历过程,其中,基于遍历拓扑关系中两个具有父子节点关系的数据元素时,后一个数据元素的遍历次序递增加一的特性,设立的自增标识用于实现自增运算,如在上一操作时刻自增标识的值为n,则在下一操作时刻,该自增标识的值会自动进行自增加一的运算,使得自增标识的值变为n+1;在本申请实施例中,一个数据对象的自增标识既可以用于表征自己的标识,也可以作为其子节点数据对象中的父节点标识。
由于除了层级1的数据元素之外,其他每个数据元素都具有对应的父节点数据元素,则针对数据元素维护的父节点标识,用于体现该数据元素的父节点的数据元素的标识,从而形成对数据元素的拓扑关系的维护。
具体的,每个数据对象最终确定的自增标识和父节点标识,可以作为该数据对象对应数据元素的结构化查询语句中的自增标识字段和父节点标识字段,从而形成在结构化查询语句中维护数据元素的拓扑关系的目的。
可选的,子步骤2031具体可以包括:
子步骤A1、在遍历处于首层级的根节点数据对象时,获取自增标识的第一初始值和父节点标识的第二初始值。
在本申请实施例中,由于自增标识是数据库插入数据时的全局变量参数,因此,在插入待存储数据的过程是数据库开始的全新插入过程的情况下,自增标识可以设定为第一初始值,如1或大于1的整数值,并且针对处于首层级的根节点数据对象,如图2中的数据对象服务,由于其没有父节点,则可以将父节点标识设定为第二初始值,第二初始值可以为空值“null”。另外,在插入待存储数据的操作开始之前,数据库中存在利用自增标识的历史插入操作,使得自增标识的值并非为第一初始值,则可以将自增标识的当前的最大值加一的结果作为当前插入待存储数据时自增标识的起始值,这样可以使得当前插入待存储数据的操作续接历史插入操作,避免数据表中出现空白行,以及避免当前插入的数据覆盖数据表中已插入过数据的行造成数据混乱。
可选的,在将所述结构化查询语句分别发送至不同数据库执行时,子步骤A1具体可以包括:
子步骤A11、获取不同数据库中数据表各自执行结构化查询语句时的自增标识的当前的最大值。
子步骤A12、将所有当前自增标识的当前的最大值加一的结果作为所述第一初始值。
在实际应用中,可以存在多个不同的运行环境,这些运行环境都具有数据库,且都具有在数据库持久化存储同一待存储数据的需求,但是针对自增标识这个针对数据库中的数据表的全局参数,不同环境的数据库中的数据表各自的自增标识的当前的最大值可能不同,这是由于不同数据库中的数据表存储不同的历史插入操作而造成的,此时,则本申请实施例将所有当前自增标识当前的最大值加一的结果作为所述第一初始值,使得在不同环境的数据库中数据表插入同一结构化查询语句集合时,可以基于同一自增标识的起始值开始插入操作,保证了插入数据的一致性,实现了结构化查询语句集合可以复用至不同的数据库环境中的目的,使得同一套执行代码可以适配不同的环境,对于后续的统一维护带来了便利性。
例如,针对公有云和私有云(专有云)两个不同环境,公有云和私有云都部署有自己的数据库,假设公有云的数据库中数据表由于其历史插入操作,使得公有云使用的自增标识的当前为10,私有云的数据库中数据表由于其历史插入操作,使得私有云使用的自增标识的当前为20,则可以分别在公有云数据库中数据表和私有云数据库中数据表执行:
SELECT max(id)from`industry_template;
该操作的意义是取公有云数据库中数据表和私有云数据库中数据表各自使用的自增标识的当前的最大值,从而得到取值20,再将取值20加一得到本次插入待存储数据时自增标识的起始值21,后续在插入时,公有云数据库中数据表和私有云数据库中数据表共同使用统一的值作为自增标识的起始值,保证了插入数据的一致性,避免了数据表中的数据混乱,另外执行代码也实现了复用至公有云环境和私有云环境的目的,提高了维护和开发的便利性。需要说明的是,针对公有云数据库中数据表自增标识的10-20之间的取值范围,可以在数据表对应行保留为空值,以留给其他插入操作使用。
需要说明的是,本申请实施例的数据存储方法可以部署在私有云场景,由于私有云场景下用于安全部署的资源有限,而安全部署中涉及的拓扑关系可能很复杂,若安全部署占用资源过多,会增大客户私有云的使用成本,数据库的查询压力相对较大,本申请实施例的上述方案的应用有利于降低私有云数据安全中心的资源消耗,达到用较少的资源实现数据安全中心顺利部署的效果。
其中,私有云是为某个特定用户/机构建立的,可以实现小范围内的资源优化。
当然,对于专有云,其原理与私立云类似,本申请实施例的上述方案在专有云中的应用有利于降低专有云数据安全中心的资源消耗,达到用较少的资源实现数据安全中心顺利部署的效果。
其中,专有云(Dedicated Cloud,以下简称DeC)是在公有云上隔离出来的专属虚拟化资源池。在专有云内,用户可申请独占物理设备,独享计算和网络资源,并使用可靠的分布式存储。用户可在管理控制台统一管理资源,就像自建私有云一样的灵活使用公有云。
子步骤A2、确定所述根节点数据对象对应的结构化查询语句中的自增标识字段包括第一初始值的自增标识,以及确定父节点标识字段包括第二初始值的父节点标识。
在该步骤中,在具体通过结构化查询语句构建工具构建根节点数据对象对应的结构化查询语句时,可以基于确定的第一初始值和第二初始值,在结构化查询语句的自增标识字段中设置第一初始值的自增标识,以及在父节点标识字段中设置第二初始值的父节点标识。
可选的,子步骤2031具体可以包括:
子步骤A3、在遍历处于非首层级的子孙节点数据对象时,确定所述子孙节点数据对象对应的结构化查询语句中的自增标识字段包括的自增标识的值为:上一个遍历的数据对象的自增标识的值加1的结果,以及确定父节点标识字段包括的父节点标识的值为:所述子孙节点数据对象的父节点数据对象的自增标识的值。
在遍历处于非首层级的子孙节点数据对象时,由于数据对象的拓扑信息包括所述数据元素的所有子节点数据元素对应的数据对象,从而维护了数据对象之间的父子节点拓扑关系,因此,可以设定当前遍历的子孙节点数据对象的自增标识的值为:上一个遍历的数据对象的自增标识的值加1的结果,父节点标识的值为:所述子孙节点数据对象的父节点数据对象的自增标识的值,从而通过自增标识和父节点标识的配合,对数据库中插入的数据元素的拓扑关系进行了维护。
例如,针对图2示出的数据对象集合,在遍历过程中,按照数据对象服务—数据对象交易信息—数据对象交易通用信息—数据对象风险等级S3—数据对象合约协议—数据对象交易合同信息—数据对象风险等级S2—数据对象信用卡服务信息—数据对象风险等级S2的遍历顺序进行执行,最后可以得到如图10所示的结果,图10示出了本申请的一种结构化查询语句的标识数值示意图,其中,按照上述遍历顺序执行每个结构化查询语句的自增标识自增加一操作后,得到的结果包括:服务SQL的自增标识为1;父节点标识为null—交易信息SQL的自增标识为2;父节点标识为1—交易通用信息SQL的自增标识为3;父节点标识为2—风险等级S3 SQL的自增标识为4;父节点标识为3—合约协议SQL的自增标识为5;父节点标识为1—交易合同信息SQL的自增标识为6;父节点标识为5—风险等级S2 SQL的自增标识为7;父节点标识为6—信用卡服务信息SQL的自增标识为8;父节点标识为5—风险等级S2SQL的自增标识为9;父节点标识为8。
可选的,在另一种实现方式中,所述步骤203具体可以包括:
子步骤2032、通过调用反射机制函数,获取所述数据对象的数据内容和拓扑信息。
子步骤2033、根据所述数据对象的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句。
在本申请实施例中,一条结构化查询语句的基本形式如下:
insert into table_name(column_1,column_2,column_3)values(value_1,value_2,value_3)
其中,结构化查询语句具有三个关键部分:表名tablename;插入的数据列和对应数据列的具体值value。为避免生成结构化查询语句的代码重复,本申请实施例可以抽象一种通用处理方法,即利用Java的反射机制,得到数据对象的属性及属性对应的值,并解析注解得到表名,从而可以得到结构化查询语句的三个关键部分,然后将表名、属性列表、属性列表对应的值拼装为结构化查询语句即可,该抽象方法可以处理任意实体对象,后续若有其他类型的实体对象也需要生成结构化查询语句时,直接使用即可,无需再次开发,降低了开发难度。并且,上述方式存储的拓扑关系,占用的存储资源可以更少。
针对一个数据对象通过Java反射机制得到结构化查询语句的具体过程如下:
第一步、解析传入的数据对象,遍历获取类及父类定义的所有属性,添加到fieldList中。
第二步、解析数据对象的@Table注解,得到表名tableName。
第三步、初始化属性字符串StringBuilder fieldSb=new StringBuilder("(");以及初始化属性值字符串StringBuilder valueSb=new StringBuilder("values(");
第四步、遍历处理fieldList列表;
第五步、得到field的名字,跳过忽略的属性,如serialVersionUID、@Transient注解的属性会被忽略,将属性名转换为小写加下划线形式属性名,fieldSb添加分隔符及此属性名。
第六步、利用Java反射机制,调用属性的get方法得到属性的值,valueSb添加分隔符及此属性值,以及处理filedList的下一个field属性,若filed属性非空,则重复执行第五步、第六步,若filed属性为空,则跳出循环遍历,执行第七步。
第七步、拼接tableName、fieldSb、valueSb,得到完整的一条结构化查询语句。
步骤204,将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
该步骤具体可以参照步骤104,此处不再赘述。
可选的,所述方法还包括:
步骤205,获取所述待存储数据的描述信息。
步骤206,根据所述待存储数据的描述信息生成所述待存储数据对应的结构化查询语句。
步骤207,将所述待存储数据对应的结构化查询语句发送至所述数据库执行,以对所述待存储数据的描述信息进行存储。
可选的,所述待存储数据的描述信息存储在所述数据库的第一数据表中,所述第一数据表中用于存储所述待存储数据的描述信息中的数据标识字段、第一创建时间字段、第一修改时间字段、数据名称字段、启用状态字段、数据类别字段、删除状态字段、最大拓扑层级字段中的一种或多种。
可选的,所述待存储数据的数据元素存储在所述数据库的第二数据表中,所述第二数据表与所述待存储数据对应的第一数据表相互关联。所述第二数据表中用于存储所述数据元素的元素标识字段、第二创建时间字段、第二修改时间字段、所述待存储数据在所述第一数据表中的标识的字段、父节点标识字段、显示排序号字段、风险等级字段、扫描范围字段、关联模型字段、元素类别字段中的一种或多种。
结合步骤205至207,数据库中可以至少存在两个数据表:第一数据表和第二数据表,若认为具有拓扑关系的待存储数据是一类行业或模板,则基于由待存储数据的描述信息生成的结构化查询语句,第一数据表用于存储行业或模板的基本概括信息,即上述待存储数据的描述信息中定义的字段;第二数据表存储的是各行业或模板的拓扑分类数据对象,即上述针对待存储数据的数据元素定义的各个字段,拓扑分类数据对象可以通过行业或模板属性标志与第一数据表关联。
例如,在待存储数据为分类模板时,第一数据表即为模板表,用于存储各个分类模板各自的描述信息,具体为执行用于反映各个分类模板的描述信息的结构化查询语句,使得各个分类模板的描述信息存储在第一数据表中;第二数据表即为模板分类表,用于存储各个模板的分类数据,具体为执行用于反映各个分类数据的结构化查询语句,使得分类数据存储在第二数据表中,模板分类表中的分类数据通过template_id与模板表中的自增标识关联,代表各分类数据分别属于哪个模板。
进一步的,具体参照表2,其中示出了待存储数据为分类分级模板数据的情况下,第一数据表industry_template中存储的必要字段:
表2针对该分类分级模板构建的数据对象形式示例如下:
可见,其中定义了第一数据表中各个所需的字段,针对该数据对象得到的结构化查询语句如下:
insertintoindustry_template:
(name,status,max_category_level,is_delete,type,id,gmt_create,gmt_modified)values('${built_in_finance_template_simplify_name}',0,5,0,2,3,'xxxx-xx-xx 20:51:06.83','xxxx-xx-xx 20:51:06.83')。
例如,具体参照表3,其中示出了待存储数据为分类分级模板数据的情况下,第一数据表industry_template中存储的必要字段:
表3
针对该分类分级模板的数据元素构建的数据对象形式示例如下:
可见,其中定义了第二数据表中各个所需的字段,且通过子节点数据对象列表List<IndustryCategory>children,维护了数据元素的拓扑关系,针对该数据对象得到的结构化查询语句形式如下:
insert into industry_category:
(name,category_level,template_id,order_num,id,gmt_create,gmt_modified)values('${finance_template_simplify_001000000000000}',1,3,1,627,'xxxx-xx-xx 20:51:06.847','xxxx-xx-xx20:51:06.847');。
本申请实施例可以通过访问一次数据库,将待存储数据包含的数据对象对应的结构化查询语句,以及与待存储数据的描述信息对应的结构化查询语句一同发送给数据库进行执行,数据库可以将待存储数据的描述信息存储在第一数据表中,将待存储数据的数据元素存储在第二数据表中,完成整个待存储数据的持久化存储。
需要说明的是,上述代码仅仅为示例,通过示例说明原理。在以其他形式的代码采用相同逻辑执行本申请实施例的过程,都在本申请实施例的保护范围内。
可选的,所述方法还包括:
步骤208,响应于针对目标数据元素的查询请求,根据所述查询请求,在确定所述第一数据表中与目标待存储数据对应的启用状态字段为启用状态的情况下,从所述数据库中与所述第一数据表关联的第二数据表中获取所述目标数据元素的数据内容,所述目标待存储数据包含所述目标数据元素。
具体的,在本申请实施例中,当响应于客户端针对目标数据元素的查询请求时,可以先根据查询请求在数据库的第一数据表中,查看是否存储请求查询的目标数据元素所属的待存储数据是否存在,并在存在的情况下,进一步确定第一数据表中待存储数据的启用字段是否是启用状态,若是,则从数据库中第一数据表关联的第二数据表中获取目标数据元素的数据内容,并目标数据元素的数据内容发送至客户端。本申请实施例中,数据库管理者可以根据实际需求,通过待存储数据的启用字段来控制待存储数据是否启用并接受访问查询,增加了管理灵活性。
可选的,所述方法还包括:
步骤209,获取针对目标数据元素的查询请求,所述查询请求包括目标语言环境的查询键。
步骤210,根据所述查询请求包括目标语言环境的查询键,从所述数据库中获取所述目标语言环境下的目标数据元素的数据内容。
在本申请实施例中,数据库可以应用于不同语言环境的应用场景中,如数据库可以提供面向英语语言环境的英文查询页面,也可以提供面向中文语言环境的中文查询页面,并根据用户的页面查询语言如中文或英文,通过在将数据元素转换为map形式的数据对象时,设定名字唯一标识键并持久化存储,查询时,通过语言环境英文前缀加名字唯一标志作为唯一国际化键,查询缓存中唯一国际键对应的翻译结果,可以得到不同查询环境的数据元素查询结果。
具体的,在构建国际化键的过程中,构建不同语言下国际化键的具体翻译内容,将不同语言环境的国际化键及对应翻译语言存储到缓存中,应用程序启动时,将缓存中的各语言环境的国际化键及对应翻译加载到内存。访问者获取待存储数据的数据内容时,应用程序会从数据库中读取数据,根据访问者的语言环境,读取到国际化键的变量前添加对应的语言环境,如zh_cn_(中文)或en_us_(英文),然后读取内存中对应语言环境的国际化键,可以得到不同语言环境下的待存储数据的数据内容,用于不同语言环境的页面显示。
综上所述,本申请实施例中,待存储数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储待存储数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象,转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问一次数据库,将所有数据元素各自对应的结构化查询语句发送至数据库执行以实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中通信质量的要求,提高了数据持久化操作的成功概率。
参照图11,其示出了本申请实施例提供的一种数据存储装置的框图,包括:
获取模块301,用于获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素;
第一生成模块302,用于根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象;所述数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息;
第二生成模块303,用于遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句;
存储模块304,用于将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
可选的,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;所述拓扑信息包括所述数据元素的所有子节点数据元素对应的数据对象;
所述第二生成模块303,包括:
遍历子模块,用于按照所述层级的顺序遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成具有自增标识字段和父节点标识字段的结构化查询语句。
可选的,所述遍历子模块,包括:
第一遍历单元,用于在遍历处于首层级的根节点数据对象时,获取自增标识的第一初始值和父节点标识的第二初始值;
确定单元,用于确定所述根节点数据对象对应的结构化查询语句中的自增标识字段包括第一初始值的自增标识,以及确定父节点标识字段包括第二初始值的父节点标识。
可选的,所述遍历子模块,包括:
第二遍历单元,用于在遍历处于非首层级的子孙节点数据对象时,确定所述子孙节点数据对象对应的结构化查询语句中的自增标识字段包括的自增标识的值为:上一个遍历的数据对象的自增标识的值加1的结果,以及确定父节点标识字段包括的父节点标识的值为:所述子孙节点数据对象的父节点数据对象的自增标识的值。
可选的,在将所述结构化查询语句分别发送至不同数据库执行时,所述第一遍历单元,包括:
获取子单元,用于获取不同数据库中数据表各自执行结构化查询语句时的自增标识的当前的最大值;
自增子单元,用于将所有当前自增标识的当前的最大值加一的结果作为所述第一初始值。
可选的,所述第一生成模块302,包括:
生成子模块,用于根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成map形式的所述数据对象。
可选的,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;
所述map形式的数据对象的键包括所述数据对象的名称,所述map形式的数据对象的值包括所述数据对象的子节点数据对象的数据内容。
可选的,所述第二生成模块303,包括:
调用子模块,用于通过调用反射机制函数,获取所述数据对象的数据内容和拓扑信息;
生成子模块,用于根据所述数据对象的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句。
可选的,所述装置还包括:
属性信息模块,用于获取所述待存储数据的描述信息;
第三生成模块,用于根据所述待存储数据的描述信息生成所述待存储数据对应的结构化查询语句;
存储模块,用于将所述待存储数据对应的结构化查询语句发送至所述数据库执行,以对所述待存储数据的描述信息进行存储。
可选的,所述待存储数据的描述信息存储在所述数据库的第一数据表中,所述第一数据表中用于存储所述待存储数据的描述信息中的数据标识字段、第一创建时间字段、第一修改时间字段、数据名称字段、启用状态字段、数据类别字段、删除状态字段、最大拓扑层级字段中的一种或多种;
所述待存储数据的数据元素存储在所述数据库的第二数据表中,所述第二数据表与所述待存储数据对应的第一数据表相互关联;
所述第二数据表中用于存储所述数据元素的元素标识字段、第二创建时间字段、第二修改时间字段、所述待存储数据在所述第一数据表中的标识的字段、父节点标识字段、显示排序号字段、风险等级字段、扫描范围字段、关联模型字段、元素类别字段中的一种或多种。
可选的,所述装置还包括:
查询模块,用于响应于针对目标数据元素的查询请求,根据所述查询请求,在确定所述第一数据表中与目标待存储数据对应的启用状态字段为启用状态的情况下,从所述数据库中与所述第一数据表关联的第二数据表中获取所述目标数据元素的数据内容,所述目标待存储数据包含所述目标数据元素。
可选的,所述装置还包括:
响应模块,用于获取针对目标数据元素的查询请求,所述查询请求包括目标语言环境的查询键;
语言环境模块,用于根据所述查询请求包括目标语言环境的查询键,从所述数据库中获取所述目标语言环境下的目标数据元素的数据内容。
综上,本申请实施例中,待存储数据中的数据元素之间具有拓扑关系,这使得在数据库中持久化存储待存储数据的过程中,需要维护每一条数据元素的拓扑关系,本申请实施例通过根据数据元素的数据内容以及拓扑关系,生成数据元素对应的数据对象,并通过遍历操作,将数据元素的数据对象,转换为包含该数据元素的拓扑信息字段的结构化查询语句,最后通过访问一次数据库,将所有数据元素各自对应的结构化查询语句发送至数据库执行以实现持久化存储,整个持久化存储过程仅需访问一次数据库,降低了数据库的访问压力,并使得数据持久化操作摆脱了对访问过程中通信质量的要求,提高了数据持久化操作的成功概率。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务端(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务端(集群)等电子设备。图12示意性地示出了可被用于实现本申请实施例中所述的各个实施例的示例性装置1000。
对于一个实施例,图12示出了示例性装置1000,该装置具有一个或多个处理器1002、被耦合到(一个或多个)处理器1002中的至少一个的控制模块(芯片组)1004、被耦合到控制模块1004的存储器1006、被耦合到控制模块1004的非易失性存储器(NVM)/存储设备1008、被耦合到控制模块1004的一个或多个输入/输出设备1010,以及被耦合到控制模块1004的网络接口1012。
处理器1002可包括一个或多个单核或多核处理器,处理器1002可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1000能够作为本申请实施例中所述终端设备、服务端(集群)等设备。
在一些实施例中,装置1000可包括具有指令1014的一个或多个计算机可读介质(例如,存储器1006或NVM/存储设备1008)以及与该一个或多个计算机可读介质相合并被配置为执行指令1014以实现模块从而执行本公开中所述的动作的一个或多个处理器1002。
对于一个实施例,控制模块1004可包括任意适当的接口控制器,以向(一个或多个)处理器1002中的至少一个和/或与控制模块1004通信的任意适当的设备或组件提供任意适当的接口。
控制模块1004可包括存储器控制器模块,以向存储器1006提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1006可被用于例如为装置1000加载和存储数据和/或指令1014。对于一个实施例,存储器1006可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1006可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块1004可包括一个或多个输入/输出控制器,以向NVM/存储设备1008及(一个或多个)输入/输出设备1010提供接口。
例如,NVM/存储设备1008可被用于存储数据和/或指令1014。NVM/存储设备1008可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1008可包括在物理上作为装置1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备1008可通过网络经由(一个或多个)输入/输出设备1010进行访问。
(一个或多个)输入/输出设备1010可为装置1000提供接口以与任意其他适当的设备通信,输入/输出设备1010可以包括通信组件、音频组件、传感器组件等。网络接口1012可为装置1000提供接口以通过一个或多个网络通信,装置1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1000可以但不限于是:服务端、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1000包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据存储方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种数据存储方法,其特征在于,包括:
获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素;
根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象;所述数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息;
遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句;
将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
2.根据权利要求1所述的方法,其特征在于,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;所述拓扑信息包括所述数据元素的所有子节点数据元素对应的数据对象;
所述遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句,包括:
按照所述层级的顺序遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成具有自增标识字段和父节点标识字段的结构化查询语句。
3.根据权利要求2所述的方法,其特征在于,所述按照所述层级的顺序遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成具有自增标识字段和父节点标识字段的结构化查询语句,包括:
在遍历处于首层级的根节点数据对象时,获取自增标识的第一初始值和父节点标识的第二初始值;
确定所述根节点数据对象对应的结构化查询语句中的自增标识字段包括第一初始值的自增标识,以及确定父节点标识字段包括第二初始值的父节点标识。
4.根据权利要求2所述的方法,其特征在于,所述按照所述层级的顺序遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成具有自增标识字段和父节点标识字段的结构化查询语句,包括:
在遍历处于非首层级的子孙节点数据对象时,确定所述子孙节点数据对象对应的结构化查询语句中的自增标识字段包括的自增标识的值为:上一个遍历的数据对象的自增标识的值加1的结果,以及确定父节点标识字段包括的父节点标识的值为:所述子孙节点数据对象的父节点数据对象的自增标识的值。
5.根据权利要求3所述的方法,其特征在于,在将所述结构化查询语句分别发送至不同数据库执行时,所述获取自增标识的第一初始值,包括:
获取不同数据库中数据表各自执行结构化查询语句时的自增标识的当前的最大值;
将所有当前自增标识的当前的最大值中的最大值加一的结果作为所述第一初始值。
6.根据权利要求1所述的方法,其特征在于,所述根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象,包括:
根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成map形式的所述数据对象。
7.根据权利要求6所述的方法,其特征在于,所述拓扑关系包括:所述数据元素之间的层级关系,以及相邻层级下,所述数据元素之间的父子节点关系;
所述map形式的数据对象的键包括所述数据对象的名称,所述map形式的数据对象的值包括所述数据对象的子节点数据对象的数据内容。
8.根据权利要求1所述的方法,其特征在于,所述遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句,包括:
通过调用反射机制函数,获取所述数据对象的数据内容和拓扑信息;
根据所述数据对象的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述待存储数据的描述信息;
根据所述待存储数据的描述信息生成所述待存储数据对应的结构化查询语句;
将所述待存储数据对应的结构化查询语句发送至所述数据库执行,以对所述待存储数据的描述信息进行存储。
10.根据权利要求9所述的方法,其特征在于,所述待存储数据的描述信息存储在所述数据库的第一数据表中,所述第一数据表中用于存储所述待存储数据的描述信息中的数据标识字段、第一创建时间字段、第一修改时间字段、数据名称字段、启用状态字段、数据类别字段、删除状态字段、最大拓扑层级字段中的一种或多种;
所述待存储数据的数据元素存储在所述数据库的第二数据表中,所述第二数据表与所述待存储数据对应的第一数据表相互关联;
所述第二数据表中用于存储所述数据元素的元素标识字段、第二创建时间字段、第二修改时间字段、所述待存储数据在所述第一数据表中的标识的字段、父节点标识字段、显示排序号字段、风险等级字段、扫描范围字段、关联模型字段、元素类别字段中的一种或多种。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
响应于针对目标数据元素的查询请求,根据所述查询请求,在确定所述第一数据表中与目标待存储数据对应的启用状态字段为启用状态的情况下,从所述数据库中与所述第一数据表关联的第二数据表中获取所述目标数据元素的数据内容,所述目标待存储数据包含所述目标数据元素。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取针对目标数据元素的查询请求,所述查询请求包括目标语言环境的查询键;
根据所述查询请求包括目标语言环境的查询键,从所述数据库中获取所述目标语言环境下的目标数据元素的数据内容。
13.一种数据存储装置,其特征在于,包括:
获取模块,用于获取待存储数据;所述待存储数据包括具有拓扑关系的至少两个数据元素;
第一生成模块,用于根据所述数据元素的数据内容以及数据元素之间的拓扑关系,生成所述数据元素对应的数据对象;所述数据对象包括所述数据元素的数据内容以及与所述数据元素具有拓扑关系的其他数据元素的拓扑信息;
第二生成模块,用于遍历所述数据对象,并根据所述数据对象中的数据内容和拓扑信息,生成所述数据元素对应的结构化查询语句;
存储模块,用于将所述结构化查询语句发送至数据库执行,以对所述数据元素以及所述数据元素之间的拓扑关系进行存储。
14.一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1至12任一所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210062579.9A CN114490651A (zh) | 2022-01-19 | 2022-01-19 | 数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210062579.9A CN114490651A (zh) | 2022-01-19 | 2022-01-19 | 数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490651A true CN114490651A (zh) | 2022-05-13 |
Family
ID=81473428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210062579.9A Pending CN114490651A (zh) | 2022-01-19 | 2022-01-19 | 数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490651A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115374109A (zh) * | 2022-07-29 | 2022-11-22 | 华为技术有限公司 | 数据访问方法、装置、计算设备和系统 |
-
2022
- 2022-01-19 CN CN202210062579.9A patent/CN114490651A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115374109A (zh) * | 2022-07-29 | 2022-11-22 | 华为技术有限公司 | 数据访问方法、装置、计算设备和系统 |
CN115374109B (zh) * | 2022-07-29 | 2023-09-01 | 华为技术有限公司 | 数据访问方法、装置、计算设备和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324909B2 (en) | Omega names: name generation and derivation utilizing nested three or more attributes | |
CN109062952B (zh) | 一种数据查询方法、装置及电子设备 | |
CN110275884B (zh) | 数据存储方法及节点 | |
CN106599104B (zh) | 一种基于redis集群的海量数据关联方法 | |
TWI662426B (zh) | 分布式流式資料處理的方法和裝置 | |
CN111767143A (zh) | 交易数据处理方法、装置、设备及系统 | |
CN109684607B (zh) | Json数据解析方法、装置、计算机设备和存储介质 | |
CN106951231B (zh) | 一种计算机软件开发方法及装置 | |
CN104035754A (zh) | 一种基于xml的自定义代码生成方法及生成器 | |
US11775507B2 (en) | Methods and apparatuses for reading and updating data structures, and electronic devices | |
US11003635B2 (en) | Database scheme for storing generic data | |
WO2022083436A1 (zh) | 数据处理方法、装置、设备及可读存储介质 | |
CN111818175A (zh) | 企业服务总线配置文件生成方法、装置、设备和存储介质 | |
CN114116065A (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
CN115982416A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN114490651A (zh) | 数据存储方法及装置 | |
CN112395339B (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN112052157B (zh) | 测试报文的构造方法、装置及系统 | |
CN111078773B (zh) | 一种数据处理方法及装置 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN111475503A (zh) | 一种虚拟知识图谱构建方法及装置 | |
CN106407345B (zh) | 一种脏数据更新方法及装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN112491943A (zh) | 数据请求方法、装置、存储介质和电子设备 | |
CN115129787A (zh) | 一种维护区块链数据的方法、装置、电子设备和存储介质 |
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 |