CN115455050A - 一种分布式数据库及查询方法 - Google Patents
一种分布式数据库及查询方法 Download PDFInfo
- Publication number
- CN115455050A CN115455050A CN202211107974.0A CN202211107974A CN115455050A CN 115455050 A CN115455050 A CN 115455050A CN 202211107974 A CN202211107974 A CN 202211107974A CN 115455050 A CN115455050 A CN 115455050A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- information
- database
- data table
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库构建和查询领域技术领域,为文献数据库,具体涉及一种分布式数据库及查询方法;通过获取多个查询方式中对应的通信代价确定对应的查询策略,针对于确定后的查询策略获取对应的连接顺序查询数据表,基于此数据表获取对应的主数据库和子数据库中的数据,从而确定最终的查询结果。
Description
技术领域
本申请涉及数据库构建和查询领域技术领域,为文献数据库,具体涉及一种分布式数据库及查询方法。
背景技术
自从20世纪80年代以来,通过二十多年来的古籍数字化建设我国已经在古籍文献管理已经取得了实质性的进展,但在发展和实际使用的过程中依然存在着很多的问题,目前针对于古籍文献的管理主要基于本地数据库通过建立数据表格进行实现,但是针对于古籍文献的数量随着研究的进展越来越大,针对于本地的表格管理具有较大的成本问题。并且,在进行文献检索过程中,因为表格管理容易造成多并发任务下的检索压力大的问题导致检索过程缓慢且产生网络卡顿,使检索效率较低并且容易导致数据库的崩溃。
发明内容
为了解决以上的技术问题,本申请提供一种分布式数据库及查询方法,应用于古籍文献的分类检索,通过对于构建的表格进行转化为对应的数据结构,实现了检索效率提高以及多并发情况下的系统的鲁棒性。
为了达到上述目的,本申请实施例采用的技术方案如下:
第一方面,一种分布式数据库,应用于多个用户端,多个所述用户端通过注册的方式与所述数据库建立关系,所述数据库包括:数据分类模块,所述数据分类模块通过网关与多个所述用户端通信,所述数据分类模块用于将所述用户端发送的查询信息进行分类,得到待查询信息数据类型标签并发送至下层模块;数据解析模块,所述数据解析模块与所述数据分类模块连接,基于所述待查询信息数据类型标签确定对应的数据解析模块,所述数据解析模块包括第一数据解析模块和第二数据解析模块,所述第一数据解析模块和所述第二数据解析模块分别配置有第一数据查询方法和第二数据查询方法,所述第一数据查询方法、第二数据查询方法将所述查询信息标换为标准数据,并基于所述标准数据设置的查询算法获得连接顺序查询数据表;多个数据库服务器,所述数据库服务器内配置有多个主数据表以及与多个所述主数据表对应的多个从数据表,所述主数据表以及多个从数据表基于所述连接顺序查询数据表进行调取。
第一方面的第一种实现方式中,还包括与多个所述数据库服务器对应设置的多个数据从库服务器,所述数据库服务器与所述数据从库服务器之间通过binlog日志进行数据同步。
第一方面的第二种实现方式中,还包括与所述数据解析模块连接的缓存模块,所述缓存模块用于保存每次查询过程中的SQL语句以及对应的查询结果。
第一方面的第三种实现方式中,所述数据解析模块包括解析单元和数据库访问单元,所述解析单元用于获取连接顺序查询数据表,所述数据库访问单元基于所述连接顺序查询数据表调取对应的数据表。
第二方面,一种分布式数据库查询方法,其特征在于,应用于上述任一项的分布式数据库,包括:
获取所述用户端的查询信息,所述查询信息包括信息本体以及配置在所述信息本体上的信息标签,基于所述信息标签得到查询信息的信息分类,所述信息分类包括文字类别和图片类别;对所述文字类别信息、所述图片类别信息进行数据解析,得到连接顺序查询数据表;基于所述连接顺序查询数据表获取对应的主数据表以及对应的从数据表。
第二方面的第一种实现方式中,对所述图片类别信息进行数据解析,得到连接顺序查询数据表,包括:对所述图片类别信息进行图像解码,得到图像类别信息对应的图像矩阵;对所述图像矩阵进行特征提取得到特征向量;基于所述特征向量进行数据转化得到SQL语句,基于所述SQL语句得到连接顺序查询数据表。
第二方面的第二种实现方式中,对所述文字类别信息进行数据解析,得到连接顺序查询数据表,包括:获取所述文字类别信息的SQL语句,基于所述SQL语句进行解析得到连接顺序查询数据表。
结合第二方面的第一种实现方式或第二种实现方式中,在第三种实现方式中,基于所述SQL语句得到连接顺序查询数据表,包括:解析所述SQL语句中的表和字段;基于所述表和字段获取连接的表和连接字段;基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略;基于所述查询策略依次执行所述查询策略中的SQL语句得到对应的连接顺序查询数据表。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略,包括:对所述连接的表和连接字段建立多个查询关系;基于叶子节点和非叶子节点的编码规则对多个所述查询关系进行编码,得到多个查询连接树结构;获取多个所述查询连接树的查询代价;比较多个所述查询代价获取对应的查询代价最小的查询关系,基于所述查询关系得到查询策略;获取多个所述查询连接树的查询代价,包括:获取多个所述查询连接树的通信代价估算值以及I/O代价值;所述通信代价的获取通过以下公式进行获得:C网络=C0+R*X,其中R为传输率,单位为秒/比特,X为数据传输量,单位是比特;C0为通信网络站点间通信初始化一次所花费的时间由通信系统决定,其值近似为一个常数,单位是秒。
结合第二方面的第四种实现方式中,在第二方面的第五种实现方式中,在所述查询连接数结构上的所述叶子节点上配置有数组变量S[i],其中i为叶节点数量。
第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求上述任一项所述的分布式数据库查询方法。
本申请实施例提供的技术方案中,通过获取多个查询方式中对应的通信代价确定对应的查询策略,针对于确定后的查询策略获取对应的连接顺序查询数据表,基于此数据表获取对应的主数据库和子数据库中的数据,从而确定最终的查询结果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图中的方法、系统和/或程序将根据示例性实施例进一步描述。这些示例性实施例将参照图纸进行详细描述。这些示例性实施例是非限制的示例性实施例,其中示例数字在附图的各个视图中代表相似的机构。
图1是本申请实施例提供的分布式数据库的结构示意图。
图2是本申请的一些实施例所示的分布式数据库查询方法的流程图。
图3是根据本申请实施例提供的分布式数据库查询方法装置方框示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
在下面的详细描述中,通过实例阐述了许多具体细节,以便提供对相关指导的全面了解。然而,对于本领域的技术人员来说,显然可以在没有这些细节的情况下实施本申请。在其他情况下,公知的方法、程序、系统、组成和/或电路已经在一个相对较高水平上被描述,没有细节,以避免不必要的模糊本申请的方面。
本申请中使用流程图说明根据本申请的实施例的系统所执行的执行过程。应当明确理解的是,流程图的执行过程可以不按顺序执行。相反,这些执行过程可以以相反的顺序或同时执行。另外,可以将至少一个其他执行过程添加到流程图。一个或多个执行过程可以从流程图中删除。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
(1)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
(2)基于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
(3)分布式数据库,分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
本申请实施例提供的技术方案,主要的应用场景为针对于古籍文献构建对应的分布式数据库以及基于分布式数据库进行数据查询。在现有技术中,针对于古籍文献的存储方式主要基于本地化服务器中的整体数据库,针对于整体数据库的构建方式基于古籍文献的分类表格存储至整体数据库中,通过构建检索目录以及对应的编码,通过编码寻找对应目录下的对应文献。此种方式的构建较为简单,并且通过编码查询具有较高的准确性,且查询速度较快。但是针对于本地服务器的整体数据库具有的问题为,其存储空间具有要求,针对于后续补充的文献资料需要配置较高冗余的存储空间。并且,针对于多并发的检索条件下,因为整体数据库的单线检索,容易导致在较多检索数据量的情况下的检索时间成本较高,并且容易因为上传数据量以及下载数据量的突发导致系统的崩溃。
而针对于此背景,提供一种分布式数据库,实现对于高并发以及高检索任务下的古籍文献的检索。
基于以上的技术背景,本申请实施例提供一种分布式数据库,应用于多个用户端,其中多个用户端通过注册方式与数据库建立关系,其中在本实施例中,数据库包括数据分类模块,在本实施例中数据分类通过网关与多个所述用户端通信,所述数据分类模块用于将所述用户端发送的查询信息进行分类,得到待查询信息数据类型标签并发送至下层模块。在本实施例中,因为古籍文献检索的输入的信息包括文字信息以及图片信息,而针对于文字信息以及图片信息因为数据结构和类型不同,所以在数据库中进行查询的逻辑不同,所以在进行检索之前需要对待查询信息的数据类型进行确定,所以针对于查询的前提为对于数据分类进行确定。在本实施例中,针对于数据分类模块通过配置在用户端的查询页面中的查询板块进行确定,即在用户端的查询界面中包括文字输入模块和图片输入模块,在本实施例中不再进行描述。
数据解析模块,在本实施例中,数据解析模块与所述数据分类模块连接,基于所述待查询信息数据类型标签确定对应的数据解析模块,所述数据解析模块包括第一数据解析模块和第二数据解析模块,所述第一数据解析模块和所述第二数据解析模块分别配置有第一数据查询方法和第二数据查询方法,所述第一数据查询方法、第二数据查询方法将所述查询信息标换为标准数据,并基于所述标准数据设置的查询算法获得连接顺序查询数据表。在本实施例中,因为数据包括文字数据以及图片数据,所以针对于两种数据的处理逻辑不通,所以针对于两种数据配置有不同的数据解析模块,其中在数据解析模块中配置有查询方法,通过查询方法可以通过最优查询方式得到对应连接顺序查询数据表,通过构建连接顺序查询数据表获取对应的查询数据。
多个数据库服务器,在本实施例中任意一个数据库服务器内配置有多个主数据表以及与多个所述主数据表对应的多个从数据表,所述主数据表以及多个从数据表基于所述连接顺序查询数据表进行调取。在本实施例中,与多个所述数据库服务器对应设置的多个数据从库服务器,所述数据库服务器与所述数据从库服务器之间通过binlog日志进行数据同步。
并且,在本实施例中为了实现对于用户端历史操作数据的保存还设置有与所述数据解析模块连接的缓存模块,所述缓存模块用于保存每次查询过程中的SQL语句以及对应的查询结果。
在本实施例中,所述数据解析模块包括解析单元和数据库访问单元,所述解析单元用于获取连接顺序查询数据表,所述数据库访问单元基于所述连接顺序查询数据表调取对应的数据表。
在本实施例中,数据层解析程序包含了多连接查询方法,实现对多连接查询的优化,同时连接查询的优化对上层用户端业务层面的透明,从而简化查询逻辑。通过增加数据解析模块实现了无侵入地引入连接查询方法,实现业务逻辑与数据库连接查询优化的解耦,提高系统的后期的可维护性。当需要修改连接查询方法时,只需要修改数据层解析程序代码,不需要修改业务逻辑代码,实现连接查询优化算法的修改对上层的业务逻辑层透明化。
当进行查询时,只需要传入多连接查询的SQL语句,具体为数据解析模块对SQL语句进行解析,得到SQL语句中的数据表以及连接字段等信息。然后根据解析得到的数据表以及连接字段,执行多连接查询方法,获取最佳的连接查询顺序,生成优化后的连接查询策略,原本的SQL语句解析优化得到的查询策略通常拆解成多个SQL语句。解析模块依次执行这些SQL语句,保证按照连接查询方法得到的连接顺序查询数据表。
在本实施例中,针对于数据解析模块包含上层的SQL解析优化代码和下层的Sharding-JDBC数据库访问层,Shading-JDBC屏蔽了底层数据库集群复杂的分库分表细节,对于上层的业务解析程序,只需面向逻辑表进行SQL编程,而无需关注底层复杂的分库分表逻辑和众多的数据库节点,实现上层SQL解析程序对分库分表无感知和透明化,从而简化SQL解析优化逻辑代码。其中,分库分表的配置是从配置中心动态获取,当OLAP数据库集群中添加或者减少数据库节点,只需要在配置中心修改分库分表的配置,就能不重启数据层解析程序,动态修改数据库相关配置。
在本实施例中本系统通过Sharding-JDBC和数据库主从复制机制提高数据库集群可用性。首先,通过MySQL数据库的binlog日志,实现数据库主从复制,构建具有高可用性的数据库集群。然后,配置Sharding-JDBC,将各个数据库节点的地址、用户名、密码、数据库名、数据表名以及各个数据节点之间的主从关系写入配置文件中。当数据库执行SQL语句时,Sharding-JDBC会自动按照一定的负载均衡策略将SQL语句发送给响应的主库和从库,避免高并发量时,单个主库查询压力过大,查询速度慢的问题。
在本实施例中,引入Redis集中式缓存,实现多个数据层解析程序之间缓存共享和参数数据共享。例如,多连接查询优化算法中的遗传算法如果在线迭代,一些参数需要不断迭代修改,将这些参数放入Redis缓存,实现多个数据层解析程序共享。当遗传算法的参数发生修改,只需要修改Redis中的参数副本,数据层机械程序会自动从Redis中同步最新的参数值,实现不重启,动态改变算法参数。同时,Redis集群实现数据层程序之间共用缓存,一个数据层解析程序执行SQL语句,可以获取其他数据层解析程序上一次实行的SQL语句的程序结果,减少数据库查询次数,提高系统整体响应速度。
在本实施例中,针对于数据库表单的设置基于古籍文献的特点进行设置,可参阅表1和表2:
表1.简牍账簿史料数据库标签代码设计表
表2.简牍出版物来源编码表
表3.简牍账簿史料数据库标签代码设计表示例
参阅表1~3,针对于古籍文献的特点建立对应的表格关系,实现对于古籍文献的分类检索,具体为区分传世文献和出土文献。出土文献以“简牍”或“墓葬”为标识;传世文献区分经、史、子、集;出土文献区分出土批次,如里耶秦简、马王堆汉墓简牍、走马楼三国吴简等。
并且从古籍文献,包括传世文献和出土文献中查找经济数据,具体为识别会计账簿,如总账/明细账、收入账/支出账等(详见附表1)。例:文本中出现“右”、“合”、“计”等标识为总账;文本中有“其”为明细账;文本中有“入”“收”等标识为收入账;文本中有“出”“付”“给”“支”等为支出账;文本中有“余”等为结余账。识别物价、利率及人口数量等数据。文本中有“直”“市”等为物价数据;文本中有“贷”、“还”等为利率数据;文本中有“男”“女”“老”“户”“妻”“口”“弟”“父”“母”等为人口数据。以及识别财政及税收数据。文本中出现“贡”“赋”“薪”等为财政及税收数据。
而针对于以上结果的实现通过对在数据解析模块实现对应编码字段的获取,并调取数据库中的数据信息。
在本实施例中,针对多连接查询,采用垂直分库和水平分表的分库分表策略,对每个数据表,进行水平切分,使每个数据表中的记录数不超过500万。同时,不同的数据表又存放在不同的数据库服务器中,用于保证单个数据库服务器上的数据量不会过大,导致磁盘容量不足以及磁盘IO等硬件性能出现瓶颈。并且通过binlog日志实现主库服务器与从库服务器之间的数据同步。从库数据库的数据表与主库保持一致。
并且,针对于本实施例中数据库服务器,针对于同一台数据库服务器上的数据表进行关联查询,可以避免网络传输代价,相对于跨服务器的关联查询,所需时间更短,因此,同一台数据库服务器中的数据表的选择对多连接查询的速度影响很大,关联查询频率高的数据表应该优先放在同一台数据库服务器上。由于初始化的数据表分布并不是最恰当的,需要在运行中统计得出最佳的数据表分布。这就需要在数据层解析程序添加数据表关联次数统计模块,记录数据表关联次数。每次关联查询,数据层解析程序都会向Redis中发送incr命令,使相应的代表关联表关联次数的键的值加一。数据表分布管理程序定期从Redis中获取数据表关联信息统计关联次数频繁的数据表,在深夜等服务器负载较小时,调整数据表在数据库服务器上的分布,从而达到优化数据表关联查询速度。
并且,在本实施例中数据库查询,有的数据表查询频率很高,有的数据表可能很少使用到,因此,将数据库服务器资源尽可能多的向查询频繁的数据表倾斜,可以进一步提高数据库查询的整体速度。因为通过垂直分库策略将数据表分布到不同的数据库服务器上,方便了针对不同数据表进行不同的资源分配。同时,一个表查询频率高,经常与该表关联查询的表的查询频率通常也很高,所以,关联查询频率高的数据表经过数据表分布优化后,尽可能的分布到了同一台数据库服务器上,因此,更加便于查询频率高的数据表分配更多服务器资源。
由于每一次关联连查询都会让Redis中对应的键值加一,因此可以通过Redis中的计数轻易地统计分析得到各个数据表的查询频率。从而得知那些数据表是热点数据表,对热点数据表所在的数据库服务器节点分配更多资源,以提高资源利用率和查询性能。
在本实施例中,针对于服务器的物理结构,包括存储器、处理器和通信单元。存储器、处理器以及通信单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器用于存储特定的信息和程序,通信单元用于将处理后的信息进行发送至对应的用户端。
本实施例将存储模块划分为两个存储区域,其中一个存储区为程序存储单元,另一个存储区域为数据存储单元。程序存储单元相当于固件区,该区域的读写权限设置为只读模式,其内存储的数据不可擦除和更改。而数据存储单元中的数据可以进行擦除或读写,当数据存储区域的容量已满时,新写入的数据会对最早期的历史数据进行覆盖。
其中,存储器可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Ele超声ric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP))、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图2,在本实施例中,针对于分布式数据库查询方法,其工作逻辑为通过基于古籍文献的特点建立对应的编码,基于编码建立对应的主数据报表以及与主数据表对应的多个从数据表,并通过设置有查询方法获取最优的查询策略,实现对于查询目标的获取。
针对于本实施例提供的工作逻辑提供一种分布式数据库查询方法,应用于分布式数据库,具体包括以下方法:
步骤S210.获取所述用户端的查询信息。
在本实施例中,所述查询信息包括信息本体以及配置在所述信息本体上的信息标签,基于所述信息标签得到查询信息的信息分类,所述信息分类包括文字类别和图片类别。
具体的,因为针对于用户端输入的数据以及后续数据库处理的数据可以为文字数据,还可以为图片数据,所以在进行处理之前需要对于数据的类型进行确定,而针对于数据类型的确定基于用户端配置的查询框中的赋予的信息标签进行确定,针对于信息标签确定对应的数据类别从而进行不同类别数据的处理。
步骤S220.对所述文字类别信息、所述图片类别信息进行数据解析,得到连接顺序查询数据表。
在本实施例中,此步骤主要是将输入的信息进行转换为对应的数据结构,并基于转换后的数据结构获得对应连接顺序查询数据表,其中连接顺序查询数据表用于确定的主数据表和对应的从数据表,并且基于主数据表和从数据表获取查询的最终信息。
具体的,此过程针对于不同的数据类型进行对应的处理,其中针对于图片类别数据的处理过程为:
对所述图片类别信息进行图像解码,得到图像类别信息对应的图像矩阵。对所述图像矩阵进行特征提取得到特征向量。基于所述特征向量进行数据转化得到SQL语句,基于所述SQL语句得到连接顺序查询数据表。
其中针对于图像解码为对于图片类别信息进行特征提取,可以使用深度学习模型里如VGG,ResNet,MobileNet,SqueezeNet等模型作为主干网络,然后使用不同的方法生成特征。可以直接将分类模型例如VGG模型的分类层前一层输出作为图像的特征。第二种方法是将模型的中间层的特征经过特殊的的方法池化如RMAC,GeM和降维从而得到。第三种方法是将模型在目标数据集上使用专门设计的损失函数进行前一训练。通过以上任一一种特征提取方法可以将图片类别信息中的特征进行提取,并将特征构建矩阵以及在矩阵中特征提取得到特征向量,并且通过sql进行打包得到能够被数据库识别的sql数据结构。
而针对于文字类别信息处理的过程为:
获取所述文字类别信息的SQL语句,基于所述SQL语句进行解析得到连接顺序查询数据表。
而针对于基于所述SQL语句得到连接顺序查询数据表,包括:解析所述SQL语句中的表和字段。基于所述表和字段获取连接的表和连接字段。基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略。基于所述查询策略依次执行所述查询策略中的SQL语句得到对应的连接顺序查询数据表。
在本实施例中,基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略,包括:对所述连接的表和连接字段建立多个查询关系;基于叶子节点和非叶子节点的编码规则对多个所述查询关系进行编码,得到多个查询连接树结构;获取多个所述查询连接树的查询代价;比较多个所述查询代价获取对应的查询代价最小的查询关系,基于所述查询关系得到查询策略;获取多个所述查询连接树的查询代价,包括:获取多个所述查询连接树的通信代价估算值以及I/O代价值;所述通信代价的获取通过以下公式进行获得:C网络=C0+R*X,其中R为传输率,单位为秒/比特,X为数据传输量,单位是比特;C0为通信网络站点间通信初始化一次所花费的时间由通信系统决定,其值近似为一个常数,单位是秒。
在本实施例中,针对于查询连接数结构上的所述叶子节点上配置有数组变量S[i],其中i为叶节点数量。
在本实施例中,针对于解码过程之前还需要对数据进行编码,通过编码将查询的信息转化为数学模型,针对于现有的编码方式主要包括以下几种,分别为:(1)二进制编码:应用较为广泛的编码方式,其由二进制0和1组成。但是二进制编码对精读要求较高,字符串过长或者过短都会影响搜索效率,而且不能直观的反应信息的结构特征。(2)实数编码:该编码方式有较高的精度能够较好地解决实际应用中的空间搜索问题,其由一定范围内的实数组成。(3)格雷编码:该编码方式是一种使用二进制数字表示的数列集合,在一组编码中,两个相邻格雷码之间,只有一位二进制数不同,格雷编码它有较好的局部搜索能力。(4)符号编码:符号编码是一种利用符号进行编码的方式其优点在于符号自身具有的特殊含义或背景知识。
但在本实施例提供的分布式数据库连接查询的特点,使用上述编码方式不适用且不能较好的解决分布式数据库连接查询问题。因此,对于分布式数据库查询优化问题的求解,本实施例采用连接查询树的形式对问题进行编码,通过不断遍历连接树上的叶子结点和非叶子节点,从而与实际查询顺序形成意义对应的关系。在使用查询查询树进行编码的过程中,常常将非叶子节点置为0,而将叶子结点用相应的符号或数字进行区分表示。在本实施例中,针对于此结构构建对应的查询关系为:第一查询关系:Query1=(M1∞M2∞M3∞M4∞M5∞M6)以及第二查询关系:Query2=(M1∞M2)∞(M2∞M3)∞(M3∞M4)∞(M4∞M5)∞(M5∞M6)。
按照叶子节点和非叶子节点的编码规则对Query编码,编码后的得到有关Query的连接树。针对上述连接树编码方案,通过对查询连接树进行各种变形和访问操作。按照树的后序遍历方式对树进行后序遍历,查询连接树和结果(1,2,0,3,0,4,0,5,0,6,0)与结果(1,2,0,3,0,4,5,0,0,6,0)形成对应关系,树形结构转化为线性结构存储在计算机中。
对上述连接树进行编码后,为了计算各个查询连接树的查询代价,但从连接查询编码方案中获取的信息还不能满足查询优化中所需的基本信息,因此,为了能利用获得最优输出结果,还需要额外对节点配置一些基本信息。
其中,在本实施例中在查询连接树的子节点上配上一个数组变量S[],数组下标i=1,2,3……,n(n从1开始,大小为查询连接表的数量,即叶节点数量),通过数组变量S[]能较好的存储节点基本信息,其中数组S[i]的每一个元素的值以数据库表为基本单位。
在本实施例中,针对于通信代价估算公式为:C网络=C0+R*X,其中R为传输率(传输速度的倒数),即单位数据传输的时间,单位为秒/比特(S/bit);X为数据传输量,代表传输的数据量,单位是比特(bit);C0为通信网络站点间通信初始化一次所花费的时间,一般有通信系统决定,其值近似为一个常数,单位是秒(S)。
步骤S230.基于所述连接顺序查询数据表获取对应的主数据表以及对应的从数据表。
在本实施例中,通过获取多个查询方式中对应的通信代价确定对应的查询策略,针对于确定后的查询策略获取对应的连接顺序查询数据表,基于此数据表获取对应的主数据库和子数据库中的数据,从而确定最终的查询结果。
本实施例提供的分布式数据库以及对应的分布式数据库查询方法,通过对于数据库的结构通过构建主库以及多个从库实现对于数据的保存和查找的对应性,并且通过对数据的处理并通过通信成本的获得实现最优的查询路径的实现。
并且,针对于古籍文献的使用场景,针对于处理的信息不仅包括文字信息还包括图片信息,通过对于两种信息的处理得到基于SQL对应的数据结构,通过获取对应的查询树以及对应的通信代价获得最优的查询方法,基于最优的查询方法获得最终的查询结果。
针对于此方法,还配置有一种虚拟装置为分布式数据库查询装置300,包括:信息分类模块310,基于所述信息标签得到查询信息的信息分类,所述信息分类包括文字类别和图片类别。数据解析模块320,用于对所述文字类别信息、所述图片类别信息进行数据解析,得到连接顺序查询数据表。处理模块330,基于所述连接顺序查询数据表获取对应的主数据表以及对应的从数据表。
需要理解的是,针对上述内容没有进行名词解释的技术术语,本领域技术人员可以根据上述所公开的内容进行前后推导毫无疑义地确定其所指代的含义在此均不作限定。
本领域技术人员可以根据上述已公开的内容毫无疑义对一些预设的、基准的、预定的、设定的以及偏好标签的技术特征/技术术语进行确定,例如阈值、阈值区间、阈值范围等。对于一些未作解释的技术特征术语,本领域技术人员完全能够基于前后文的逻辑关系进行合理地、毫无疑义地推导,从而清楚、完整地实施上述技术方案。未作解释的技术特征术语的前缀,例如“第一”、“第二”、“示例”、“目标”等,可以根据前后文进行毫无疑义地推导和确定。未作解释的技术特征术语的后缀,例如“集合”、“列表”等,也可以根据前后文进行毫无疑义地推导和确定。
本申请实施例公开的上述内容对于本领域技术人员而言是清楚完整的。应当理解,本领域技术人员基于上述公开的内容对未作解释的技术术语进行推导和分析的过程是基于本申请所记载的内容进行的,因此上述内容并不是对整体方案的创造性的评判。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可以对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定术语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同部分两次或多次提到的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的至少一个实施例中的某些特征、结构或特点可以进行适当的组合。
另外,本领域普通技术人员可以理解的是,本申请的各个方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可以被称为“单元”、“组件”或“系统”。此外,本申请的各方面可以表现为位于至少一个计算机可读介质中的计算机产品,所述产品包括计算机可读程序编码。
计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤缆线、RF、或类似介质、或任何上述介质的组合。
本申请各方面执行所需的计算机程序码可以用一种或多种程序语言的任意组合编写,包括面向对象程序设计,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET,Python等,或类似的常规程序编程语言,如"C"编程语言,Visual Basic,Fortran2003,Perl,COBOL 2002,PHP,ABAP,动态编程语言如Python,Ruby和Groovy或其它编程语言。所述程式设计编码可以完全在用户计算机上执行、或作为独立的软体包在用户计算机上执行、或部分在用户计算机上执行部分在远程计算机执行、或完全在远程计算机或服务器上执行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网络(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非申请专利范围中明确说明,本申请所述处理元件和序列的顺序、数位字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的申请专利范围并不仅限于披露的实施例,相反,申请专利范围旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件装置实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或行动装置上安装所描述的系统。
同样应当理解的是,为了简化本申请揭示的表述,从而帮助对至少一个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
Claims (10)
1.一种分布式数据库,应用于多个用户端,多个所述用户端通过注册的方式与所述数据库建立关系,其特征在于,所述数据库包括:
数据分类模块,所述数据分类模块通过网关与多个所述用户端通信,所述数据分类模块用于将所述用户端发送的查询信息进行分类,得到待查询信息数据类型标签并发送至下层模块;
数据解析模块,所述数据解析模块与所述数据分类模块连接,基于所述待查询信息数据类型标签确定对应的数据解析模块,所述数据解析模块包括第一数据解析模块和第二数据解析模块,所述第一数据解析模块和所述第二数据解析模块分别配置有第一数据查询方法和第二数据查询方法,所述第一数据查询方法、第二数据查询方法将所述查询信息标换为标准数据,并基于所述标准数据设置的查询算法获得连接顺序查询数据表;
多个数据库服务器,所述数据库服务器内配置有多个主数据表以及与多个所述主数据表对应的多个从数据表,所述主数据表以及多个从数据表基于所述连接顺序查询数据表进行调取。
2.根据权利要求1所述的分布式数据库,其特征在于,还包括与多个所述数据库服务器对应设置的多个数据从库服务器,所述数据库服务器与所述数据从库服务器之间通过binlog日志进行数据同步。
3.根据权利要求1所述的分布式数据库,其特征在于,还包括与所述数据解析模块连接的缓存模块,所述缓存模块用于保存每次查询过程中的SQL语句以及对应的查询结果。
4.根据权利要求1所述的分布式数据库,其特征在于,所述数据解析模块包括解析单元和数据库访问单元,所述解析单元用于获取连接顺序查询数据表,所述数据库访问单元基于所述连接顺序查询数据表调取对应的数据表。
5.一种分布式数据库查询方法,其特征在于,应用于所述权利要求1~4任一项所述的分布式数据库,包括:
获取所述用户端的查询信息,所述查询信息包括信息本体以及配置在所述信息本体上的信息标签,基于所述信息标签得到查询信息的信息分类,所述信息分类包括文字类别和图片类别;
对所述文字类别信息、所述图片类别信息进行数据解析,得到连接顺序查询数据表;
基于所述连接顺序查询数据表获取对应的主数据表以及对应的从数据表。
6.根据权利要求5所述的分布式数据库查询方法,其特征在于,对所述图片类别信息进行数据解析,得到连接顺序查询数据表,包括:
对所述图片类别信息进行图像解码,得到图像类别信息对应的图像矩阵;
对所述图像矩阵进行特征提取得到特征向量;
基于所述特征向量进行数据转化得到SQL语句,基于所述SQL语句得到连接顺序查询数据表。
7.根据权利要求5所述的分布式数据库查询方法,其特征在于,对所述文字类别信息进行数据解析,得到连接顺序查询数据表,包括:
获取所述文字类别信息的SQL语句,基于所述SQL语句进行解析得到连接顺序查询数据表。
8.根据权利要求6或7所述的分布式数据库查询方法,其特征在于,基于所述SQL语句得到连接顺序查询数据表,包括:
解析所述SQL语句中的表和字段;
基于所述表和字段获取连接的表和连接字段;
基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略;
基于所述查询策略依次执行所述查询策略中的SQL语句得到对应的连接顺序查询数据表。
9.根据权利要求8所述的分布式数据库查询方法,其特征在于,基于连接的表和连接字段调用查询方法获取最佳连接顺序得到查询策略,包括:
对所述连接的表和连接字段建立多个查询关系;
基于叶子节点和非叶子节点的编码规则对多个所述查询关系进行编码,得到多个查询连接树结构;
获取多个所述查询连接树的查询代价;
比较多个所述查询代价获取对应的查询代价最小的查询关系,基于所述查询关系得到查询策略;
获取多个所述查询连接树的查询代价,包括:
获取多个所述查询连接树的通信代价估算值以及I/O代价值;
所述通信代价的获取通过以下公式进行获得:
C网络=C0+R*X,其中R为传输率,单位为秒/比特,X为数据传输量,单位是比特;C0为通信网络站点间通信初始化一次所花费的时间由通信系统决定,其值近似为一个常数,单位是秒。
10.根据权利要求9所述的分布式数据库查询方法,其特征在于,在所述查询连接数结构上的所述叶子节点上配置有数组变量S[i],其中i为叶节点数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211107974.0A CN115455050A (zh) | 2022-09-13 | 2022-09-13 | 一种分布式数据库及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211107974.0A CN115455050A (zh) | 2022-09-13 | 2022-09-13 | 一种分布式数据库及查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115455050A true CN115455050A (zh) | 2022-12-09 |
Family
ID=84302223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211107974.0A Pending CN115455050A (zh) | 2022-09-13 | 2022-09-13 | 一种分布式数据库及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115455050A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303833A (zh) * | 2023-05-18 | 2023-06-23 | 联通沃音乐文化有限公司 | 一种基于olap的向量化数据混合存储方法 |
-
2022
- 2022-09-13 CN CN202211107974.0A patent/CN115455050A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303833A (zh) * | 2023-05-18 | 2023-06-23 | 联通沃音乐文化有限公司 | 一种基于olap的向量化数据混合存储方法 |
CN116303833B (zh) * | 2023-05-18 | 2023-07-21 | 联通沃音乐文化有限公司 | 一种基于olap的向量化数据混合存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816100B2 (en) | Dynamically materialized views for sheets based data | |
CN107247808B (zh) | 一种分布式NewSQL数据库系统及图片数据查询方法 | |
US11086894B1 (en) | Dynamically updated data sheets using row links | |
Karnitis et al. | Migration of relational database to document-oriented database: structure denormalization and data transformation | |
CN103177056B (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN103177055B (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN103177058B (zh) | 存储为行存储和列存储二者的混合数据库表 | |
CN113434623B (zh) | 一种基于多源异构空间规划数据的融合方法 | |
CN108874971A (zh) | 一种应用于海量标签化实体数据存储的工具和方法 | |
EP1128277A2 (en) | Data processing method and system, program for realizing the method, and computer readable storage medium storing the program | |
CN107329987A (zh) | 一种基于mongo数据库的搜索系统 | |
CN111831629B (zh) | 一种数据处理方法及装置 | |
CN105793843A (zh) | 用于oltp和分析工作量的用于内存数据库的组合行和列式存储 | |
US20140046928A1 (en) | Query plans with parameter markers in place of object identifiers | |
CN110555035A (zh) | 一种对查询语句进行优化的方法、装置 | |
US20230418824A1 (en) | Workload-aware column inprints | |
CN115455050A (zh) | 一种分布式数据库及查询方法 | |
CN115827862A (zh) | 一种多元费用凭证数据关联采集方法 | |
CN110647577A (zh) | 数据立方体的分区方法、装置、计算机设备及存储介质 | |
Martin | Advanced database techniques | |
WO2019010277A2 (en) | HIGHLY ATOMIZED INTERVIEWABLE AND SEGMENTED DATA SYSTEMS (HASIDS) | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
Ragavan et al. | A Novel Big Data Storage Reduction Model for Drill Down Search. | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
US20170031982A1 (en) | Maintaining Performance in the Presence of Insertions, Deletions, and Streaming Queries |
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 |