CN110019336B - 一种查询数据的方法和装置 - Google Patents

一种查询数据的方法和装置 Download PDF

Info

Publication number
CN110019336B
CN110019336B CN201711032666.5A CN201711032666A CN110019336B CN 110019336 B CN110019336 B CN 110019336B CN 201711032666 A CN201711032666 A CN 201711032666A CN 110019336 B CN110019336 B CN 110019336B
Authority
CN
China
Prior art keywords
query
field
keyword
primary key
data
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.)
Active
Application number
CN201711032666.5A
Other languages
English (en)
Other versions
CN110019336A (zh
Inventor
白杨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201711032666.5A priority Critical patent/CN110019336B/zh
Publication of CN110019336A publication Critical patent/CN110019336A/zh
Application granted granted Critical
Publication of CN110019336B publication Critical patent/CN110019336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种查询数据的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;获取所述满足查询条件的主键对应的数据作为查询结果。该实施方式能够不需要补齐主键的字段即可实现查询功能,从而提高数据库的存储和查询效率。

Description

一种查询数据的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种查询数据的方法和装置。
背景技术
数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。为了便于查询数据库中的特定数据,通常会为每一条数据设置一个主键;主键指的是数据表中的一个字段或多个字段的组合,其值能唯一地标识数据表中的每一行,通过检索主键可以查询到相应数据,从而对数据库中的数据进行获取、删除、修改等操作。
现有常见的构成主键的方式,是将各条数据的主键中同一字段的长度补齐至相同长度,通常为在该字段的实际内容前补“0”,以便可以通过搜索指定区间中的关键字的方式来批量查询数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的主键中,需要将同一字段的长度补齐至相同长度。这种方式不够灵活,只能估计字段的最大位数来确定补齐的长度,一旦该字段的位数超出补齐长度,则需要重新设计主键并重新存储数据;如果直接设计一个较大的字段长度,则用于补齐的“0”等无效数据会占用大量的空间,影响存储和查询效率。
发明内容
有鉴于此,本发明实施例提供一种查询数据的方法和装置,能够不需要补齐主键的字段即可实现查询功能,从而提高数据库的存储和查询效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种查询数据的方法,包括:
构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
获取所述满足查询条件的主键对应的数据作为查询结果。
可选的,构建数据的主键,包括:
获取数据的查询字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
获取拼接得到的字符串作为所述数据的主键。
可选的,所述构建数据的主键,包括:
获取数据的查询字段和其他字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后;
获取拼接得到的字符串作为所述数据的主键。
可选的,在所述长度字段和所述查询字段之间设置有分隔符。
可选的,所述查询关键字包括起始关键字和终止关键字;
通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
可选的,所述查询关键字包括起始关键字和终止关键字;
构建数据的主键,还包括:
在长度字段首位设置定位标识;其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;
通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
获取查询关键字中的定位标识;
在所述主键中检索所述查询关键字的定位标识;
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串;
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种查询数据的装置,包括:
主键构建模块,用于构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
查询模块,用于当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
结果获取模块,用于获取所述满足查询条件的主键对应的数据作为查询结果。
可选的,所述主键构建模块还用于:
获取数据的查询字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
获取拼接得到的字符串作为所述数据的主键。
可选的,所述主键构建模块还用于:
获取数据的查询字段和其他字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后;
获取拼接得到的字符串作为所述数据的主键。
可选的,在所述长度字段和所述查询字段之间设置有分隔符。
可选的,所述查询关键字包括起始关键字和终止关键字;
所述查询模块还用于:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
可选的,所述查询关键字包括起始关键字和终止关键字;
所述主键构建模块还用于:
在长度字段首位设置定位标识;其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;
所述查询模块还用于:
获取查询关键字中的定位标识;
在所述主键中检索所述查询关键字的定位标识;
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串;
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种查询数据的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器至少实现:
构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
获取所述满足查询条件的主键对应的数据作为查询结果。
为实现上述目的,根据本发明实施例的又一个方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时至少实现:
构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
获取所述满足查询条件的主键对应的数据作为查询结果。
上述发明中的一个实施例具有如下优点或有益效果:因为采用设置包括长度字段和查询字段的主键,并通过长度字段标识查询字段的字符数的技术手段,所以克服了需要对查询字段的内容进行补齐,导致主键构成不灵活、存储效率和查询效率低下的技术问题,进而达到使得主键的构成方式更加灵活,并且降低了主键占用的存储空间,提高了存储效率和查询速度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的查询数据的方法的主要步骤的示意图;
图2是根据本发明实施例的查询数据的装置的主要模块的示意图;
图3是本发明实施例可以应用于其中的示例性系统架构图;
图4是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的查询数据的方法的主要步骤的示意图。
如图1所示,本发明的一个实施例提供的查询数据的方法,包括:
S100,构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数。
本发明实施例中的查询字段通常为数据的各字段中最常被用来检索该数据的字段,例如对于用户数据而言,查询字段可以选择用户名;对于文件数据而言,查询字段可以选择文件名等;查询字段可以不定长。长度字段是根据查询字段的字符数生成的,长度字段的作用是标记查询字段的字符数,更加确切地来说,长度字段的作用是用来标记不同长度查询字段之间的长度关系。因此,长度字段只要能够满足大小比较的功能即可,而无需一定设置为查询字段的实际字符数。
S101,当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键。其中,查询关键字是由用户输入,作为查询条件的字符串;查询关键字可以只有一个,此时通过匹配查询关键字与主键,直接定位至一个主键及其对应的数据;查询关键字也可以有两个,用来界定主键的字符串的大小范围,从而获取到这一范围内的全部主键所对应的数据。
S102,获取所述满足查询条件的主键对应的数据作为查询结果。
在一些较佳的实施方式中,还可以在在所述长度字段和所述查询字段之间设置有分隔符。其中,分隔符优选为长度字段和查询字段均不会采用的字符,以便与长度字段和查询字段进行区分。分隔符的作用主要有两点,一方面可以避免一些特殊情况下查询出错误数据,另一方面可以便于使用者阅读关键字。此外,当关键字中有多个字段时,还可以在各字段之间设置分隔符,同样可以便于阅读,此外还可以便于设置查询条件。
为了使该实施例更加清楚,下面给出一些该实施例的具体应用。
例如在数据库中,将用户名作为用户数据的查询字段,构成用户数据的主键。实例用的用户名、根据现有技术构建的主键和根据本实施例构建的主键如表1所示。
表1主键对比表一
用户名 现有技术的主键 本实施例的主键
abc 000000abc 3abc
abcd 00000abcd 4abcd
abcdefghi abcdefghi 9abcdefghi
如表1所示,根据现有技术,需要将用户名均补齐为至少9位作为主键,若不进行补齐,在使用例如“abc”作为查询关键字查询数据时,除了会查询到用户abc的数据之外,还会查询到用户abcd和abcdefghi的数据(因为其中一个主键的字符串被另一个主键包含在内);根据现有技术构建的主键的总字符数为27。而根据本实施例中的方法,各主键首位的数字为长度字段,分别表示该主键中查询关键字的长度,根据实施例的方法构建的主键的总字符数为19,可见采用本实施例中的方式设置主键可以节约存储空间。此外还可以避免查询出不必要的数据,例如需要查询用户abc的用户数据,则可以使用“3abc”作为查询关键字,不会与其他的关键字发生重复,从而使得查询结果更加准确。
关于分隔符的功能,可以参考以下例子。
例如有两个用户名,分别为0a和abc…X,其中abc…X的总字符数为20。则根据前面实施例中的方法表示这两个用户名的主键分别为20a和20abc…X,可见主键的查询字段发生了重复,会出现查询不准确的问题。而在添加了分隔符“_”后,这两个用户名的主键分别为2_0a和20_abc…X,这样主键就不会发生重复,从而解决了查询不准确的问题。虽然该例子中的问题也可通过限定查询字段的字符范围等方式解决,但会对查询字段的设置造成不便,因此通过设置分隔符,可以使得主键的设置更加方便。
从上面所述可以看出,本实施例提供的查询数据的方法,通过设置包括长度字段和查询字段的主键,并通过长度字段标识查询字段的字符数,从而不需要对查询字段的内容进行补齐,使得主键的构成方式更加灵活,并且降低了主键占用的存储空间,提高了存储效率和查询速度。
在一些可选的实施例中,S100,构建数据的主键,包括:
获取数据的查询字段。当一条数据被存储至数据库中的数据表内时,该数据的各维度信息会被分别存储在数据表的各字段中,在前面的实施例中已经说明,查询字段通常为这些字段中最常被用来检索该数据的字段。
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段。本步骤具体的实现方式根据不同的开发语言有所不同,但均属于现有技术,不再赘述。
依次拼接所述长度字段的字符串和所述查询字段的字符串,即,将查询字段的字符串的首字符拼接在长度字段的字符串的尾字符之后,并保持两字符串中的其他字符之间的相对位置不发生改变。此外,若还包括分隔符,则使用分隔符的字符来连接长度字段和查询字段的字符串。
获取拼接得到的字符串作为所述数据的主键。
需要说明的是,在“将所述字符数转化为字符串型的长度字段”的步骤中,并非一定要将字符数转化为相同的字符串型数据。例如,可以将长度为1-9的查询字段的长度字段分别设置为字符“1-9”,将长度为10的查询字段的长度字段设置为“10”,以此类推;也可以将长度为1-9的查询字段的长度字段分别设置为字符“1-9”,将长度为10的查询字段的长度字段设置为“A”,将长度为11的查询字段的长度字段设置为“B”,以此类推。字符串大小的比较一般基于ACSII(American Standard Code for Information Interchange,美国信息交换标准代码)码表,而在该表中,字符“A”的序号大于字符“9”的序号,因此使用字符“A”和使用字符串“10”作为长度字段的效果是相同的,都可以用来表示该长度字段所对应查询字段的长度大于用字符“9”作为长度字段的查询字段。可见,本发明实施例中的长度字段的设置是非常灵活的,只要能够通过长度字段体现不同长度的查询字段之间的长度大小即可,而长度字段的形式则不受过多限定。
在另一些可选的实施例中,S100,构建数据的主键,包括:
获取数据的查询字段和其他字段。当一条数据被存储至数据库中的数据表内时,该数据的各维度信息会被分别存储在数据表的各字段中;除了最常被用来检索该数据的查询字段之外,还可以在主键中添加其他字段来进一步丰富查询的维度。
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段。
依次拼接所述长度字段的字符串和所述查询字段的字符串。与前一实施例类似,若还包括分隔符,则使用分隔符的字符来连接长度字段和查询字段的字符串。
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后。其他字段可以有一个或者多个,在主键中,这些其他字段的设置形式可以是设置在查询字段之前或者之后。需要说明的是,当确定了其他字段的设置形式之后,各主键都应当遵循该设置形式进行字段拼接。
获取拼接得到的字符串作为所述数据的主键。
需要说明的是,在本实施例中,需要将各主键中设置在所述长度字段之前的其他字段的长度设置为一相同值,即需要对设置在长度字段之前的其他字段进行补齐。这样做的目的是为了便于查询,在下一实施例中会通过具体的应用场景来进行进一步说明。
在一些可选的实施例中,所述查询关键字包括起始关键字和终止关键字。S101中,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
关于字符串大小的比较,按照以下规则进行:对两个字符串,从左端(首字符)开始依次比较两个字符串中字符的大小(即两个字符在ASCII码表中的序号大小),若确定字符大小相同,则比较下一字符的大小,直到出现大小不同的字符,则确定较大字符所在的字符串大于另一字符串;若直至其中一个字符串的尾端(即最后一个字符),全部字符的大小仍然相同,则判断另一个字符串是否也到达了尾端,若是,则确定两个字符串大小相等,若不是,则另一个字符串大于该字符串。例如,字符串“ABC”与字符串“ACD”比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后一字符串大,所以不再继续比较,结果就是字符串“ACD”大于字符串“ABC”;再如,字符串“ABC”与字符串“ABCD”比较,前三个字符均相同,此时前一字符串已经结束,而后一字符串仍有字符,结果就是字符串“ABCD”大于字符串“ABC”。
根据本实施例的方法,可以通过设置起始关键字和终止关键字来界定需要查询的主键的范围,从而查询到满足要求的批量的数据。
以查询用户文件的场景为例,在主键中的各字段依次为:时间戳字段、长度字段、用户名字段、文件名字段,其中用户名字段为前述实施例的查询字段,部分用户数据所对应的主键如下:
20170904_3_abc_0001
20170904_4_abcd_0001
20170905_3_abc_0001
20170905_3_abc_0002
20170905_4_abcd_0001
20170905_4_abcd_0002
20170906_3_abc_0001
若希望查询用户abc在2017年9月5日的全部文件,则可以将起始关键字设置为“20170905_3_abc_”,将终止关键字设置为“20170905_3_abc.”,其中,终止关键字末位的字符“.”在ASCII表中的序号比分隔符“_”的序号大1,因此在查询时,会返回全部以“20170905_3_abc_”开始的关键字,进而可以获取这些关键字所对应的数据,即用户abc在2017年9月5日的全部文件。根据前一实施例中所述,当主键中包含其他字段时,需要将各主键中设置在所述长度字段之前的其他字段的长度设置为一相同值。本实施例中的时间戳字段和文件名字段即为其他字段,而时间戳字段在长度字段之前,因此时间戳字段的长度应当为一相同值。假如时间戳字段的长度不是相同值,例如不在月或日前补0,那么在根据本实施例的方法查询一个时间区间内的数据时,由于时间戳字段的长度不一致,可能出现时间戳的最后一位或者倒数第二位与分隔符比较大小的情况,导致数据获取不准确。
从上面所述可以看出,本实施例进一步提供了一种通过设置起始关键字和终止关键字来界定需要查询的主键的范围,以批量查询数据的方法,能够根据需求一次性获取到批量的数据,提高了查询的便利性和速度。
在一些可选的实施例中,所述查询关键字包括起始关键字和终止关键字。
S100中,构建数据的主键,包括:
获取数据的查询字段;计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;在长度字段首位设置定位标识;其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;依次拼接所述长度字段的字符串和所述查询字段的字符串;获取拼接得到的字符串作为所述数据的主键。
所述定位标识的功能是定位至指定长度字段,由于长度字段与查询字段是一一对应的,也即定位至指定查询字段。
S101中,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
获取查询关键字中的定位标识。查询关键字是由用户输入的,应当与主键中各字段的排列方式相匹配,因此查询关键字中的定位标识通常为查询关键字的首字符。当一个查询关键字中出现两个或者两个以上的定位标识时,则获取第一个定位标识。
在所述主键中检索所述查询关键字的定位标识。具体的检索方式可以是例如将查询关键字中的定位标识与主键的各位字符逐个比较,直至找到相同的字符,则确定检索到了该定位标识。
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串。本步骤的含义是截取主键中以查询关键字的定位标识为首字符的剩余字符串,并将该剩余字符串作为比较字符串,参与查询关键字的比较,从而排除定位标识前的不定长字段对于字符串比较的影响。
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
仍然以查询用户文件的场景为例,在主键中的各字段依次为:长度字段(分类标签)、分类标签字段、长度字段(用户名)、用户名字段、文件名字段,其中用户名字段为前述实施例的查询字段,分类标签用于标识用户文件的类别,部分用户数据所对应的主键如下:
#1_1_$3_abc_0001
#1_1_$4_abcd_0001
#2_10_$3_abc_0001
#2_10_$3_abc_0002
#2_10_$4_abcd_0001
#2_10_$4_abcd_0002
#3_100_$3_abc_0001
在该场景中,分类标签字段和用户名字段均通过长度字段的方式来标识其字符数,因此分别用“#”字符作为分类标签字段的定位标识,添加在其长度字段首位,用“$”字符作为用户名字段的定位标识,添加在其长度字段首位。
例如,需要检索用户abc的全部文件,则可以将起始关键字设置为“$3_abc_”,将终止关键字设置为“$3_abc.”,并依据本实施例的方法依次判断各主键是否满足查询条件。下面以主键“#1_1_$3_abc_0001”为例,说明其查询过程:
步骤1,从查询关键字中获取定位标识“$”;其中,步骤1可以仅在查询开始时执行一次,然后将获取到的定位标识进行缓存,后续的查询过程无需再次获取;
步骤2,在主键“#1_1_$3_abc_0001”中检索定位标识“$”;
步骤3,获取主键“#1_1_$3_abc_0001”中以定位标识“$”为首位,以主键最后一位字符为末位的字符串“$3_abc_0001”作为比较字符串;
步骤4,由于“$3_abc_0001”大于“$3_abc_”且小于“$3_abc.”,因此满足查询条件。所以确定该主键所对应的数据是待查询的数据。
本实施例提供的方法可以在主键中包含多个不定长的字段时,满足基于不同字段的查询需求,从而使得主键的设置更加灵活,并且可以进一步降低主键所占用的存储空间,提高查询和存储效率。
图2是根据本发明实施例的查询数据的装置的主要模块的示意图
如图2所示,本发明实施例还提供一种查询数据的装置200,包括:
主键构建模块201,用于构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
查询模块202,用于当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;其中,查询关键字是由用户输入,作为查询条件的字符串;查询关键字可以只有一个,此时通过匹配查询关键字与主键,直接定位至一个主键及其对应的数据;查询关键字也可以有两个,用来界定主键的字符串的大小范围,从而获取到这一范围内的全部主键所对应的数据;
结果获取模块203,用于获取所述满足查询条件的主键对应的数据作为查询结果。
本实施例中的查询字段通常为数据的各字段中最常被用来检索该数据的字段,例如对于用户数据而言,查询字段可以选择用户名;对于文件数据而言,查询字段可以选择文件名等;查询字段可以不定长。长度字段是根据查询字段的字符数生成的,长度字段的作用是标记查询字段的字符数,更加确切地来说,长度字段的作用是用来标记不同长度查询字段之间的长度关系。因此,长度字段只要能够满足大小比较的功能即可,而无需一定设置为查询字段的实际字符数。
在一些可选的实施例中,所述主键构建模块201还用于:
获取数据的查询字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
获取拼接得到的字符串作为所述数据的主键。
在一些可选的实施例中,所述主键构建模块201还用于:
获取数据的查询字段和其他字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后;
获取拼接得到的字符串作为所述数据的主键。
在一些可选的实施例中,在所述长度字段和所述查询字段之间设置有分隔符。分隔符的作用主要有两点,一方面可以避免一些特殊情况下查询出错误数据,另一方面可以便于使用者阅读关键字。
在一些可选的实施例中,所述查询关键字包括起始关键字和终止关键字;
所述查询模块202还用于:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
通过设置起始关键字和终止关键字来界定需要查询的主键的范围,以批量查询数据的方法,能够根据需求一次性获取到批量的数据,提高了查询的便利性和速度。
在一些可选的实施例中,所述查询关键字包括起始关键字和终止关键字;
所述主键构建模块201还用于:
在长度字段首位设置定位标识;其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;
所述查询模块202还用于:
获取查询关键字中的定位标识;
在所述主键中检索所述查询关键字的定位标识;
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串;
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
本实施例的装置可以在主键中包含多个不定长的字段时,满足基于不同字段的查询需求,从而使得主键的设置更加灵活,并且可以进一步降低主键所占用的存储空间,提高查询和存储效率。
从上面所述可以看出,本发明实施例提供的查询数据的装置,通过构建包括长度字段和查询字段的主键,并通过长度字段标识查询字段的字符数,从而不需要对查询字段的内容进行补齐,使得主键的构成方式更加灵活,并且降低了主键占用的存储空间,提高了存储效率和查询速度。
图3示出了可以应用本发明实施例的查询数据的方法或查询数据的装置的示例性系统架构300。
如图3所示,系统架构300可以包括终端设备301、302、303,网络304和服务器305。网络304用以在终端设备301、302、303和服务器305之间提供通信链路的介质。网络304可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备301、302、303通过网络304与服务器305交互,以接收或发送消息等。
终端设备301、302、303可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器305可以是提供各种服务的服务器,例如对用户利用终端设备301、302、303发出的查询请求进行处理并查询相应数据的服务器。
需要说明的是,本发明实施例所提供的查询数据的方法一般由服务器305执行,相应地,查询数据的装置一般设置于服务器305中。
应该理解,图3中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
图4是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
下面参考图4,其示出了适于用来实现本发明实施例的终端设备的计算机系统400的结构示意图。图4示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本发明的实施例,上文主要步骤的示意图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤的示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括主键构建模块、查询模块和结果获取模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,主键构建模块还可以被描述为“用于构建数据的主键,以及建立所述主键与所述数据的对应关系的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
获取所述满足查询条件的主键对应的数据作为查询结果。
根据本发明实施例的技术方案,通过设置包括长度字段和查询字段的主键,并通过长度字段标识查询字段的字符数,从而不需要对查询字段的内容进行补齐,使得主键的构成方式更加灵活,并且降低了主键占用的存储空间,提高了存储效率和查询速度。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (14)

1.一种查询数据的方法,其特征在于,包括:
构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
获取所述满足查询条件的主键对应的数据作为查询结果;
所述构建数据的主键,还包括:在长度字段首位设置定位标识,所述定位标识的功能是定位至指定长度字段或指定查询字段。
2.根据权利要求1所述的方法,其特征在于,所述构建数据的主键,包括:
获取数据的查询字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
获取拼接得到的字符串作为所述数据的主键。
3.根据权利要求1所述的方法,其特征在于,所述构建数据的主键,包括:
获取数据的查询字段和其他字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后;
获取拼接得到的字符串作为所述数据的主键。
4.根据权利要求1所述的方法,其特征在于,在所述长度字段和所述查询字段之间设置有分隔符。
5.根据权利要求1-4任一所述的方法,其特征在于,所述查询关键字包括起始关键字和终止关键字;
通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
6.根据权利要求1所述的方法,其特征在于,所述查询关键字包括起始关键字和终止关键字;
其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;
所述通过比较所述查询关键字和所述主键,以确定满足查询条件的主键,包括:
获取查询关键字中的定位标识;
在所述主键中检索所述查询关键字的定位标识;
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串;
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
7.一种查询数据的装置,其特征在于,包括:
主键构建模块,用于构建数据的主键,以及建立所述主键与所述数据的对应关系;其中,所述主键包括依次相邻设置的长度字段和查询字段,所述长度字段用于标识所述查询字段的字符数;
查询模块,用于当接收包括查询关键字的请求时,通过比较所述查询关键字和所述主键,以确定满足查询条件的主键;
结果获取模块,用于获取所述满足查询条件的主键对应的数据作为查询结果;
所述主键构建模块还用于:在长度字段首位设置定位标识,所述定位标识的功能是定位至指定长度字段或指定查询字段。
8.根据权利要求7所述的装置,其特征在于,所述主键构建模块还用于:
获取数据的查询字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
获取拼接得到的字符串作为所述数据的主键。
9.根据权利要求7所述的装置,其特征在于,所述主键构建模块还用于:
获取数据的查询字段和其他字段;
计算所述查询字段的字符数,以及将所述字符数转化为字符串型的长度字段;
依次拼接所述长度字段的字符串和所述查询字段的字符串;
将所述其他字段拼接在所述长度字段之前和/或所述查询字段之后;
获取拼接得到的字符串作为所述数据的主键。
10.根据权利要求7所述的装置,其特征在于,在所述长度字段和所述查询字段之间设置有分隔符。
11.根据权利要求7-10任一所述的装置,其特征在于,所述查询关键字包括起始关键字和终止关键字;
所述查询模块还用于:
确定各所述主键的字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则所述主键满足查询条件。
12.根据权利要求7所述的装置,其特征在于,所述查询关键字包括起始关键字和终止关键字;
其中,若所述主键包括至少2个所述查询字段,则将各所述查询字段对应的长度字段的定位标识设置为不同字符;
所述查询模块还用于:
获取查询关键字中的定位标识;
在所述主键中检索所述查询关键字的定位标识;
获取所述主键中以所述查询关键字的定位标识为首位、以所述主键最后一位字符为末位的字符串作为比较字符串;
确定各所述主键的比较字符串大于或者等于所述起始关键字的字符串、且小于所述终止关键字的字符串;则确定所述主键满足查询条件。
13.一种查询数据的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201711032666.5A 2017-10-30 2017-10-30 一种查询数据的方法和装置 Active CN110019336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711032666.5A CN110019336B (zh) 2017-10-30 2017-10-30 一种查询数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711032666.5A CN110019336B (zh) 2017-10-30 2017-10-30 一种查询数据的方法和装置

Publications (2)

Publication Number Publication Date
CN110019336A CN110019336A (zh) 2019-07-16
CN110019336B true CN110019336B (zh) 2021-04-30

Family

ID=67186701

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711032666.5A Active CN110019336B (zh) 2017-10-30 2017-10-30 一种查询数据的方法和装置

Country Status (1)

Country Link
CN (1) CN110019336B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533414A (zh) * 2009-04-15 2009-09-16 阿里巴巴集团控股有限公司 一种数据库记录唯一标识符生成的方法及装置
US8037076B2 (en) * 2009-05-11 2011-10-11 Red Hat, Inc. Federated indexing from hashed primary key slices
CN103020204A (zh) * 2012-12-05 2013-04-03 北京普泽天玑数据技术有限公司 一种对分布式顺序表进行多维区间查询的方法及其系统
CN104850572A (zh) * 2014-11-18 2015-08-19 中兴通讯股份有限公司 HBase非主键索引构建与查询方法及其系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101860727A (zh) * 2009-04-09 2010-10-13 深圳市菲特数码技术有限公司 监控系统及其命令通信协议
CN103838760B (zh) * 2012-11-23 2016-12-21 北京神州泰岳软件股份有限公司 一种查询好友信息的方法和系统
CN104572755B (zh) * 2013-10-24 2018-01-30 高德软件有限公司 一种建立数据索引的方法、数据查询方法及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533414A (zh) * 2009-04-15 2009-09-16 阿里巴巴集团控股有限公司 一种数据库记录唯一标识符生成的方法及装置
US8037076B2 (en) * 2009-05-11 2011-10-11 Red Hat, Inc. Federated indexing from hashed primary key slices
CN103020204A (zh) * 2012-12-05 2013-04-03 北京普泽天玑数据技术有限公司 一种对分布式顺序表进行多维区间查询的方法及其系统
CN104850572A (zh) * 2014-11-18 2015-08-19 中兴通讯股份有限公司 HBase非主键索引构建与查询方法及其系统

Also Published As

Publication number Publication date
CN110019336A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN111339382B (zh) 字符串数据检索方法、装置、计算机设备及存储介质
CN107766492B (zh) 一种图像搜索的方法和装置
CN101477527B (zh) 一种检索多媒体资源的方法及装置
CN110471848B (zh) 一种动态返回报文的方法和装置
CN111061680A (zh) 一种数据检索的方法和装置
CN110909022A (zh) 一种数据查询方法和装置
CN111435406A (zh) 一种纠正数据库语句拼写错误的方法和装置
CN113157731A (zh) 符号解析方法、装置、设备及存储介质
CN114817651A (zh) 数据存储方法、数据查询方法、装置和设备
CN113761565B (zh) 数据脱敏方法和装置
CN113312355A (zh) 一种数据管理的方法和装置
CN110019336B (zh) 一种查询数据的方法和装置
CN110598068A (zh) 全局标识生成方法和装置
CN110704481B (zh) 展示数据的方法和装置
CN113220705A (zh) 慢查询识别的方法和装置
CN112100168A (zh) 一种确定数据关联关系的方法和装置
CN107977381B (zh) 数据配置方法、索引管理方法、相关装置以及计算设备
CN107256244B (zh) 数据处理方法和系统
CN113495891B (zh) 一种数据处理方法和装置
CN112487765B (zh) 一种生成通知文本的方法和装置
CN112417081A (zh) 一种实现增量倒排索引数据存储的方法和装置
CN110019671B (zh) 一种处理实时消息的方法和系统
CN113742321A (zh) 一种数据更新的方法和装置
CN112784596A (zh) 一种识别敏感词的方法和装置
CN110896391A (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
GR01 Patent grant
GR01 Patent grant