基于移动端NoSQL数据库的索引创建方法及装置
技术领域
本申请涉及数据查询技术领域,特别涉及一种基于移动端NoSQL数据库的索引创建方法及装置、数据查询方法及装置、计算机设备、计算机可读存储介质。
背景技术
移动端的主流数据库是关系型数据库Sqlite,而相对于移动端较少的数据量以及较快的查询存储时间的需求来讲,更为简单、快速的NoSQL数据库(Not Only SQL,意即“不仅仅是SQL”。在现代的计算系统上,NoSQL主要用于服务端海量数据的存储)是一种更好的替代。但是NoSQL数据库是基于键值存储,只能用于极为简单的键值查询。为了实现NoSQL的关系查询,可以在应用端进行非常复杂的设计,但是这样不利于NoSQL数据库的更好的推广,还可以在NoSQL数据库内部建立索引机制,但是这样建立的索引均是与该NoSQL的具体实现强相关,无可移植性。
发明内容
有鉴于此,本申请提供了一种基于移动端NoSQL数据库的索引创建方法及装置、数据查询方法及装置、计算机设备、计算机可读存储介质,通过在NoSQL数据库外部建立索引来对NoSQL数据库进行关系查询,这样无需在应用端进行非常复杂的设计,与NoSQL的具体实现不相关,有利于NoSQL数据库的更好的推广,具有可移植性。依据上述索引创建方法创建的索引来从NoSQL数据库中查询数据,可以达到快速查询的目的。
为实现上述目的,本申请提供技术方案如下:
根据本申请的第一方面,提出了基于移动端NoSQL数据库的索引创建方法,包括:
根据NoSQL数据库中预存数据的属性设置索引信息;
根据相应属性的预存数据的类型,确定将与相应属性相对应的索引信息存入数值型索引存储结构或字符型索引存储结构中;
将NoSQL数据库的地址、数值型索引存储结构的地址和字符型索引存储结构的地址存储在NoSql连接池中。
根据本申请的第二方面,提出了基于移动端NoSQL数据库的索引创建装置,包括:
索引信息设置模块,用于根据NoSQL数据库中预存数据的属性设置索引信息;
存储模块,用于根据相应属性的预存数据的类型,确定将与相应属性相对应的索引信息存入数值型索引存储结构或字符型索引存储结构中;
NoSql连接池,用于存储NoSQL数据库的地址、数值型索引存储结构的地址和字符型索引存储结构的地址。
根据本申请的第三方面,提出了基于移动端NoSQL数据库的数据查询方法,包括:
接收查询条件;
根据所述查询条件从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息;
根据所述索引信息从NoSql连接池中获取NoSQL数据库的地址;
根据所述NoSQL数据库的地址,从相应的NoSQL数据库查找相应的数据。
根据本申请的第四方面,提出了基于移动端NoSQL数据库的数据查询装置,包括:
接收模块,用于接收查询条件;
索引信息查找模块,用于根据所述查询条件从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息;
地址获取模块,用于根据所述索引信息从NoSql连接池中获取NoSQL数据库的地址;
数据查找模块,用于根据所述NoSQL数据库的地址,从相应的NoSQL数据库查找相应的数据。
根据本申请的第五方面,提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述基于移动端NoSQL数据库的索引创建方法。
根据本申请的第六方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述基于移动端NoSQL数据库的索引创建方法的计算机程序。
根据本申请的第七方面,提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述基于移动端NoSQL数据库的数据查询方法。
根据本申请的第八方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述基于移动端NoSQL数据库的数据查询方法的计算机程序。
由以上技术方案可见,本申请通过NoSQL数据库中要预存数据的属性进行索引创建,是在NoSQL数据库外部建立索引来对NoSQL数据库进行关系查询,这样无需在应用端进行非常复杂的设计,与NoSQL的具体实现不相关,有利于NoSQL数据库的更好的推广,具有可移植性。依据上述索引创建方法创建的索引来从NoSQL数据库中查询数据,可以达到快速查询的目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一种基于移动端NoSQL数据库的索引创建方法流程图;
图2是本申请一种基于移动端NoSQL数据库的索引创建装置结构框图;
图3是本申请一种基于移动端NoSQL数据库的数据查询方法流程图;
图4是本申请一种基于移动端NoSQL数据库的数据查询装置结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行。
下面介绍本申请的具体技术方案。
传统的移动端NoSQL数据库,如realm、objectbox的索引建立和关系查询均是基于自己的数据库特定实现,不具备通用性。基于此,在本申请提供了一种基于移动端NoSQL数据库的索引创建方法,如图1所示,该方法包括:
步骤101:根据NoSQL数据库中预存数据的属性设置索引信息;
步骤102:根据相应属性的预存数据的类型,确定将与相应属性相对应的索引信息存入数值型索引存储结构或字符型索引存储结构中;
步骤103:将NoSQL数据库的地址、数值型索引存储结构的地址和字符型索引存储结构的地址存储在NoSql连接池中。
在本申请的一种实施方式中,本申请通过注解(Annotation)来设置索引信息,这样做的目的是方便应用层设置索引信息,对NoSQL数据库中的原有逻辑无侵入。
在本申请的一种实施方式中,针对数值型索引排序与字符型索引排序的规则不同(后者是字典序),本申请创建了双索引存储结构:数值型索引存储结构和字符型索引存储结构。在为NoSQL数据库创建索引时,需要分析其中的预存数据属于数值型还是字符型。比如,当预存数据为人的信息时,其数据属性可以是年龄、姓名、身高、体重等等。针对数据属性是年龄、身高、体重等,其数据类型属于数值型,针对数据属性是姓名时,其数据类型属于字符型。数值型索引存储结构和字符型索引存储结构需要分开存储。
在本申请的一种实施方式中,现有的NoSQL数据库中一般存在字符型索引排序,不存在数值型排序,因此,本申请会将与相应属性相对应的索引信息进行排序处理(此处所指的是数值型排序),获得排序处理后的索引信息,然后步骤102具体按照如下执行:将排序处理后的索引信息存入数值型索引存储结构或字符型索引存储结构中。其中对数值型索引进行排序处理的目的是防止类似“10”小于“2”的情况发生,也就是说不添加数值型排序,会根据字符型排序处理,此时会出现“10”小于“2”的情况。由于索引采用有序结构,使得OrderBy这样的复杂排序时间复杂度达到O(N)。整个索引创建方法无需侵入底层数据库实现以及应用层实现,使得本索引创建方法具有强大的可移植性。
在本申请的一种实施方式中,本申请通过NoSql连接池(Connection Pool)来管理多个NoSql实例,从而方便索引的存储。
基于同一申请构思,本申请还提供了一种基于移动端NoSQL数据库的索引创建装置,如下面的实施例所述。由于基于移动端NoSQL数据库的索引创建装置解决问题的原理与基于移动端NoSQL数据库的索引创建方法相似,因此基于移动端NoSQL数据库的索引创建装置的实施可以参见基于移动端NoSQL数据库的索引创建方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是本申请一种基于移动端NoSQL数据库的索引创建装置结构框图,如图2所示,包括:
索引信息设置模块201,用于根据NoSQL数据库中预存数据的属性设置索引信息;
存储模块202,用于根据相应属性的预存数据的类型,确定将与相应属性相对应的索引信息存入数值型索引存储结构或字符型索引存储结构中;
NoSql连接池203,用于存储NoSQL数据库的地址、数值型索引存储结构的地址和字符型索引存储结构的地址。
在本申请的一种实施方式中,所述存储模块202具体用于:将所述数值型索引存储结构和字符型索引存储结构分开存储。
在本申请的一种实施方式中,还包括:NoSQL比较器204,用于将与相应属性相对应的索引信息进行排序处理,获得排序处理后的索引信息;
所述存储模块202具体用于:
将排序处理后的索引信息存入数值型索引存储结构或字符型索引存储结构中。
基于上述索引创建方法,本申请还提出了基于移动端NoSQL数据库的数据查询方法,如图3所示,该方法包括:
步骤301:接收查询条件;
步骤302:根据所述查询条件从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息;
步骤303:根据所述索引信息从NoSql连接池中获取NoSQL数据库的地址;
步骤304:根据所述NoSQL数据库的地址,从相应的NoSQL数据库查找相应的数据。
在本申请的一种实施方式中,步骤302具体包括:
确定所述查询条件的属性和类型;
根据所述查询条件的属性和类型从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息。
本申请在执行数据查询时,采用Query Clause来提供关系型查询语句,使用户代码逻辑做到无缝移植。
基于同一申请构思,本申请实施例中还提供了一种基于移动端NoSQL数据库的索引创建装置,如下面的实施例所述。图4是本申请一种基于移动端NoSQL数据库的数据查询装置结构框图,如图4所示,该装置包括:
接收模块401,用于接收查询条件;
索引信息查找模块402,用于根据所述查询条件从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息;
地址获取模块403,用于根据所述索引信息从NoSql连接池中获取NoSQL数据库的地址;
数据查找模块404,用于根据所述NoSQL数据库的地址,从相应的NoSQL数据库查找相应的数据。
在本申请的一种实施方式中,所述索引信息查找模块402具体用于:
确定所述查询条件的属性和类型;
根据所述查询条件的属性和类型从数值型索引存储结构和/或字符型索引存储结构中查找到相应的索引信息。
本申请实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述基于移动端NoSQL数据库的索引创建方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述基于移动端NoSQL数据库的索引创建方法的计算机程序。
本申请实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述基于移动端NoSQL数据库的数据查询方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述基于移动端NoSQL数据库的数据查询方法的计算机程序。
综上所述,本申请通过NoSQL数据库中要预存数据的属性进行索引创建,是在NoSQL数据库外部建立索引来对NoSQL数据库进行关系查询,这样无需在应用端进行非常复杂的设计,有利于NoSQL数据库的更好的推广,与NoSQL的具体实现不相关,有利于NoSQL数据库的更好的推广,具有可移植性。该索引创建方法可以用于任何nosql数据库。使用本索引创建方法能够让移动端自由选择符合业务要求的nosql数据库,即使该数据库无自建索引,也可以实现关系查询,而无需修改上层业务。依据上述索引创建方法创建的索引来从NoSQL数据库中查询数据,可以达到快速查询的目的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。