CN101639851A - 一种数据存储、查询的方法和装置 - Google Patents
一种数据存储、查询的方法和装置 Download PDFInfo
- Publication number
- CN101639851A CN101639851A CN 200910089187 CN200910089187A CN101639851A CN 101639851 A CN101639851 A CN 101639851A CN 200910089187 CN200910089187 CN 200910089187 CN 200910089187 A CN200910089187 A CN 200910089187A CN 101639851 A CN101639851 A CN 101639851A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- inquire
- component
- list
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储、查询的方法和装置,属于计算机领域。所述存储方法包括:分解表单的字段,得到所述字段的组成元素;建立所述组成元素的索引;存储所述分解并建立索引后的表单。所述查询方法包括:分解欲查询数据,得到所述欲查询数据的组成元素;确定所述欲查询数据的单一索引;建立所述欲查询数据的单一索引和所述欲查询数据的组成元素的对应关系,在存储数据中查询所述欲查询数据,所述存储数据存储的是组成元素和所述组成元素的索引。存储装置包括:分解模块,索引建立模块和存储模块。查询装置包括:分解模块,索引确定模块和查询模块。本发明提高了数据查询效率,缩短了数据查询时间。
Description
技术领域
本发明涉及计算机领域,特别涉及一种数据存储、查询的方法和装置。
背景技术
随着数据量的日益激增,如何有效地管理数据成为人们关心的问题。因此,数据库技术,特别是海量数据库技术成为研究的热点问题。
当前数据库,往往以表单的形式存储数据。表单包括多个字段,包括一条或多条记录,记录的内容即为存储的数据。数据查询时,往往以字段为单位,遍历该表单的所有记录,直至查找到符合条件的记录。
现有的数据查询方法,需要遍历所有数据直至找到符合条件的数据,当数据库中存储的数据量比较大时,这种查询方法效率较低,查询时间较长。
发明内容
为了提高数据查询效率,缩短数据查询时间,本发明实施例提供了一种数据存储、查询的方法和装置。所述技术方案如下:
一种数据存储的方法,所述方法包括:
分解表单的字段,得到所述字段的组成元素;
建立所述组成元素的索引;
存储所述分解并建立索引后的表单。
一种数据查询的方法,所述方法包括:
分解欲查询数据,得到所述欲查询数据的组成元素;
确定所述欲查询数据的单一索引;
建立所述欲查询数据的单一索引和所述欲查询数据的组成元素的对应关系,在存储数据中查询所述欲查询数据,所述存储数据存储的是组成元素和所述组成元素的索引。
一种数据存储的装置,所述装置包括:
分解模块,用于分解表单的字段,得到所述字段的组成元素;
索引建立模块,用于建立所述分解模块得到的组成元素的索引;
存储模块,用于存储所述索引建立模块得到的分解并建立索引后的表单。
一种数据查询的装置,所述装置包括:
分解模块,用于分解欲查询数据,得到所述欲查询数据的组成元素;
索引确定模块,用于确定所述欲查询数据的单一索引;
查询模块,用于建立所述索引确定模块确定的欲查询数据的单一索引和所述分解模块得到的欲查询数据的组成元素的对应关系,在存储数据中查询所述欲查询数据,所述存储数据存储的是组成元素和所述组成元素的索引。
本发明实施例提供的技术方案带来的有益效果是:提高了数据查询效率,缩短了数据查询时间。
附图说明
图1是本发明实施例提供的数据存储的方法流程图;
图2是本发明实施例提供的数据存储的另一方法流程图;
图3是本发明另一实施例提供的数据查询的方法流程图;
图4是本发明另一实施例提供的数据存储的装置结构示意图;
图5是本发明另一实施例提供的数据存储的装置另一结构示意图;
图6是本发明另一实施例提供的数据查询的装置结构示意图;
图7是本发明另一实施例提供的数据查询的装置另一结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,本发明实施例提供了一种数据存储的方法,该方法分解表单字段,建立分解得到的组成元素的索引,存储该分解并建立索引后的表单,具体包括:
101:分解表单的字段,得到该字段的组成元素;
102:建立该组成元素的索引;
103:存储该分解并建立索引后的表单。
本发明实施例提供的数据存储方法,提高了数据查询效率,缩短了数据查询时间。
数据库中,数据以表单的形式存储。表单包含不同的记录,一般以id区分不同的记录,id可以由***自动生成。一条记录包含若干个字段。参见图2,以下详细阐述在数据库中,如何应用本实施例提供的方法来存储数据。
201:获取原始表单中各字段存储的数据。
具体的,可以通过手工输入或从外界导入的方式获取原始表单中各字段存储的数据。
例如:表1表示一个***表单,由“id”、“号码”、“密码”三个字段组成,存储有n条***记录。其中,“id”用于表示不同的记录;“号码”表示***的数字,由4位数字组成;“密码”表示***的密码,由4位字母组成。
表1
id | 号码 | 密码 |
1 | a1b1c1d1 | A1B1C1D1 |
2 | a2b2c2d2 | A2B2C2D2 |
… | … | … |
n | anbncndn | AnBnCnDn |
其中,0≤ai、bi、ci、di≤9,Ai、Bi、Ci、Di∈{a,b,...,z},1≤i≤n,在海量存储情况下,一般2.5×109≤n≤∞。
202:分解原始表单的字段,得到各字段相应的组成元素。
具体的,判断字段的数据类型,根据该数据类型占用的字节分解该字段,得到该字段的组成元素。
具体的,字段的数据类型可以是数字、字符等。例如,表1中“号码”的数据类型是数字,“密码”的数据类型是字符。不同数据类型在数据库中占用的字节不同。例如,单个数字在数据库中一般占用一个字节,单个字母在数据库中一般占用两个字节。因此,数字按照一个字节分解,字母按照两个字节分解。另外,数字还可以根据数学运算法则进行分解。例如,a1b1c1d1=a1×103+b1×102+c1×101+d1,则分解后a1b1c1d1=(a1)(b1)(c1)(d1)。相应的,分解后的***表单如表2所示。
表2
203:建立各组成元素的单一索引。
例如,表2的各组成元素建立的单一索引如表3所示。
Index(a)=Ca
Index(b)=Cb
…
Index(D)=CD
表3
id | Ca | Cb | Cc | Cd | CA | CB | CC | CD |
1 | a1 | b1 | c1 | d1 | A1 | B1 | C1 | D1 |
2 | a2 | b2 | c2 | d2 | A2 | B2 | C2 | D2 |
… | … | … | … | … | … | … | … | … |
n | an | bn | cn | dn | An | Bn | Cn | Dn |
204:根据单一索引,建立各组成元素的组合索引。
具体的,根据单一索引,结合实际的查询需求,为各组成元素建立组合索引。若干单一索引组成组合索引。例如,实际使用时,存在***号码的查询需求,则增加***号码的索引;存在***密码的查询需求,增加***密码的索引;存在***号码和***密码的查询需求,增加***号码和***密码的索引,公式表示如下:
Index号码+密码=CaCbCcCd CACBCCCD
Index号码=CaCbCcCd
Index密码=CACBCCCD
205:将分解并建立索引后的表单存储到数据库中。
具体的,若数据库中没有存储原始表单,则可以直接存储分解并建立索引后的表单;若数据库中存储了原始表单,则用分解并建立索引后的表单替换原始表单。为了节省替换时间,可以采用逐条记录进行替换的方式,例如用表3中id为1的记录替换表1中id为1的记录,用表3中id为2的记录替换表1中id为2的记录。
本发明实施例提供的方法,通过分解表单字段,建立分解得到的组成元素的索引,存储该分解并建立索引后的表单,以便于查询存储数据时,提高数据查询效率,缩短数据查询时间。
基于上述数据存储的方法,参见图3,本发明实施例还提供了一种数据查询的方法,具体包括:
301:将欲查询数据分解,得到欲查询数据的组成元素;
其中,分解欲查询数据的方法,与数据存储实施例中的分解字段的方法一致,在此不再赘述。
以***表单为例,欲查询数据库中是否存在***号码为“a1b1c1d1”的记录。将a1b1c1d1分解为a1、b1、c1、d1四个组成元素。
302:确定欲查询数据的单一索引;
具体的,首先确定欲查询数据的组合索引,根据该组合索引,进一步确定该组合索引涉及的单一索引。
例如:确定***号码的组合索引为Index号码,该组合索引包括的单一索引为CaCbCcCd。
303:建立欲查询数据的单一索引和欲查询数据的组成元素的对应关系,在存储数据中查询欲查询数据,该存储数据存储的是组成元素和组成元素的索引。
其中,存储数据的存储方法可以采用数据存储实施例中的方法,这里不再赘述。
例如:建立欲查询***号码a1b1c1d1的单一索引CaCbCcCd和建立欲查询***号码a1b1c1d1的组成元素a1、b1、c1、d1的对应关系为:
“Ca”=a1
“Cb”=b1
“Cc”=c1
“Cd”=d1
则查询数据库中是否存在***号码为“a1b1c1d1”的记录,使用SQL(StructureQuery Language,结构化查询语句)查询具体为:
Select*from***表单where“Ca”=a1 and
“Cb”=b1 and
“Cc”=c1 and
“Cd”=d1
本实施例提供的数据查询的方法,可以提高数据查询效率,缩短数据查询时间。例如:一个n位的数据v,v1、v2、、、vn分别表示各位数字。假设欲查询数据(目标数据)为Y,Y1、Y2、、、Yn为其各位数字。在使用本实施例提供的方法进行查询时,首先过滤掉v1≠Y1的数据,平均几率为9/10,留存v1=Y1的数据,平均几率为1/10;然后留存的数据中过滤掉v2≠Y2的数据,平均几率为留存几率为依次类推,最后一位查询1次,命中率为100%,则该n位数据最差命中率为
下面定义几个性能指标:最乐观时间、最悲观时间和准备时间。
最乐观时间:数据库中存在欲查询数据,且在1万条数据之内。
最悲观时间:数据库中不存在欲查询数据,需遍历整个数据库查找。
准备时间:数据库存储数据完成的时间。
海量数据库至少有2.5×109条数据,这里我们假设数据库有2.5×109条数据,并假设现有技术采用Select*from***表单where“号码=a1b1c1d1”方式进行查询,则测试的性能指标对比如下:
测试结果 | 数据量 | 最乐观时间 | 最悲观时间 | 准备时间 |
现有技术 | 2.5×109 | 1.474s | 124.35s | 1700.5s |
本发明 | 2.5×109 | 0.0005s | 0.0014s | 9623.16s |
从此可知,相对于现有技术,本发明实施例提供的数据查询的方法,虽然准备时间较长,但是数据查询效率较高,数据查询时间较短。
参见图4,本发明实施例提供了一种数据存储的装置,该装置包括:
分解模块401,用于分解表单的字段,得到该字段的组成元素;
索引建立模块402,用于建立分解模块401得到的组成元素的索引;
存储模块403,用于存储索引建立模块402得到的分解并建立索引后的表单。
其中,参见图5,分解模块401包括:
判断单元401a,用于判断该字段的数据类型;
分解单元401b,用于根据该判断单元401a判断的数据类型占用的字节分解该字段。
其中,该索引建立模块402包括:
单一索引建立单元402a,用于建立该组成元素的单一索引;
组合索引建立单元402b,用于根据该单一索引建立单元402a建立的单一索引,建立该组成元素的组合索引。
其中,该存储模块403,具体用于若存储有该表单,用该索引建立模块402得到的分解并建立索引后的表单替换该表单。
本发明实施例提供的数据存储装置,以便于查询存储数据时,提高了数据查询效率,缩短了数据查询时间。
参见图6,本发明实施例提供了一种数据查询的装置,该装置包括:
分解模块501,用于分解欲查询数据,得到该欲查询数据的组成元素;
索引确定模块502,用于确定该欲查询数据的单一索引;
查询模块503,用于建立该索引确定模块502确定的欲查询数据的单一索引和该分解模块501得到的欲查询数据的组成元素的对应关系,在存储数据中查询该欲查询数据,该存储数据存储的是组成元素和组成元素的索引。
其中,参见图7,该索引确定模块502包括:
组合索引确定单元502a,用于确定该欲查询数据的组合索引;
单一索引确定单元502b,用于根据该组合索引确定单元502a确定的组合索引,确定该欲查询数据的单一索引。
本发明实施例提供的数据查询装置,提高了数据查询效率,缩短了数据查询时间。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1、一种数据存储的方法,其特征在于,所述方法包括:
分解表单的字段,得到所述字段的组成元素;
建立所述组成元素的索引;
存储所述分解并建立索引后的表单。
2、如权利要求1所述的方法,其特征在于,所述分解表单的字段包括:
判断所述字段的数据类型;
根据所述数据类型占用的字节分解所述字段。
3、如权利要求1所述的方法,其特征在于,所述建立所述组成元素的索引包括:
建立所述组成元素的单一索引;
根据所述单一索引,建立所述组成元素的组合索引。
4、如权利要求1所述的方法,其特征在于,所述存储所述分解并建立索引后的表单包括:
若存储有所述表单,用所述分解并建立索引后的表单替换所述表单。
5、一种数据查询的方法,其特征在于,所述方法包括:
分解欲查询数据,得到所述欲查询数据的组成元素;
确定所述欲查询数据的单一索引;
建立所述欲查询数据的单一索引和所述欲查询数据的组成元素的对应关系,在存储数据中查询所述欲查询数据,
所述存储数据存储的是组成元素和所述组成元素的索引。
6、如权利要求5所述的方法,其特征在于,所述确定所述欲查询数据的单一索引包括:
确定所述欲查询数据的组合索引;
根据所述组合索引,确定所述欲查询数据的单一索引。
7、一种数据存储的装置,其特征在于,所述装置包括:
分解模块,用于分解表单的字段,得到所述字段的组成元素;
索引建立模块,用于建立所述分解模块得到的组成元素的索引;
存储模块,用于存储所述索引建立模块得到的分解并建立索引后的表单。
8、如权利要求7所述的装置,其特征在于,所述分解模块包括:
判断单元,用于判断所述字段的数据类型;
分解单元,用于根据所述判断单元判断的数据类型占用的字节分解所述字段。
9、如权利要求7所述的装置,其特征在于,所述索引建立模块包括:
单一索引建立单元,用于建立所述组成元素的单一索引;
组合索引建立单元,用于根据所述单一索引建立单元建立的单一索引,建立所述组成元素的组合索引。
10、如权利要求7所述的装置,其特征在于,所述存储模块,具体用于若存储有所述表单,用所述索引建立模块得到的分解并建立索引后的表单替换所述表单。
11、一种数据查询的装置,其特征在于,所述装置包括:
分解模块,用于分解欲查询数据,得到所述欲查询数据的组成元素;
索引确定模块,用于确定所述欲查询数据的单一索引;
查询模块,用于建立所述索引确定模块确定的欲查询数据的单一索引和所述分解模块得到的欲查询数据的组成元素的对应关系,在存储数据中查询所述欲查询数据,所述存储数据存储的是组成元素和所述组成元素的索引。
12、如权利要求11所述的装置,其特征在于,所述索引确定模块包括:
组合索引确定单元,用于确定所述欲查询数据的组合索引;单一索引确定单元,用于根据所述组合索引确定单元确定的组合索引,确定所述欲查询数据的单一索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910089187 CN101639851B (zh) | 2009-08-03 | 2009-08-03 | 一种数据存储、查询的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910089187 CN101639851B (zh) | 2009-08-03 | 2009-08-03 | 一种数据存储、查询的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101639851A true CN101639851A (zh) | 2010-02-03 |
CN101639851B CN101639851B (zh) | 2013-01-02 |
Family
ID=41614835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910089187 Active CN101639851B (zh) | 2009-08-03 | 2009-08-03 | 一种数据存储、查询的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101639851B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236659A (zh) * | 2010-04-27 | 2011-11-09 | ***股份有限公司 | 使用复杂条件从数据源进行数据过滤的方法和*** |
CN103246738A (zh) * | 2013-05-15 | 2013-08-14 | 大唐淮北发电厂 | 一种基于输入验证的查询***及方法 |
CN103942205A (zh) * | 2013-01-18 | 2014-07-23 | 深圳市腾讯计算机***有限公司 | 存储、读取目录索引的方法、装置及*** |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN106649483A (zh) * | 2016-10-08 | 2017-05-10 | 浪潮软件股份有限公司 | 一种数据动态查询的方法及装置 |
WO2018001085A1 (zh) * | 2016-06-30 | 2018-01-04 | 中兴通讯股份有限公司 | 数据存储方法和装置、数据查找请求的处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588362A (zh) * | 2004-09-16 | 2005-03-02 | 卢利华 | 图书机读目录的转换方法 |
US8484220B2 (en) * | 2007-03-06 | 2013-07-09 | Mcafee, Inc. | Clustered index with differentiated subfields |
-
2009
- 2009-08-03 CN CN 200910089187 patent/CN101639851B/zh active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236659A (zh) * | 2010-04-27 | 2011-11-09 | ***股份有限公司 | 使用复杂条件从数据源进行数据过滤的方法和*** |
CN102236659B (zh) * | 2010-04-27 | 2014-01-15 | ***股份有限公司 | 使用复杂条件从数据源进行数据过滤的方法和*** |
CN103942205A (zh) * | 2013-01-18 | 2014-07-23 | 深圳市腾讯计算机***有限公司 | 存储、读取目录索引的方法、装置及*** |
WO2014110940A1 (en) * | 2013-01-18 | 2014-07-24 | Tencent Technology (Shenzhen) Company Limited | A method, apparatus and system for storing, reading the directory index |
CN103942205B (zh) * | 2013-01-18 | 2018-06-05 | 深圳市腾讯计算机***有限公司 | 存储、读取目录索引的方法、装置及*** |
CN103246738A (zh) * | 2013-05-15 | 2013-08-14 | 大唐淮北发电厂 | 一种基于输入验证的查询***及方法 |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN105447030B (zh) * | 2014-08-29 | 2019-06-11 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
WO2018001085A1 (zh) * | 2016-06-30 | 2018-01-04 | 中兴通讯股份有限公司 | 数据存储方法和装置、数据查找请求的处理方法和装置 |
CN107562743A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 数据存储方法和装置、数据查找请求的处理方法和装置 |
CN107562743B (zh) * | 2016-06-30 | 2022-12-02 | 中兴通讯股份有限公司 | 数据存储方法和装置、数据查找请求的处理方法和装置 |
CN106649483A (zh) * | 2016-10-08 | 2017-05-10 | 浪潮软件股份有限公司 | 一种数据动态查询的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101639851B (zh) | 2013-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109669934B (zh) | 一种切合电力客服业务的数据仓库***及其构建方法 | |
CN107862070B (zh) | 基于文本聚类的线上课堂讨论短文本即时分组方法及*** | |
CN101639851B (zh) | 一种数据存储、查询的方法和装置 | |
CN107103032B (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
CN104090901B (zh) | 一种对数据进行处理的方法、装置及服务器 | |
WO2015184762A1 (zh) | 数据库查询方法及装置 | |
CN105373541A (zh) | 数据库的数据操作请求的处理方法和*** | |
CN106709851B (zh) | 大数据检索方法及装置 | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
CN110109910A (zh) | 数据处理方法及***、电子设备和计算机可读存储介质 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN107577787B (zh) | 关联数据信息入库的方法及*** | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN111930615B (zh) | 代码质量评估方法及装置 | |
WO2017092444A1 (zh) | 基于Hadoop的日志数据挖掘方法及*** | |
CN104572785A (zh) | 一种分布式创建索引的方法和装置 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN114064660B (zh) | 基于ElasticSearch的数据结构化分析方法 | |
CN101916254A (zh) | 表单统计方法和装置 | |
Sheng et al. | Dynamic top-k range reporting in external memory | |
CN104794237A (zh) | 网页信息处理方法及装置 | |
CN111125045B (zh) | 一种轻量级etl处理平台 | |
CN109542912B (zh) | 区间数据存储方法、装置、服务器及存储介质 | |
CN104462588A (zh) | 一种基于云数据库的知识产权检索*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180123 Address after: 100176 Beijing Beijing economic and Technological Development Zone Culture Park, No. 6, courtyard No. 30, No. 18, 1803 Patentee after: Beijing Yunhu Times Technology Co., Ltd. Address before: 100020 room 1809, room No. 6, Wantong center, Chaoyang District, Beijing Patentee before: Beijing Grandison & JM Information Technology Co., Ltd. |
|
TR01 | Transfer of patent right |