一种数据查询方法及装置与流程

文档序号:13012517阅读:175来源:国知局
技术领域
本发明涉及数据存储及查询领域,具体涉及一种数据查询方法及装置。


背景技术:

目前,用户所需的数据可以存储在服务器端,用户需要查看数据时可
以向服务器提供查询条件,服务器根据查询条件来查找用户所需的数据,
并向用户反馈。
例如服务器中存有多个歌曲数据,这些歌曲可能属于不同的风格,并
且各个歌曲可能必须在特定的平台(手机、电脑等)上播放,那么这些数
据就具有多种属性,如风格属性、平台属性等。当用户想要查询具有某些
特定属性的数据时,会提供特定的查询条件,系统将根据查询条件逐一判
断各个数据的各种属性,对于复杂的查询条件,将进行循环判断,例如用
户提供的查询条件为在手机平台播放的,且为流行风格的歌曲,服务器首
先在所有歌曲中筛选出属于手机平台上的歌曲,然后在第一次的筛选结果
中再次筛选属于流行风格的歌曲,即对所有数据进行多次循环筛选,查询
条件越复杂循环筛选的次数越多。由此可见,现有的数据查询方式,数据
查询操作的运算量较大,浪费处理器资源。


技术实现要素:

因此,本发明实施例要解决的是现有的数据查询方式运算量较大的技

术问题。
有鉴于此,本发明实施例提供一种数据查询方法,包括如下步骤:获
取查询指令,所述查询指令中包括至少两个目标数据属性以及所述目标数
据属性之间的关系;根据所述目标数据属性和所述目标数据属性之间的关
系,在预存的多个数据信息组合中获取目标数据信息组合以及所述目标数
据信息组合之间的关系,其中,每个数据信息组合所存储的数据信息对应
的数据具有相同的属性;根据所述目标数据信息组合和所述目标数据信息
组合之间的关系,获取目标数据信息;根据所述目标数据信息获取目标数
据。
优选地,所述数据信息为数据的索引信息。
优选地,所述数据信息组合为bitset对象,bitset对象的名称为数据
属性。
优选地,所述根据所述目标数据信息组合和所述目标数据信息组合之
间的关系,获取目标数据信息,包括:根据所述目标数据信息的关系确定
目标数据信息间的运算类型,所述运算类型包括和运算、与运算;根据确
定的运算类型对所述目标数据信息进行运算;根据运算的结果获取目标数
据信息。
相应地,本发明实施例还提供一种数据查询装置,包括:查询指令获
取单元,获取查询指令,所述查询指令中包括至少两个目标数据属性以及
所述目标数据属性之间的关系;确定单元,用于根据所述目标数据属性和
所述目标数据属性之间的关系,在预存的多个数据信息组合中获取目标数
据信息组合以及所述目标数据信息组合之间的关系,其中,每个数据信息

组合所存储的数据信息对应的数据具有相同的属性;提取单元,用于根据
所述目标数据信息组合和所述目标数据信息组合之间的关系,获取目标数
据信息;目标数据获取单元,用于根据所述目标数据信息获取目标数据。
优选地,所述数据信息为数据的索引信息。
优选地,所述数据信息组合为bitset对象,bitset对象的名称为数据
属性。
优选地所述提取单元包括:运算关系确定单元,用于根据目标数据信
息组合之间的关系确定目标数据信息组合间的运算类型,所述运算类型包
括和运算、与运算;运算单元,用于根据确定的运算类型对目标数据信息
组合进行运算;数据信息获取单元,用于根据运算的结果获取目标数据信
息。
优选地,所述目标数据获取单元,包括:存储位置确定单元,用于根
据提取的数据索引信息确定数据的存储位置;目标数据获取子单元,用于
在确定的存储位置获取数据。
本发明使用数据信息组合的方式存储数据,在查询数据时,可以根据
查询指令中的内容在预先建立的数据信息组合中确定与查询指令相对应的
数据信息组合,然后根据多个数据信息组合的关系提取存储的内容,即可
确定符合查询指令的数据,相比于现有的循环判断的方式反复筛选所有数
据,本方案可以大幅降低数据查询操作的数据运算量,节约处理器资源。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下
面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,

显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普
通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获
得其他的附图。
图1为本发明实施例提供的数据查询方法的流程图;
图2为本发明实施例提供的数据查询装置的结构示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,
所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得
的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼
此之间未构成冲突就可以相互结合。
本发明实施例提供一种数据查询方法,该方法可以由用于存储数据的
服务器执行,如图1所示,该方法包括如下步骤:
S1,获取查询指令,所述查询指令中包括至少两个目标数据属性以及
所述目标数据属性之间的关系。假设一服务器的数据库中存储有多个数据,
每个数据都可以具有多个预定的类型属性。以音乐数据为例,音乐数据可
以有诸如风格、演唱者、播放平台等多种类型属性,用户可以对音乐数据
进行筛选查询。例如用户可以提供一查询指令,用于查询属于流行风格且
可以在手机平台上播放的音乐,则该查询指令中包括“流行”和“手机平
台”这两个属性信息,并且两个属性信息是“与”的关系。本领域技术人

员可以理解,实际情况中还可以有更多的属性信息,并且属性信息之间可
以有更复杂的逻辑关系。
S2,根据查询指令在预存的多个数据信息组合中获取目标数据信息组
合以及所述目标数据信息组合之间的关系,其中,每个数据信息组合所存
储的数据信息对应的数据具有相同的属性。
假设服务器中存储的数据有n种属性,则可建立N个数据信息组合来
存储各个数据(N的取值取决于n种属性中的具体选项数量)的信息,数据
的信息可以是标识信息、地址信息、索引信息等。仍以音频数据为例,假
设共有5个音频数据,5个数据的数据信息分别为id1~id5,这5个数据有
2种属性:风格属性和平台属性,假设风格属性有“流行”和“摇滚”两个
选项,平台属性有“手机平台”和“web平台”两个选项。对于平台属性,
假设id1、id2对应的数据的平台属性为“手机平台”,id3、id4、id5对应
的数据的平台属性为“web平台”;对于风格属性,假设id1、id3对应的数
据的风格属性为“流行”,id2、id4、id5对应的数据的风格属性为“摇滚”。
那么预先可以建立4个数据信息组合bs1~bs4,其中bs1用于存储id1、
id2,bs2用于存储id3、id4、id5,bs3用于存储id1、id3,bs4用于存储
id2、id4、id5。预先建立的数据信息组合具有名称信息,且名称信息与上
述属性相对应,即bs1的名称为“手机平台”、bs2的名称为“web平台”、
bs3的名称为“流行”、bs4的名称为“摇滚”。
在获取到步骤S1中的查询指令后,即可确定数据信息组合bs1和bs3,
且可以确定bs1和bs3是“并且”的关系。
S3,根据目标数据信息组合和所述目标数据信息组合之间的关系,获
取目标数据信息。根据上例可知,则提取既存储在bs1中又存储在bs3中
的数据信息,即id1(如果bs1和bs3是“或”的关系,则应当提取id1、
id2、id3)。
S4,根据所述目标数据信息获取目标数据,即根据id1查找id1对应
的音频数据。
上述方案使用数据信息组合的方式存储数据,在查询数据时,可以根
据查询指令中的内容在预先建立的数据信息组合中确定与查询指令相对应
的数据信息组合,然后根据多个数据信息组合的关系提取存储的内容,即
可确定符合查询指令的数据,相比于现有的循环判断的方式反复筛选所有
数据,本方案可以大幅降低数据查询操作的数据运算量,节约处理器资源。
本发明实施例优选采用bitset对象作为数据信息组合,即采用Java
的Bitset存储方式来存储数据。本领域技术人员应当理解,Java中有一
BitSet类,用于创建一个特殊类型的数组来保存位值,该BitSet中数组
的大小可以根据需要增加,这使得它类似于比特的向量,这是一个传统类,
它已被完全重新设计在Java2,1.4版本。下面通过一个简单举例来说明本
发明所采用的Bitset存储方式:
计算机中一个字节(byte)占8位(bit),java中数据至少按字节存
储,比如一个int占4个字节,如果遇到大的数据量,这样必然会需要很
大存储空间和内存,而如何减少数据占用存储空间和内存可以用算法解决,
java.util.BitSet就提供了这样的算法。比如有多个数字需要存储
source=[3,5,6,9],用int就需要4*4个字节,而java.util.BitSet可以

存true/false,那么如果用java.util.BitSet,占用的字节量则会少很多,
其原理是:先找出数据中最大值maxvalue=9,声明一个数组BitSetbs,它
的size是maxvalue+1=10,遍历数据source,bs[source[i]]设置成true,
最后的值是:
bs[0,0,0,1,0,1,1,0,0,1],(0为false;1为true),
即3,5,6,9;
这样一个本来要int型需要占4字节共32位的数字现在只用了1位,
与普通的存储方式的比例为32:1,上述优选方案可以减少数据信息所占用
的存储空间。
对于数据量很小的数据,数据信息可以是数据本身的内容;而对于数
据量很大的数据,如视频数据、音频数据等,数据信息优选为数据的索引
信息,本方案优选使用数据的索引信息,由此在查询时可以大幅减少内存
的使用量。
作为一个优选的实施方式,上述步骤S3可以包括:
S31,根据目标数据信息组合之间的关系确定目标数据信息组合间的运
算类型,所述运算类型通常包括“和运算”、“与运算”,除此之外还可以包
括“非运算”等其他逻辑运算。根据查询指令可以确定多个bitset对象间
的复杂逻辑关系,例如查询指令所指的是风格为流行或摇滚,平台为手机
平台的音乐数据,由此可以确定各个bitset对象的运算关系为bs1and(bs3
orbs4),
S32,根据确定的运算类型对目标数据信息组合进行运算。由于java
中支持数据信息组合之间的逻辑运算,由此即可直接根据步骤S31中确定

的关系式对数据信息组合进行计算,得到符合条件的数据信息为id1、id2。
S33,根据运算的结果获取目标数据信息。
上述优选方案通过对数据信息组合进行逻辑运算来确定符合查询条件
的数据信息,由此可进一步提高计算效率,节约处理器资源。
对于数据信息是索引信息的情况,上述步骤S4包括:
S41,根据提取的索引信息确定数据的存储位置;
S42,在确定的存储位置获取数据。
上述优选方案只访问符合查询条件的数据的实际内容,避免加载其他
数据的实际内容,由此可减少内存的使用量。
本发明的另一个实施例还提供一种数据查询装置,如图2所示,该装
置包括:
查询指令获取单元21,获取查询指令,所述查询指令中包括至少两个
目标数据属性以及所述目标数据属性之间的关系;
确定单元22,用于根据所述目标数据属性和所述目标数据属性之间的
关系,在预存的多个数据信息组合中获取目标数据信息组合以及所述目标
数据信息组合之间的关系,其中,每个数据信息组合所存储的数据信息对
应的数据具有相同的属性;
提取单元23,用于根据所述目标数据信息组合和所述目标数据信息组
合之间的关系,获取目标数据信息;
目标数据获取单元24,用于根据所述目标数据信息获取目标数据。
上述方案使用数据信息组合的方式存储数据,在查询数据时,可以根
据查询指令中的内容在预先建立的数据信息组合中确定与查询指令相对应

的数据信息组合,然后根据多个数据信息组合的关系提取存储的内容,即
可确定符合查询指令的数据,相比于现有的循环判断的方式反复筛选所有
数据,本方案可以大幅降低数据查询操作的数据运算量,节约处理器资源。
优选地,所述提取单元23包括:
运算关系确定单元,用于根据目标数据信息组合之间的关系确定目标
数据信息组合间的运算类型,所述运算类型包括和运算、与运算;
运算单元,用于根据确定的运算类型对目标数据信息组合进行运算;
数据信息获取单元,用于根据运算的结果获取目标数据信息。
上述优选方案通过对数据信息组合进行逻辑运算来确定符合查询条件
的数据信息,由此可进一步提高计算效率,节约处理器资源。
优选地,所述目标数据获取单元24包括:
存储位置确定单元,用于根据提取的索引信息确定数据的存储位置;
目标数据获取子单元,用于在确定的存储位置获取数据。
上述优选方案只访问符合查询条件的数据的实际内容,避免加载其他
数据的实际内容,由此可减少内存的使用量。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方
式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可
以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予
以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保
护范围之中。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1