CN108268503B - 一种数据库的存储、查询方法及装置 - Google Patents
一种数据库的存储、查询方法及装置 Download PDFInfo
- Publication number
- CN108268503B CN108268503B CN201611262341.1A CN201611262341A CN108268503B CN 108268503 B CN108268503 B CN 108268503B CN 201611262341 A CN201611262341 A CN 201611262341A CN 108268503 B CN108268503 B CN 108268503B
- Authority
- CN
- China
- Prior art keywords
- index
- value
- item
- database
- 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
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/2453—Query optimisation
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库的存储、查询方法及装置,涉及计算机技术领域,可以解决由于查询数据时可能需要读取较多的冗余数据,导致查询数据的开销较大,查询数据的效率较低的问题。具体方案为:接收查询请求,该查询请求用于从数据库中查询符合查询条件的数据;确定与查询条件对应的查询数据区间,并从多个索引项中确定出匹配索引项,该匹配索引项中的索引键所指示的取值区间包含查询数据区间;从匹配索引项中的索引值指向的存储单元中,读取待查询数据。本发明实施例应用于数据库中的数据存储或查询过程中。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据库的存储、查询方法及装置。
背景技术
数据库可以在计算机设备上,按照数据结构来组织、存储和管理数据。其中,数据库可以包括多个用于存储数据的存储单元。为了提高数据库中的数据查询效率,可以为数据库中保存的数据创建索引。
现有技术中的数据查询过程可以包括:根据索引确定出数据库中保存待查询数据的存储单元,从确定的存储单元中读取待查询数据。
但是,上述确定的存储单元中、除了待查询数据之外可能还保存有较多的其他数据(简称为冗余数据)。而现有技术在从确定的存储单元中读取待查询数据时,需要逐一读取该存储单元中保存的数据,才能获得上述待查询数据,即现有技术在从确定的存储单元中读取待查询数据时,不仅要读取待查询数据,还可能需要读取较多的冗余数据,读取较多的冗余数据会导致查询数据时的开销较大,影响查询数据的效率。
发明内容
本申请提供一种数据库的存储、查询方法及装置,可以减少查询数据的开销,提高查询数据的效率。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请提供一种数据库的查询方法,数据库包括多个存储单元,数据库的索引中包含多个索引项,每个索引项中包含索引键和至少一个索引值,至少一个索引值中的每个索引值指向数据库中的一个存储单元,索引键用于指示索引项对应的数据在第一数据中的取值区间,该第一数据为至少一个索引值指向的存储单元所保存的数据,该数据库的查询方法包括:接收查询请求,该查询请求用于从数据库中查询符合查询条件的待查询数据;确定与查询条件对应的查询数据区间,并从多个索引项中确定出匹配索引项,该匹配索引项中的索引键所指示的取值区间包含查询数据区间;根据匹配索引项中的索引键所指示的取值区间,从匹配索引项中的索引值指向的存储单元中,读取待查询数据。
其中,由于索引项的索引键用于指示索引项对应的数据在第一数据(即至少一个索引值指向的存储单元所保存的数据)中的取值区间,因此,本申请在读取待查询数据时,可以仅读取匹配索引项中的索引值指向的存储单元保存的数据中、匹配索引项中的索引键所指示的取值区间所对应的数据;而不需要逐一读取索引项所指示的存储单元中保存的所有数据。如此,可以避免读取较多的冗余数据(即匹配索引项中的索引值所指向的存储单元中保存的除上述待查询数据之外的其他数据),可以减少查询数据的开销,提高查询数据的效率。
在第一方面的一种实现方式中,在上述“在从匹配索引项中的索引值指向的存储单元中,读取待查询数据”之前,上述数据库的查询方法还可以括:若匹配索引项中的索引键所指示的取值区间的两个边界值的差值大于第一分裂阈值,则根据匹配索引项中的索引键所指示的取值区间的两个边界值和查询数据区间的两个边界值,将匹配索引项拆分为至少两个子索引项;从至少两个子索引项中确定出匹配子索引项,该匹配子索引项中的索引键所指示的取值区间包含查询数据区间。上述“根据匹配索引项中的索引键所指示的取值区间,从匹配索引项中的索引值指向的存储单元中,读取待查询数据”可以包括:根据匹配子索引项中的索引键所指示的取值区间,从匹配子索引项中的索引值指向的存储单元中,读取待查询数据。
其中,由于匹配索引项中的索引键所指示的取值区间包含查询数据区间,即匹配索引项中的索引键所指示的取值区间大于或者等于查询数据区间,且至少两个子索引项是根据匹配索引项中的索引键所指示的取值区间的两个边界值和查询数据区间的两个边界值,拆分匹配索引项得到的,因此该至少两个子索引项中的一个子索引项中的索引键所指示的取值区间(即匹配子索引项)可以包含查询数据区间,即匹配子索引项中的索引键所指示的取值区间大于或者等于查询数据区间。并且,索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而将匹配索引项拆分为至少两个子索引项后,至少两个子索引项中任一个子索引项(如匹配子索引项)对应的数据则少于匹配索引项对应的数据。
综上所述,由于匹配子索引项和匹配索引项中的索引键所指示的取值区间均包含查询数据区间,并且匹配子索引项对应的数据则少于匹配索引项对应的数据;因此可以得出:匹配子索引项的所有索引值所指向的存储单元中保存的冗余数据(即匹配子索引项的所有索引值所指向的存储单元中保存的与该匹配子索引项对应、除上述待查询数据之外的其他数据)少于匹配索引项的所有索引值所指向的存储单元中保存的冗余数据(即匹配索引项的所有索引值所指向的存储单元中保存的与该匹配索引项对应、除上述待查询数据之外的其他数据)。本发明实施例提供的数据库的查询方法中,从匹配子索引项的所有索引值所指向的存储单元中保存的与该匹配子索引项对应的数据中读取待查询数据,可以进一步的减少需要读取的冗余数据,进而可以进一步的减少查询数据的开销,提高查询数据的效率。
在第一方面的一种实现方式中,在将匹配索引项拆分为至少两个子索引项之后,本发明实施例的方法还可以包括:采用至少两个子索引项更新保存的匹配索引项。
其中,索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而将匹配索引项拆分为至少两个子索引项后,至少两个子索引项中任一个子索引项对应的数据则少于匹配索引项对应的数据。
在第一方面的一种实现方式中,在判断匹配索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第一分裂阈值之前,可以先计算该第一分裂阈值。其中,本发明实施例中计算第一分裂阈值的方法可以包括:确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间;计算当前的全局取值区间的两个边界值的差值与m的比值,得到第一分裂阈值。其中,m为匹配索引项的所有索引值所指向存储单元的总数。
其中,上述所有已保存的索引项中的索引键所指示的取值区间中包含匹配索引项中的索引键所指示的取值区间。第一分裂阈值为当前的全局取值区间的两个边界值的差值与m(匹配索引项的所有索引值所指向存储单元的总数)的比值,即第一分裂阈值为采用匹配索引项的所有索引值所指向存储单元的总数,将当前的全局取值区间平均划分为m个取值区间后,该m个取值区间中任一取值区间的两个边界值的差值。
第二方面,本申请提供一种数据库的存储方法,该数据库包括多个存储单元,该数据库的存储方法包括:接收存储请求,并将存储请求中携带的待存储数据保存至数据库中的至少一个第一存储单元;生成第一索引项,该第一索引项中包含第一索引键和至少一个第一索引值,至少一个第一索引值指向至少一个第一存储单元,第一索引键用于指示待存储数据在至少一个第一存储单元所保存的数据中的取值区间;在数据库的索引中保存第一索引项。
其中,上述数据库的存储方法不仅可以在数据库中保存待存储数据,还可以为该待存储数据生成并保存索引项(即第一索引项)。由于第一索引项中包含第一索引键和至少一个第一索引值,第一索引键用于指示待存储数据在至少一个第一存储单元所保存的数据中的取值区间;因此,在查询保存在数据库中的待存储数据时,可以仅读取第一索引项中的索引值指向的存储单元(即至少一个第一存储单元)保存的数据中,第一索引项中的索引键所指示的取值区间所对应的数据;而不需要逐一读取至少一个第一存储单元中保存的所有数据。如此,可以避免读取较多的冗余数据(即第一索引项中的索引值所指向的存储单元中保存的除上述待存储数据之外的其他数据),可以减少查询数据的开销,提高查询数据的效率。
在第二方面的一种实现方式中,在上述“在数据库的索引中保存第一索引项”之前,上述数据库的存储方法还可以包括:从数据库的索引中确定出第二索引项,该第二索引项中的索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集;若第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,则根据第一索引项中的索引键所指示的取值区间的两个边界值和第二索引项中的索引键所指示的取值区间的两个边界值,拆分第一索引项和/或第二索引项,得到至少两个第一子索引项。上述“在数据库的索引中保存第一索引项”可以包括:采用至少两个第一子索引项更新保存的第二索引项。
其中,当待保存的第一索引项中的索引键所指示的取值区间与已保存的第二索引项中的索引键所指示的取值区间存在交集时,如果同时保存第一索引项和第二索引项,则会存在针对同一数据保存两个索引项的问题。本发明实施例中,可以对第一索引项和/或第二索引项进行拆分,得到至少两个第一子索引项。由于至少两个第一子索引项是由第一索引项和第二索引项拆分得到的,因此该至少两个第一子索引项的所有索引值所指向的存储单元中保存的与该至少两个第一子索引项对应的数据包含了第一索引项和第二索引项的所有索引值所指向的所有存储单元中保存的与该第一索引项和第二索引项对应的所有数据。如此,采用至少两个第一子索引项更新保存的第二索引项,不仅可以保存第一索引项和第二索引项对应的所有数据,还可以避免上述针对同一数据保存两个索引项的问题。
并且,如果第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值时,则表示第一索引项或者第二索引项对应的数据较多。本发明实施例中,将第一索引项和/或第二索引项拆分为至少两个第一子索引项后,至少两个第一子索引项中的每个第一子索引项对应的数据则少于第一索引项和/或第二索引项对应的所有数据;因此,从至少两个第一子索引项中的任一第一子索引项的所有索引值所指向的存储单元中保存的与上述任一第一子索引项对应的数据中读取待查询数据时,所需要读取的数据少于从第一索引项和第二索引项的所有索引值所指向的存储单元中保存的与上述第一索引项和第二索引项对应的所有数据中读取待查询数据时,所需要读取的数据,即通过本方案,可以减少需要读取的数据,进而可以减少查询数据的开销,提高查询数据的效率。
在第二方面的一种实现方式中,在判断第一索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第二分裂阈值之前,可以先计算该第二分裂阈值。其中,本申请中计算第二分裂阈值的方法可以包括:确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间;计算当前的全局取值区间的两个边界值的差值与q的比值,得到第二分裂阈值;其中,q为第一索引项的所有索引值所指向存储单元的总数。
其中,上述所有已保存的索引项中的索引键所指示的取值区间中包含第一索引项中的索引键所指示的取值区间和第二索引项中的索引键所指示的取值区间。第二分裂阈值为当前的全局取值区间的两个边界值的差值与q(第一索引项的所有索引值所指向存储单元的总数)的比值,即第二分裂阈值为采用第一索引项的所有索引值所指向存储单元的总数,将当前的全局取值区间平均划分为q个取值区间后,该q个取值区间中任一取值区间的两个边界值的差值。
在第二方面的一种实现方式中,上述数据库的存储方法还可以包括:若第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,且第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,则合并第一索引项和第二索引项。上述“在数据库的索引中保存第一索引项”可以包括:采用合并后的索引项更新保存的第二索引项。
其中,当第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,且第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值时,则表示第一索引项或者第二索引项对应的数据较少。当待保存的第一索引项中的索引键所指示的取值区间与已保存的第二索引项中的索引键所指示的取值区间存在交集,且第一索引项和第二索引项对应的数据均较少时,则可以确定第一索引项和第二索引项对应的数据基本相同。如此,若直接保存第一索引项,则会由于同时保存了第一索引项和第二索引项导致针对同一数据保存两个索引项的问题。上述方案中,可以合并取值区间存在交集的第一索引项和第二索引项,并采用合并后的索引项更新保存的第二索引项,如此便可以解决上述针对同一数据保存两个索引项的问题。
在第二方面的一种实现方式中,在上述“在数据库的索引中保存第一索引项”之前,上述数据库的存储方法还可以包括:若第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值,则将第一索引项拆分为k个子索引项。上述“在数据库的索引中保存第一索引项”可以包括:保存k个子索引项,2≤k≤n,n为第一索引项的所有索引值所指向存储单元的总数。
其中,当第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值时,则表示第一索引项对应的数据较多。本方案可以对第一索引项进行拆分,得到k个子索引项,由于该k个子索引项是由第一索引项拆分得到的,因此该k个子索引项的所有索引值所指向的存储单元中保存的与该k个子索引项对应的数据包含了第一索引项的所有索引值所指向的存储单元中保存的与第一索引项对应的数据。如此,保存k个子索引项后,可以保存第一索引项对应的所有数据。并且,由于上述k个子索引项中每个子索引项对应的数据少于第一索引项对应的数据,因此从k个子索引项中的任一子索引项的所有索引值所指向的存储单元中保存的与该k个子索引项中的任一子索引项对应的数据中读取待查询数据时,所需要读取的数据少于从第一索引项的所有索引值所指向的存储单元中保存的与第一索引项对应的数据中读取待查询数据时,所需要读取的数据,即通过本方案,可以减少查询数据时所要读取的数据,减少查询数据的开销,提高查询数据的效率。
在第二方面的一种实现方式中,在判断第一索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第三分裂阈值之前,可以先计算该第三分裂阈值。其中,本申请计算第三分裂阈值的方法可以包括:确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间;计算当前的全局取值区间的两个边界值的差值与n的比值,得到第三分裂阈值。
其中,上述所有已保存的索引项中的索引键所指示的取值区间中包含第一索引项中的索引键所指示的取值区间。第三分裂阈值为当前的全局取值区间的两个边界值的差值与n(第一索引项的所有索引值所指向存储单元的总数)的比值,即第三分裂阈值为采用n将当前的全局取值区间平均划分为n个取值区间后,该n个取值区间中任一取值区间的两个边界值的差值。
第三方面,本申请提供一种数据库的管理装置,数据库包括多个存储单元,数据库的索引中包含多个索引项,每个索引项中包含索引键和至少一个索引值,至少一个索引值中的每个索引值指向数据库中的一个存储单元,索引键用于指示索引项对应的数据在第一数据(即至少一个索引值指向的存储单元所保存的数据)中的取值区间。该数据库的管理装置包括:接收模块、确定模块和读取模块。接收模块,用于接收查询请求,该查询请求用于从数据库中查询符合查询条件的待查询数据;确定模块,用于确定与接收模块接收的查询请求中的查询条件对应的查询数据区间,并从多个索引项中确定出匹配索引项,匹配索引项中的索引键所指示的取值区间包含查询数据区间;读取模块,用于根据确定模块确定的匹配索引项中的索引键所指示的取值区间,从匹配索引项中的索引值指向的存储单元中,读取待查询数据。
在第三方面的一种实现方式中,上述数据库的管理装置还可以包括:拆分模块。拆分模块,用于在读取模块从匹配索引项中的索引值指向的存储单元中,读取待查询数据之前,若确定模块确定的匹配索引项中的索引键所指示的取值区间的两个边界值的差值大于第一分裂阈值,则根据匹配索引项中的索引键所指示的取值区间的两个边界值和查询数据区间的两个边界值,将匹配索引项拆分为至少两个子索引项。上述确定模块,还可以用于从拆分模块拆分得到的至少两个子索引项中确定出匹配子索引项,匹配子索引项中的索引键所指示的取值区间包含查询数据区间。上述确定模块,具体可以用于根据匹配子索引项中的索引键所指示的取值区间,从确定模块确定出的匹配子索引项中的索引值指向的存储单元中,读取待查询数据。
在第三方面的一种实现方式中,上述数据库的管理装置还可以包括:存储模块。存储模块,用于拆分模块将匹配索引项拆分为至少两个子索引项之后,采用至少两个子索引项更新保存的匹配索引项。
在第三方面的一种实现方式中,上述数据库的管理装置还可以包括:计算模块。上述确定模块,还可以用于在拆分模块或者合并模块判断匹配索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第一分裂阈值之前,确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间。计算模块,用于根据确定模块确定的当前的全局取值区间的两个边界值的差值与m的比值,得到第一分裂阈值。其中,m为匹配索引项的所有索引值所指向存储单元的总数。
需要说明的是,本发明实施例的第三方面及其各种可能的实现方式的各个功能单元,是为了执行上述第一方面以及第一方面的各种可选方式的数据库的查询方法,而对数据库的管理装置进行的逻辑上的划分。第三方面及其各种可能的实现方式的各个功能单元的详细描述以及有益效果分析可以参考上述第一方面及其各种可能的实现方式中的对应描述及技术效果,此处不再赘述。
第四方面,本申请提供一种数据库的管理装置,该数据库的管理装置包括:处理器、存储器和通信接口。存储器用于存储计算机执行指令,处理器、通信接口与存储器通过总线连接,当数据库的管理装置运行时,处理器执行存储器存储的计算机执行指令,以使数据库的管理装置执行如第一方面以及第一方面的各种可选方式所述的数据库的查询方法。
第五方面,提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当第四方面中的数据库的管理装置的处理器执行该程序代码时,数据库的管理装置执行如第一方面以及第一方面的各种可选方式所述的数据库的查询方法。
上述第三方面和第四方面中数据库的管理装置的各个模块的详细描述和相应技术效果分析可参见上述第一方面及其各种可能的实现方式中的详细描述,本发明实施例这里不再赘述。
第六方面,本申请提供一种数据库的管理装置,该数据库包括多个存储单元,该数据库的管理装置包括:接收模块、第一保存模块、生成模块和第二保存模块。其中,接收模块,用于接收存储请求。第一保存模块,用于将接收模块接收的存储请求中携带的待存储数据保存至数据库中的至少一个第一存储单元。生成模块,用于生成第一索引项,第一索引项中包含第一索引键和至少一个第一索引值,至少一个第一索引值指向至少一个第一存储单元,第一索引键用于指示待存储数据在至少一个第一存储单元所保存的数据中的取值区间。第二保存模块,用于在数据库的索引中保存生成模块生成的第一索引项。
在第六方面的一种实现方式中,上述数据库的管理装置还可以包括:确定模块和拆分模块。其中,确定模块,用于在第二保存模块保存第一索引项之前,从数据库的索引中确定出第二索引项,第二索引项中的索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集。拆分模块,用于若生成模块生成的第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者确定模块确定的第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,则根据第一索引项中的索引键所指示的取值区间的两个边界值和第二索引项中的索引键所指示的取值区间的两个边界值,拆分第一索引项和/或第二索引项,得到至少两个第一子索引项。上述第二保存模块,具体可以用于采用至少两个第一子索引项更新保存的第二索引项。
在第六方面的一种实现方式中,上述数据库的管理装置还可以包括:计算模块。上述确定模块,还可以用于在拆分模块判断第一索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第二分裂阈值之前,确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间。计算模块,用于计算当前的全局取值区间的两个边界值的差值与q的比值,得到第二分裂阈值。其中,q为第一索引项的所有索引值所指向存储单元的总数。
在第六方面的一种实现方式中,上述数据库的管理装置还可以包括:合并模块。合并模块,用于若生成模块生成的第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,且确定模块确定的第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,则合并第一索引项和第二索引项。上述第二保存模块,具体可以用于采用合并模块合并后的索引项更新保存的第二索引项。
在第六方面的一种实现方式中,上述数据库的管理装置还可以包括:拆分模块。拆分模块,用于在第二保存模块保存第一索引项之前,若生成模块生成的第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值,则将第一索引项拆分为k个子索引项,上述第二保存模块,具体可以用于保存k个子索引项,2≤k≤n,n为第一索引项的所有索引值所指向存储单元的总数。
在第六方面的一种实现方式中,上述数据库的管理装置还可以包括:计算模块。上述确定模块,还可以用于在拆分模块判断第一索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第三分裂阈值之前,确定当前的全局取值区间,该当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间。计算模块,用于计算当前的全局取值区间的两个边界值的差值与n的比值,得到第三分裂阈值。
需要说明的是,本发明实施例的第六方面及其各种可能的实现方式的各个功能单元,是为了执行上述第二方面以及第二方面的各种可选方式的数据库的存储方法,而对数据库的管理装置进行的逻辑上的划分。第六方面及其各种可能的实现方式的各个功能单元的详细描述以及有益效果分析可以参考上述第二方面及其各种可能的实现方式中的对应描述及技术效果,此处不再赘述。
第七方面,本申请提供一种数据库的管理装置,该数据库的管理装置包括:处理器、存储器和通信接口。存储器用于存储计算机执行指令,处理器、通信接口与存储器通过总线连接,当数据库的管理装置运行时,处理器执行存储器存储的计算机执行指令,以使数据库的管理装置执行如第二方面以及第二方面的各种可选方式所述的数据库的存储方法。
第八方面,提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当第七方面中的数据库的管理装置的处理器执行该程序代码时,数据库的管理装置执行如第二方面以及第二方面的各种可选方式所述的数据库的存储方法。
上述第六方面和第七方面中数据库的管理装置的各个模块的详细描述和相应技术效果分析可参见上述第二方面及其各种可能的实现方式中的详细描述,本发明实施例这里不再赘述。
附图说明
图1为本发明实施例提供的一种数据库的管理装置的结构示意图;
图2为本发明实施例提供的一种数据库的存储方法流程图;
图3为本发明实施例提供的另一种数据库的存储方法流程图;
图4为本发明实施例提供的另一种数据库的存储方法流程图;
图5为本发明实施例提供的一种数据库的管理装置拆分索引项的实例示意图;
图6为本发明实施例提供的一种数据库的查询方法流程图;
图7为本发明实施例提供的另一种数据库的查询方法流程图;
图8为本发明实施例提供的另一种数据库的管理装置拆分索引项的实例示意图;
图9为本发明实施例提供的另一种数据库的查询方法流程图;
图10为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图11为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图12为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图13为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图14为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图15为本发明实施例提供的另一种数据库的管理装置的结构示意图;
图16为本发明实施例提供的另一种数据库的管理装置的结构示意图。
具体实施方式
本发明实施例提供的数据库的存储、查询方法及装置可以应用于数据库中的数据存储和查询过程中,具体的应用于根据索引中的索引项存储和查询数据的过程中。
本发明实施例中的数据库包括多个存储单元,该多个存储单元用于存储数据。该数据库的索引中可以包含多个索引项,每个索引项中包含索引键和至少一个索引值,该至少一个索引值中的每个索引值指向数据库中的一个存储单元,索引键用于指示索引项对应的数据在第一数据中的取值区间,该第一数据为至少一个索引值指向的存储单元所保存的数据。
如表1所示,其以表格的方式给出本发明实施例提供的一种索引的实例。如表1所示的索引表对应的索引可以包括n个索引项,每个索引项中包含索引键(英文:Key)和至少一个索引值(英文:Value),n≥2。
表1
以如表1所示的索引项1为例,该索引项1可以包括三个索引值(索引值1-1、索引值1-2和索引值1-3)。其中,索引值1-1指向存储单元a,索引值1-2指向存储单元b,索引值1-3指向存储单元c。
如表1所示的索引项1的索引键可以用于指示索引项1对应的数据在第一数据中的取值区间[min1,max1]。此时,第一数据可以为索引值1-1指向的存储单元a所保存的数据、索引值1-2指向的存储单元b所保存的数据和索引值1-3指向的存储单元c所保存的数据。即根据索引项1查询数据时,需要读取的数据可以包括:如表1中索引值1-1指向的存储单元a中保存的取值区间为[min1,max1]的数据、索引值1-2指向的存储单元b中保存的取值区间为[min1,max1]的数据,以及引值1-3指向的存储单元c中保存的取值区间为[min1,max1]的数据。
示例性的,上述索引值可以为指向存储单元的指针,或者索引值可以为存储单元的地址。
本发明实施例提供的数据库的存储、查询方法可以应用于冯诺依曼结构的计算机。本发明实施例提供的数据库的存储、查询方法的执行主体可以为数据库的管理装置,该数据库的管理装置可以为冯诺依曼结构的计算机。该计算机可以为能够用于存储或查询数据库中的数据的终端设备或者服务器,或者上述计算机可以为上述数据库的管理设备,本发明实施例对此不做限定。
图1为本发明实施例提供的一种数据库的管理装置的结构示意图,本发明实施例提供的数据库的管理装置可以用于实施本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明各实施例。本发明实施例以数据库管理装置为计算机(英文:Personal Computer,简称:PC)为例进行说明,图1示出的是与本发明各实施例相关的PC 10的部分结构的框图。
如图1所示,PC 10可以包括:中央处理器(英文:Central Processing Unit,简称:CPU)11、存储器12、输入设备13、输出设备14、总线15等。
其中,存储器12可以用于存储计算机程序代码、运行数据和/或模块。如,存储器12可以用于存储本发明实施例提供的数据库的查询方法或者数据库的存储方法所对应的计算机程序代码,存储器12还可以用于存储本发明实施例中的索引。其中,本发明实施例所述的数据库可以保存在存储器12中,或者数据库可以保存在PC 10之外的其他存储设备中。
CPU 11是计算机的控制中心,其可以通过运行或执行存储在存储器12中的计算机程序代码和/或各个模块,并调用存储在存储器12中的数据,从而执行计算机的各种功能应用并进行数据处理。例如,CPU 11可以运行存储器12中保存的计算机程序代码,以执行本发明实施例提供的数据库的查询方法,从数据库中查询待查询数据,或者执行本发明实施例提供的数据库的存储方法,将待存储数据保存至数据库中。
其中,CPU 11在计算机主板的主板芯片组上运行。例如,如图1所示,CPU 11可以在计算机主板的输入/输出(英文:Input/Output,简称:I/O)北桥芯片和I/O南桥芯片上运行。其中,I/O北桥芯片可以通过总线15与CPU 11直接相连,用于控制与CPU 11、控制加速图像接口(英文:Accelerated Graphics Port,简称:AGP)、存储器12接口之间的数据通信;I/O南桥芯片可以通过总线15与I/O北桥芯片相连,用于控制计算机主板的I/O部分,如I/O接口和通用串行总线(英文:Universal Serial Bus,简称:USB)等。
输入设备13可以用于接收输入的信息,如本发明实施例中的携带有查询信息的数据查询请求。例如,输入设备13可以为键盘、鼠标等。
输出设备14可以用于输出CPU 11的运行结果,如本发明实施例中的待查询数据。例如,输出设备14可以为显示器、音频通道等。
本发明实施例提供的一种数据库的存储、查询方法及装置,可以减少需要读取的冗余数据,进而可以减少查询数据的开销,提高查询数据的效率。
下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种数据库的存储、查询方法及装置进行详细地说明。
本发明实施例提供一种数据库的存储方法,如图2所示,该数据库的存储方法包括:
S201、数据库的管理装置接收存储请求。
S202、数据库的管理装置将存储请求中携带的待存储数据保存至数据库中的至少一个第一存储单元。
其中,上述存储请求中可以携带有待存储数据以及待存储数据的目的存储地址,数据库的管理装置可以根据待存储数据的目的存储地址,将待存储数据保存至数据库中的至少一个第一存储单元。待存储数据的目的存储地址即上述至少一个第一存储单元在数据库中的地址。
S203、数据库的管理装置生成第一索引项,该第一索引项中包含第一索引键和至少一个第一索引值,该至少一个第一索引值指向至少一个第一存储单元,第一索引键用于指示待存储数据在至少一个第一存储单元所保存的数据中的取值区间。
其中,数据库的管理装置可以为待存储数据生成索引项(即第一索引项),该第一索引项中包含第一索引键和至少一个第一索引值,这样,数据库的管理装置在查询上述待存储数据时,便可以根据该第一索引项查询待存储数据。
示例性的,第一索引项具体可以为{[min1,max1],{s4}},其中,第一索引项中包含的第一索引键所指示的取值区间为[min1,max1],第一索引项中包含的一个第一索引值为s4。
S204、数据库的管理装置在数据库的索引中保存第一索引项。
其中,第一索引项可以用于查询保存在数据库中的上述待存储数据。
本发明实施例提供的数据库的存储方法,不仅可以在数据库中保存待存储数据,还可以为该待存储数据生成并保存索引项(即第一索引项)。由于第一索引项中的索引键可以用于指示待存储数据在至少一个第一存储单元所保存的数据中的取值区间;因此,在查询保存在数据库中的待存储数据时,可以仅读取第一索引项中的索引值指向的存储单元(即至少一个第一存储单元)保存的数据中,第一索引项中的索引键所指示的取值区间所对应的数据;而不需要逐一读取至少一个第一存储单元中保存的所有数据。如此,可以避免读取较多的冗余数据(即第一索引项中的索引值所指向的存储单元中保存的除上述待存储数据之外的其他数据),可以减少查询数据的开销,提高查询数据的效率。
进一步的,索引项(如第一索引项)中的索引键所指示的取值区间的两个边界值的差值越大,则表示第一索引项对应的数据越多。如果第一索引项对应的数据太多,那么根据第一索引项查询数据时,需要读取的冗余数据可能也会相应增多,而读取较多的冗余数据会导致查询数据时的开销较大,影响查询数据的效率。
针对上述问题,数据库的管理装置可以在数据库的索引中保存第一索引项之前,如果确定第一索引项中的索引键所指示的取值区间大于一定分裂阈值,则可以拆分第一索引项。如图3所示,在图2所示的S204之前,本发明实施例提供的数据库的存储方法还可以包括S301:
S301、数据库的管理装置判断第一索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第三分裂阈值。
其中,在本发明实施例的第一种实现方式中,第三分裂阈值可以为预先设定的阈值。
在本发明实施例的第二种实现方式中,数据库的管理装置可以计算当前的全局取值区间的两个边界值的差值与n的比值,以得到第三分裂阈值,n为第一索引项的所有索引值指向的数据库中的存储单元的总数。
即在第二种实现方式中,第三分裂阈值可以为将当前的全局取值区间平均划分为n个取值区间后,该n个取值区间中任一取值区间的两个边界值的差值。
其中,当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间,上述所有已保存的索引项中的索引键所指示的取值区间中包含第一索引项中的索引键所指示的取值区间。
示例性的,第一索引项{[min1,max1],{s4}}中的索引键所指示的取值区间为[min1,max1],当前的全局取值区间可以表示为[min X,max X],则min X≤min1,且max X≥max1;并且第一索引项中的索引键所指示的取值区间的两个边界值为min1和max1,当前的全局取值区间的两个边界值为min X和max X,则第三分裂阈值为(max X-min X)/n,只要max1与min1的差值大于(max X-min X)/n,数据库的管理装置便可以将第一索引项拆分为k(2≤k≤n)个子索引项。
具体的,若第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值,则表示第一索引项对应的数据较多,可以继续执行S302;若第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第三分裂阈值,则表示第一索引项对应的数据较少,可以继续执行S204:
S302、数据库的管理装置将第一索引项拆分为k个子索引项。
其中,2≤k≤n,n为第一索引项的所有索引值所指向存储单元的总数。
相应的,如图3所示,图2中的S204可以替换为S204a:
S204a、数据库的管理装置保存k个子索引项。
其中,由于该k个子索引项是由数据库的管理装置对第一索引项拆分得到的,因此该k个子索引项的所有索引值所指向的存储单元中保存的与该k个子索引项对应的数据包含了第一索引项的所有索引值所指向的存储单元中保存的与第一索引项对应的数据。如此,数据库的管理装置保存k个子索引项后,可以保存第一索引项对应的所有数据。
并且,在数据库的管理装置将第一索引项拆分为k个子索引项后,该k个子索引项中每个子索引项对应的数据少于第一索引项对应的数据;因此,数据库的管理装置从k个子索引项中的任一子索引项的所有索引值所指向的存储单元中保存的与该k个子索引项中的任一子索引项对应的数据中读取待存储数据时,所需要读取的数据少于从第一索引项的所有索引值所指向的存储单元中保存的与该第一索引项对应的数据中读取待存储数据时,所需要读取的数据,即通过本方案,可以减少查询数据时所要读取的数据,减少查询数据的开销,提高查询数据的效率。
进一步的,当待保存的第一索引项中的索引键所指示的取值区间与已保存的第二索引项中的索引键所指示的取值区间存在交集时,如果同时保存第一索引项和第二索引项,则会存在针对同一数据保存两个索引项的问题。
并且,如果第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值时,则表示第一索引项或者第二索引项对应的数据较多。
本发明实施例中,数据库的管理装置可以在数据库的索引中保存第一索引项之前,拆分第一索引项和/或第二索引项,以解决上述针对同一数据保存两个索引项的问题和第一索引项或者第二索引项对应的数据较多的问题。具体的,如图4所示,在图2所示的S204之前,本发明实施例提供的数据库的存储方法还可以包括S401:
S401、数据库的管理装置判断数据库的索引中是否包含第二索引项,第二索引项中的索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集。
其中,数据库的管理装置可以对比第一索引项中的索引键所指示的取值区间和数据库的索引中每个索引项中的索引键所指示的取值区间,判断数据库的索引中是否包含索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集的第二索引项,该第二索引项中包含索引键和至少一个索引值。
第二索引项中的索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集具体可以为:第二索引项中的索引键所指示的取值区间的最大边界值大于或者等于第一索引项中的索引键所指示的取值区间的最小边界值,且第二索引项中的索引键所指示的取值区间的最小边界值小于或者等于第一索引项中的索引键所指示的取值区间的最大边界值。
示例性的,假设第一索引项可以为{[min1,max1],{s4}},第一索引项中的索引键所指示的取值区间为[min1,max1];第二索引项为{[min2,max2],{s5}},第二索引项中的索引键所指示的取值区间为[min2,max2]。
如图5所示,第二索引项中的索引键所指示的取值区间与第一索引项中的索引键所指示的取值区间存在交集具体可以分为以下六种情况:
第一种情况:min2<min1,且min1<max2<max1;[min1,max1]与[min2,max2]的交集为[min1,max2]。
第二种情况:min2=min1,且min1<max2<max1;[min1,max1]与[min2,max2]的交集为[min2,max2]。
第三种情况:min2>min1,且max2<max1;[min1,max1]与[min2,max2]的交集为[min2,max2]。
第四种情况:min2>min1,且max2=max1;[min1,max1]与[min2,max2]的交集为[min2,max2]。
第五种情况:min1<min2<max1,且max2>max1;[min1,max1]与[min2,max2]的交集为[min2,max1]。
第六种情况:min2<min1,且max2>max1;[min1,max1]与[min2,max2]的交集为[min1,max1]。
具体的,若数据库的索引中包含第二索引项,则可以继续执行S402或者S403;若数据库的索引中不包含第二索引项,则可继续执行S301及后续流程。
S402、若第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,数据库的管理装置则根据第一索引项中的索引键所指示的取值区间的两个边界值和第二索引项中的索引键所指示的取值区间的两个边界值,拆分第一索引项和/或第二索引项,得到至少两个第一子索引项。
其中,在本发明实施例的一种实现方式中,上述第二分裂阈值可以为预先设定的阈值。
在本发明实施例的另一种实现方式中,数据库的管理装置可以计算当前的全局取值区间的两个边界值的差值与q的比值,以得到第二分裂阈值,q为第一索引项的所有索引值指向的数据库中的存储单元的总数。
在上述另一种实现方式中,第二分裂阈值可以为将当前的全局取值区间平均划分为q个取值区间后,该q个取值区间中任一取值区间的两个边界值的差值。其中,当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间,上述所有已保存的索引项中的索引键所指示的取值区间中包含第一索引项中的索引键所指示的取值区间和第二索引项中的索引键所指示的取值区间。
示例性的,如图5所示,数据库的管理装置可以根据min1、max1、min2和max2,将第一索引项和/或第二索引项拆分为至少两个第一子索引项。其中,第一索引项为{[min1,max1],{s4}},第二索引项为{[min2,max2],{s5}}。
在如图5所示的第一种情况下,数据库的管理装置可以以min1和max2为分界点,将第一索引项和第二索引项拆分为三个第一子索引项:{[min2,min1],{s5}}、{[min1,max2],{s5}}和{[max2,max1],{s4}}。
在如图5所示的第二种情况下,数据库的管理装置可以以max2为分界点,将第一索引项拆分为两个第一子索引项:{[min2,max2],{s5}}和{[max2,max1],{s4}}。其中,在第二种情况下,min2=min1。
在如图5所示的第三种情况下,数据库的管理装置可以以min2和max2为分界点,将第一索引项拆分为三个第一子索引项:{[min1,min2],{s4}}、{[min2,max2],{s5}}和{[max2,max1],{s4}}。
在如图5所示的第四种情况下,数据库的管理装置可以以min2为分界点,将第一索引项拆分为两个第一子索引项:{[min1,min2],{s4}}和{[min2,max2],{s5}}。其中,在第四种情况下,max2=max1。
在如图5所示的第五种情况下,数据库的管理装置可以以min2和max1为分界点,将第一索引项和第二索引项拆分为三个第一子索引项:{[min1,min2],{s4}}、{[min2,max1],{s4}}和{[max1,max2],{s5}}。
在如图5所示的第六种情况下,数据库的管理装置可以以min1和max1为分界点,将第二索引项拆分为三个第一子索引项:{[min2,min1],{s5}}、{[min1,max1],{s4}}和{[max1,max2],{s5}}。
需要说明的是,上述至少两个第一子索引项中的任一个第一子索引项中的索引键所指示的取值区间均小于或者等于数据库的管理装置所拆分的第一索引项或者第二索引项中的索引键所指示的取值区间。
例如,以如图5所示的第一种情况为例,由于第一子索引项{[min2,min1],{s5}}和{[min1,max2],{s5}}是数据库的管理装置拆分第二索引项得到的,因此{[min2,min1],{s5}}中的索引键所指示的取值区间[min2,min1]和{[min1,max2],{s5}}中的索引键所指示的取值区间[min1,max2]均小于第二索引项中的索引键所指示的取值区间[min2,max2];由于第一子索引项{[min1,max2],{s5}}和{[max2,max1],{s4}}是数据库的管理装置拆分第一索引项得到的,因此{[min1,max2],{s5}}中的索引键所指示的取值区间[min1,max2]和{[max2,max1],{s4}}中的索引键所指示的取值区间[max2,max1]均小于第一索引项中的索引键所指示的取值区间[min1,max1]。
其中,由于索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而数据库的管理装置将第一索引项和/或第二索引项拆分为至少两个第一子索引项后,至少两个第一子索引项中任一个子索引项对应的数据则少于第一索引项和/或第二索引项对应的所有数据。
相应的,在数据库的管理装置拆分第一索引项和/或第二索引项,得到至少两个第一子索引项之后,可以保存该至少两个第一子索引项。具体的,如图4所示,图2所示的S204可以为S204b:
S204b、数据库的管理装置采用至少两个第一子索引项更新保存的第二索引项。
其中,由于至少两个第一子索引项是由第一索引项和第二索引项拆分得到的,因此该至少两个第一子索引项的所有索引值所指向的存储单元中保存的与该至少两个第一子索引项对应的数据包含了第一索引项和第二索引项的所有索引值所指向的所有存储单元中保存的与该第一索引项和第二索引项对应的所有数据。如此,数据库的管理装置采用至少两个第一子索引项更新保存的第二索引项,不仅可以保存第一索引项对应的所有数据和第二索引项对应的所有数据,还可以避免上述针对同一数据保存两个索引项的问题。
并且,如果第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者第二索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值时,则表示第一索引项或者第二索引项对应的数据较多。本发明实施例中,在数据库的管理装置将第一索引项和/或第二索引项拆分为至少两个第一子索引项后,每个第一子索引项对应的数据则少于第一索引项和/或第二索引项对应的数据;因此,数据库的管理装置从至少两个第一子索引项中的任一第一子索引项的所有索引值所指向的存储单元中保存的与该任一第一子索引项对应的数据中读取待存储数据时,所需要读取的数据少于从第一索引项和/或第二索引项的所有索引值所指向的存储单元中保存的与该第一索引项和/或第二索引项对应的数据中读取待存储数据时,所需要读取的数据,即通过本方案,可以减少需要读取的数据,进而可以减少查询数据的开销,提高查询数据的效率。
S403、若第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,且第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,数据库的管理装置则合并第一索引项和第二索引项。
示例性的,如图5所示,假设第一索引项为{[min1,max1],{s4}},第一索引项中的索引键所指示的取值区间为[min1,max1],第二索引项为{[min2,max2],{s5}},第二索引项中的索引键所指示的取值区间为[min2,max2],数据库的管理装置可以根据min1、max1、min2和max2,合并第一索引项和第二索引项。
在如图5所示的第一种情况下,数据库的管理装置可以以min1和max2为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min2,min1],{s5}}和{[min1,max1],{s4,s5}}。
在如图5所示的第二种情况下,数据库的管理装置可以以max2为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min1,max1],{s4}}和{[min2,max2],{s4,s5}}。其中,在第二种情况下,min2=min1。
在如图5所示的第三种情况下,数据库的管理装置可以以min2和max2为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min1,max1],{s4}}和{[min2,max2],{s4,s5}}。
在如图5所示的第四种情况下,数据库的管理装置可以以min2为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min1,min2],{s4}}和{[min2,max2],{s4,s5}}。其中,在第四种情况下,max2=max1。
在如图5所示的第五种情况下,数据库的管理装置可以以min2和max1为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min1,max1],{s4,s5}}和{[max1,max2],{s5}}。
在如图5所示的第六种情况下,数据库的管理装置可以以min1和max1为分界点,合并取值区间存在交集的第一索引项和第二索引项,合并后的索引项分别为:{[min2,max2],{s5}}和{[min1,max1],{s4,s5}}。
需要说明的是,上述合并后的索引项中的所有索引键所指示的取值区间小于或者等于第一索引项和第二索引项中的所有索引键所指示的取值区间。
例如,以如图5所示的第一种情况为例,由于合并后的索引项{[min2,min1],{s5}}和{[min1,max1],{s4,s5}}是数据库的管理装置合并第一索引项和第二索引项得到的,因此{[min2,min1],{s5}}中的索引键所指示的取值区间[min2,min1]小于第一索引项和第二索引项的所有索引键所指示的取值区间,{[min1,max1],{s4,s5}}中的索引键所指示的取值区间[min1,max1]小于第一索引项和第二索引项的所有索引键所指示的取值区间。
其中,由于索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而数据库的管理装置将第一索引项和第二索引项合并后,合并后的索引项对应的数据则少于第一索引项和第二索引项对应的所有数据。
相应的,在数据库的管理装置合并第一索引项和第二索引项之后,可以保存该合并后的索引项。具体的,如图4所示,图2所示的S204可以为S204c:
S204c、数据库的管理装置采用合并后的索引项更新保存的第二索引项。
其中,当第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值,且第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第二分裂阈值时,则表示第一索引项或者第二索引项对应的数据较少。
当待保存的第一索引项中的索引键所指示的取值区间与已保存的第二索引项中的索引键所指示的取值区间存在交集,且第一索引项和第二索引项对应的数据均较少时,则可以确定第一索引项和第二索引项对应的数据基本相同。如此,若直接保存第一索引项,则会由于同时保存了第一索引项和第二索引项导致针对同一数据保存两个索引项的问题。上述方案中,可以对第一索引项和第二索引项进行合并,并采用合并后的索引项更新保存的第二索引项,如此便可以解决上述针对同一数据保存两个索引项的问题。
本发明实施例还提供一种数据库的查询方法,该数据库的查询方法可以基于采用上述数据库的存储方法存储数据和索引项后,查询数据库中的数据。如图6所示,该数据库的查询方法可以包括:
S601、数据库的管理装置接收查询请求,该查询请求用于数据库的管理装置从数据库中查询符合查询条件的待查询数据。
其中,上述查询请求可以为数据库查询语句,该数据库查询语句中携带有查询信息,该查询信息中包含待查询数据的查询对象和查询条件。
示例性的,上述数据库查询语句可以为结构化查询语言(英文:Structured QueryLanguage,简称:SQL)语句。例如,SQL语句可以为:select c1,c2from tab1where c1=xand c1<y,该SQL语句中携带的查询信息包含待查询数据的查询对象c1和c2、查询条件c1=x andc1<y。其中,待查询数据为满足查询条件c1=x and c1<y(即c1=x,并且c1<y)的查询对象c1和c2。
进一步的,上述查询信息还可以包括待查询数据所在数据块的标识。例如,SQL语句select c1,c2from tab1where c1=x and c1<y中可以包括待查询数据所在数据块的标识tab1。
S602、数据库的管理装置确定与查询条件对应的查询数据区间,并从多个索引项中确定出匹配索引项,该匹配索引项中的索引键所指示的取值区间包含查询数据区间。
例如,当查询信息对应的查询语句为select c1,c2from tab1wherec1>x and c1<y时,该查询信息中包含的查询条件为c1>x and c1<y,则数据库的管理装置确定出的与查询信息对应的查询数据区间可以为[x,y]。当查询信息对应的查询语句为select c1,c2from tab1where c1=x时,该查询信息中包含的查询条件为c1=x,则该查询条件对应的查询数据区间为[x-1,x]或[x,x+1]。
其中,由于每个索引项中的索引键均可以用于指示数据的取值区间,即该索引项的至少一个索引值指向的存储单元所保存的数据中的取值区间,并且上述查询数据区间也是数据的取值区间;因此,数据库的管理装置可以对比查询数据区间的边界值和索引中各个索引项中的索引键所指示的取值区间的边界值,确定出索引键所指示的取值区间包含该查询数据区间的索引项(即匹配索引项)。
示例性的,匹配索引项中的索引键所指示的取值区间包含查询数据区间具体可以为:匹配索引项中的索引键所指示的取值区间的最小边界值小于或者等于查询数据区间的最小边界值,匹配索引项中的索引键所指示的取值区间的最大边界值大于或者等于查询数据区间的最大边界值。其中,以取值区间[a,b]为例,a为取值区间[a,b]的最小边界值,b为取值区间[a,b]的最大边界值。
例如,假设上述匹配索引项中的索引键所指示的取值区间为[a,b],查询数据区间[x,y],则[a,b]的两个边界值a、b和[x,y]的边界值x、y应该满足:a≤x且b≥y。假设上述匹配索引项中的索引键所指示的取值区间为[a,b],查询数据区间为[x-1,x],则[a,b]的两个边界值a、b和[x,y]的边界值x、y应该满足:a≤x-1且b≥x。假设上述匹配索引项中的索引键所指示的取值区间为[a,b],查询数据区间为[x,x+1],则[a,b]的两个边界值a、b和[x,y]的边界值x、y应该满足:a≤x且b≥x+1。
S603、数据库的管理装置根据匹配索引项中的索引键所指示的取值区间,从匹配索引项中的索引值指向的存储单元中,读取待查询数据。
本发明实施例提供一种数据库的查询方法,由于索引项的索引键用于指示索引项对应的数据在第一数据(即至少一个索引值指向的存储单元所保存的数据)中的取值区间,因此,本发明实施例中的数据库的管理装置在读取待查询数据时,可以仅读取匹配索引项中的索引值指向的存储单元保存的数据中、匹配索引项中的索引键所指示的取值区间所对应的数据;而不需要逐一读取索引项所指示的存储单元中保存的所有数据。如此,可以避免读取较多的冗余数据(即匹配索引项中的索引值所指向的存储单元中保存的除上述待查询数据之外的其他数据),可以减少查询数据的开销,提高查询数据的效率。
进一步的,匹配索引项中的索引键所指示的取值区间包含查询数据区间,可能会存在由于匹配索引项中的索引键所指示的取值区间远大于查询数据区间,而导致在从匹配索引项中的所有索引值指向的存储单元中保存的与该匹配索引项对应的数据中读取待查询数据时,需要读取较多的冗余数据(即匹配索引项的所有索引值指向的存储单元中保存的与该匹配索引项对应、除上述待查询数据之外的其他数据)。其中,读取较多的冗余数据会导致查询数据时的开销较大,影响查询数据的效率。此时,数据库的管理装置可以在匹配索引项中的索引键所指示的取值区间的两个边界值的差值大于第一分裂阈值时,将匹配索引项拆分为至少两个子索引项。具体的,如图7所示,在图6所示的S603之前,本发明实施例的方法还可以包括S701-S703:
S701、数据库的管理装置判断匹配索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第一分裂阈值。
具体的,若匹配索引项中的索引键所指示的取值区间的两个边界值的差值大于第一分裂阈值,则表示该匹配索引项对应的数据较多,则可以继续执行S702;若匹配索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于第一分裂阈值,则表示该匹配索引项对应的数据较少,则可以继续执行S603:
S702、数据库的管理装置根据匹配索引项中的索引键所指示的取值区间的两个边界值和查询数据区间的两个边界值,将匹配索引项拆分为至少两个子索引项。
其中,在本发明实施例的一种实现方式中,上述第一分裂阈值可以为预先设定的阈值。
在本发明实施例的另一种实现方式中,数据库的管理装置可以计算当前的全局取值区间的两个边界值的差值与m的比值,以得到第一分裂阈值,m为匹配索引项的所有索引值所指向存储单元的总数。
即在上述另一种实现方式中,第一分裂阈值为将当前的全局取值区间平均划分为m个取值区间后,该m个取值区间中任一取值区间的两个边界值的差值。其中,当前的全局取值区间包含所有已保存的索引项中的索引键所指示的取值区间,上述所有已保存的索引项中的索引键所指示的取值区间中包含匹配索引项中的索引键所指示的取值区间。
例如,假设当前保存了两个索引项:索引项1和索引项2,索引项1为上述匹配索引项。索引项1的索引键所指示的取值区间为[5,7],索引项2的索引键所指示的取值区间为[8,9],数据库的管理装置则可以确定当前的全局取值区间为[5,9]。其中,当前的全局取值区间[5,9]包含所有已保存的索引项中的索引键所指示的取值区间[5,7]和[8,9]。
需要说明的是,本发明实施例中当前的全局取值区间具体可以为包含所有已保存的索引项中的索引键所指示的取值区间的最小取值区间。
示例性的,由于匹配索引项中的索引键所指示的取值区间包含查询数据区间,因此,数据库的管理装置可以将查询数据区间的两个边界值作为分界点,将匹配索引项拆分为至少两个子索引项。
例如,如图8所示,假设匹配索引项为{[a,b],{s2,s3}},查询数据区间为[x,y],a≤x<y≤b,数据库的管理装置可以将x和/或y作为分界点,将匹配索引项拆分为至少两个子索引项。
具体的,如图8所示,当a<x<y<b时,数据库的管理装置可以将x和y作为分界点,将匹配索引项拆分为三个子索引项。这三个子索引项分别为:{[a,x],{s2,s3}}、{[x,y],{s2,s3}}和{[y,b],{s2,s3}}。
如图8所示,当a=x,x<y<b时,数据库的管理装置可以将y作为分界点,将匹配索引项拆分为两个子索引项。这两个子索引项分别为:{[a,y],{s2,s3}}和{[y,b],{s2,s3}}。
如图8所示,当a<x<y,且y=b时,数据库的管理装置可以将x作为分界点,将匹配索引项拆分为两个子索引项。这两个子索引项分别为:{[a,x],{s2,s3}}和{[x,y],{s2,s3}}。
其中,由于匹配索引项中的索引键所指示的取值区间包含查询数据区间,即匹配索引项中的索引键所指示的取值区间大于或者等于查询数据区间,且至少两个子索引项是根据匹配索引项中的索引键所指示的取值区间的两个边界值和查询数据区间的两个边界值,拆分匹配索引项得到的,因此该至少两个子索引项中的一个子索引项(即匹配子索引项)的索引键所指示的取值区间可以包含查询数据区间,即匹配子索引项中的索引键所指示的取值区间大于或者等于查询数据区间。
例如,以如图8所示的a≤x<y≤b情况为例,数据库的管理装置拆分得到的三个子索引项{[a,x],{s2,s3}}、{[x,y],{s2,s3}}和{[y,b],{s2,s3}}中,子索引项{[x,y],{s2,s3}}的索引键所指示的取值区间[x,y]包含查询数据区间[x,y]。
其中,由于索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而数据库的管理装置将匹配索引项拆分为至少两个子索引项后,至少两个子索引项中任一个子索引项对应的数据则少于匹配索引项对应的数据。
例如,以如图8所示的a≤x<y≤b情况为例,由于上述三个子索引项{[a,x],{s2,s3}}、{[x,y],{s2,s3}}和{[y,b],{s2,s3}}的索引键所指示的取值区间[a,x]、[x,y]和[y,b]均小于[a,b],因此这三个子索引项对应的数据则少于索引项{[a,b],{s2,s3}}对应的数据。
S703、数据库的管理装置从至少两个子索引项中确定出匹配子索引项,该匹配子索引项中的索引键所指示的取值区间包含查询数据区间。
其中,数据库的管理装置可以将至少两个子索引项中、包含索引键所指示的取值区间包含查询数据区间的子索引项确定为匹配子索引项。
例如,以如图8所示的a≤x<y≤b情况为例,由于子索引项{[x,y],{s2,s3}}的索引键所指示的取值区间[x,y]包含查询数据区间[x,y],因此数据库的管理装置可以将子索引项{[x,y],{s2,s3}}确定为匹配子索引项。
数据库的管理装置在确定出匹配子索引项之后,可以从匹配子索引项中的索引值指向的存储单元中读取待查询数据。具体的,如图7所示,图6所示的S603可以替换为S603a:
S603a、数据库的管理装置根据匹配子索引项中的索引键所指示的取值区间,从匹配子索引项中的索引值指向的存储单元中,读取待查询数据。
其中,由于至少两个子索引项中任一个子索引项(如匹配子索引项)对应的数据少于匹配索引项对应的数据,并且匹配子索引项和匹配索引项中的索引键所指示的取值区间均包含查询数据区间;因此,可以确定匹配子索引项的所有索引值所指向的存储单元中保存的冗余数据(即匹配子索引项的所有索引值所指向的存储单元中保存的与该匹配子索引项对应、除上述待查询数据之外的其他数据)少于匹配索引项的所有索引值所指向的存储单元中保存的冗余数据(即匹配索引项的所有索引值所指向的存储单元中保存的与该匹配索引项对应、除上述待查询数据之外的其他数据)。数据库的管理装置从匹配子索引项的所有索引值所指向的存储单元中保存的与该匹配子索引项对应的数据中读取待查询数据,可以进一步的减少需要读取的冗余数据,进而可以进一步的减少查询数据的开销,提高查询数据的效率。
进一步的,在数据库的管理装置将匹配索引项拆分为至少两个子索引项之后,数据库的管理装置还可以保存上述至少两个子索引项。具体的,如图9所示,在图7所示的S702之后,本发明实施例的方法还可以包括S901:
S901、数据库的管理装置采用至少两个子索引项更新保存的匹配索引项。
其中,索引项中的索引键所指示的取值区间的两个边界值的差值越大,则表示该索引项对应的数据越多,而将匹配索引项拆分为至少两个子索引项后,至少两个子索引项中任一个子索引项对应的数据则少于匹配索引项对应的数据。
上述主要从数据库的管理装置的角度对本发明实施例提供的方案进行了介绍。可以理解的是,数据库的管理装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的数据库的管理装置及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对数据库的管理装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本发明实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图10示出了上述实施例中所涉及的数据库的管理装置的一种可能的结构示意图。该数据库的管理装置1000可以包括:接收模块1001、第一保存模块1002、生成模块1003和第二保存模块1004。
其中,接收模块1001用于支持上述实施例中的S201,和/或用于本文所描述的技术的其它过程。第一保存模块1002用于支持上述实施例中的S202,和/或用于本文所描述的技术的其它过程。生成模块1003用于支持上述实施例中的S203,和/或用于本文所描述的技术的其它过程。第二保存模块1004用于支持上述实施例中的S204、S204a、S204b和S204c,和/或用于本文所描述的技术的其它过程。
进一步的,在本发明实施例的第一种应用场景中,如图11所示,图10所示的数据库的管理装置1000还可以包括:判断模块1005和拆分模块1006。其中,判断模块1005用于支持上述实施例中的S301,和/或用于本文所描述的技术的其它过程。拆分模块1006用于支持上述实施例中的S302,和/或用于本文所描述的技术的其它过程。
进一步的,在本发明实施例的第二种应用场景中,如图12所示,图10所示的数据库的管理装置1000还可以包括:拆分模块1006、确定模块1007和合并模块1008。其中,确定模块1007用于支持上述实施例中的S401,和/或用于本文所描述的技术的其它过程。拆分模块1006用于支持上述实施例中的S402,和/或用于本文所描述的技术的其它过程。合并模块1008用于支持上述实施例中的S403,和/或用于本文所描述的技术的其它过程。
上述数据库的管理装置1000还可以包括:计算模块。上述确定模块1007还可以用于确定当前的全局取值区间。计算模块,用于计算当前的全局取值区间的两个边界值的差值与q的比值,得到第二分裂阈值,计算当前的全局取值区间的两个边界值的差值与n的比值,得到第三分裂阈值。
当然,本发明实施例提供的数据库的管理装置1000包括但不限于上述所述的模块,例如数据库的管理装置1000中还可以包括发送模块和存储模块。存储模块可以用于存储本发明实施例中的索引。发送模块,可以用于发送查询的待查询数据。
在采用集成的单元的情况下,上述第一保存模块1002、生成模块1003和第二保存模块1004、计算模块、确定模块1007、拆分模块1006、合并模块1008和判断模块1005等可以集成在一个处理模块中实现,该处理模块可以是处理器或控制器,例如可以是CPU,通用处理器,数字信号处理器(英文:Digital Signal Processor,简称:DSP),专用集成电路(英文:Application-Specific Integrated Circuit,简称:ASIC),现场可编程门阵列(英文:Field Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种举例说明逻辑方框,模块和电路。处理单元也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。发送模块和接收模块1001可以集成在一个通信模块中实现,该通信模块可以是通信接口。存储模块可以是存储器。
当上述处理模块为处理器,存储模块为存储器,通信模块为收发器时,本发明实施例所涉及的数据库的管理装置1000可以为图13所示的数据库的管理装置1300。如图13所示,数据库的管理装置1300包括:处理器1301、存储器1302和通信接口1303。其中,处理器1301、存储器1302和通信接口1303通过总线1304相互连接。
其中,总线1304可以是外设部件互连标准(英文:Peripheral ComponentInterconnect,简称:PCI)总线或扩展工业标准结构(英文:Extended Industry StandardArchitecture,简称:EISA)总线等。上述总线1304可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
数据库的管理装置1300可以包括一个或多个处理器1301,即数据库的管理装置1300可以包括多核处理器。
本发明实施例还提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当数据库的管理装置1300的处理器1301执行该程序代码时,该数据库的管理装置1300执行图2-图4中任一附图中的相关方法步骤。
其中,本发明实施例提供的数据库的管理装置1300中各个模块的详细描述以及各个模块或单元执行图2-图4中任一附图中的相关方法步骤后所带来的技术效果可以参考本发明方法实施例中的相关描述,此处不再赘述。
本发明实施例还提供一种数据库的管理装置1400,该数据库包括多个存储单元,数据库的索引中包含多个索引项,每个索引项中包含索引键和至少一个索引值,至少一个索引值中的每个索引值指向数据库中的一个存储单元,索引键用于指示索引项对应的数据在第一数据中的取值区间,该第一数据为至少一个索引值指向的存储单元所保存的数据。图14示出了上述实施例中所涉及的数据库的管理装置的一种可能的结构示意图,该数据库的管理装置1400包括:接收模块1401、确定模块1402和读取模块1403。
其中,接收模块1401用于支持上述实施例中的S601,和/或用于本文所描述的技术的其它过程。确定模块1402用于支持上述实施例中的S602和S703,和/或用于本文所描述的技术的其它过程。读取模块1403用于支持上述实施例中的S603和S603a,和/或用于本文所描述的技术的其它过程。
进一步的,如图15所示,图14所示的数据库的管理装置1400还可以包括:拆分模块1404和存储模块1405。其中,拆分模块1404用于支持上述实施例中的S701、S702,和/或用于本文所描述的技术的其它过程。存储模块1405用于支持上述实施例中的S901,和/或用于本文所描述的技术的其它过程。
上述数据库的管理装置1400还可以包括:计算模块。上述确定模块1402还可以用于确定当前的全局取值区间。计算模块,用于计算当前的全局取值区间的两个边界值的差值与m的比值,得到第一分裂阈值。
当然,本发明实施例提供的数据库的管理装置1400包括但不限于上述所述的模块,例如数据库的管理装置1400中还可以包括发送模块。发送模块,可以用于发送查询的待查询数据。
在采用集成的单元的情况下,上述确定模块1402和读取模块1403和拆分模块1404等可以集成在一个处理模块中实现,该处理模块可以是处理器或控制器,例如可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种举例说明逻辑方框,模块和电路。处理单元也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。发送模块和接收模块1401可以集成在一个通信模块中实现,该通信模块可以是通信接口。存储模块1405可以是存储器。
当上述处理模块为处理器,存储模块为存储器,通信模块为收发器时,本发明实施例所涉及的数据库的管理装置1400可以为图16所示的数据库的管理装置1600。如图16所示,数据库的管理装置1600包括:处理器1601、存储器1602和通信接口1603。其中,处理器1601、存储器1602和通信接口1603通过总线1604相互连接。
其中,总线1604可以是PCI总线或EISA总线等。上述总线1604可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
数据库的管理装置1600可以包括一个或多个处理器1601,即数据库的管理装置1600可以包括多核处理器。
本发明实施例还提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当数据库的管理装置1600的处理器1601执行该程序代码时,该数据库的管理装置1600执行图6、图7和图9中任一附图中的相关方法步骤。
其中,本发明实施例提供的数据库的管理装置1600中各个模块的详细描述以及各个模块或单元执行图6、图7和图9中任一附图中的相关方法步骤后所带来的技术效果可以参考本发明方法实施例中的相关描述,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据库的查询方法,其特征在于,所述数据库包括多个存储单元,所述数据库的索引中包含多个索引项,每个索引项中包含索引键和至少一个索引值,所述至少一个索引值中的每个索引值指向所述数据库中的一个存储单元,所述索引键用于指示所述索引项对应的数据在第一数据中的取值区间,所述第一数据为所述至少一个索引值指向的存储单元所保存的数据,所述方法包括:
接收查询请求,所述查询请求用于从所述数据库中查询符合查询条件的待查询数据;
确定与所述查询条件对应的查询数据区间,并从所述多个索引项中确定出匹配索引项,所述匹配索引项中的索引键所指示的取值区间包含所述查询数据区间;
确定所述匹配索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第一分裂阈值;
若没有大于所述第一分裂阈值,根据所述匹配索引项中的索引键所指示的取值区间,从所述匹配索引项中的索引值指向的存储单元中,读取所述待查询数据;
若大于所述第一分裂阈值,则根据所述匹配索引项中的索引键所指示的取值区间的两个边界值和所述查询数据区间的两个边界值,将所述匹配索引项拆分为至少两个子索引项;
从所述至少两个子索引项中确定出匹配子索引项,所述匹配子索引项中的索引键所指示的取值区间包含所述查询数据区间;
根据所述匹配子索引项中的索引键所指示的取值区间,从所述匹配子索引项中的索引值指向的存储单元中,读取所述待查询数据。
2.一种数据库的存储方法,其特征在于,所述数据库包括多个存储单元,所述方法包括:
接收存储请求,并将所述存储请求中携带的待存储数据保存至所述数据库中的至少一个第一存储单元;
生成第一索引项,所述第一索引项中包含第一索引键和至少一个第一索引值,所述至少一个第一索引值指向所述至少一个第一存储单元,所述第一索引键用于指示所述待存储数据在所述至少一个第一存储单元所保存的数据中的取值区间;
确定所述数据库的索引中是否存在第二索引项,所述第二索引项的索引键所指示的取值区间与所述第一索引项中的索引键所指示的取值区间存在交集;
若不存在所述第二索引项,在所述数据库的索引中保存所述第一索引项;
若存在所述第二索引项,当所述第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者所述第二索引项中的索引键所指示的取值区间的两个边界值的差值大于所述第二分裂阈值时,根据所述第一索引项中的索引键所指示的取值区间的两个边界值和所述第二索引项中的索引键所指示的取值区间的两个边界值,拆分所述第一索引项和/或所述第二索引项,得到至少两个第一子索引项;
采用所述至少两个第一子索引项更新保存的所述第二索引项。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于所述第二分裂阈值,且所述第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于所述第二分裂阈值,则合并所述第一索引项和所述第二索引项;
所述在所述数据库的索引中保存所述第一索引项,包括:
采用合并后的索引项更新保存的所述第二索引项。
4.根据权利要求2所述的方法,其特征在于,在所述数据库的索引中保存所述第一索引项之前,所述方法还包括:
若所述第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值,则将所述第一索引项拆分为k个子索引项;
所述在所述数据库的索引中保存所述第一索引项,包括:
保存所述k个子索引项,2≤k≤n,n为所述第一索引项的所有索引值所指向存储单元的总数。
5.一种数据库的管理装置,其特征在于,所述数据库包括多个存储单元,所述数据库的索引中包含多个索引项,每个索引项中包含索引键和至少一个索引值,所述至少一个索引值中的每个索引值指向所述数据库中的一个存储单元,所述索引键用于指示所述索引项对应的数据在第一数据中的取值区间,所述第一数据为所述至少一个索引值指向的存储单元所保存的数据,所述装置包括:
接收模块,用于接收查询请求,所述查询请求用于从所述数据库中查询符合查询条件的待查询数据;
确定模块,用于确定与所述接收模块接收的所述查询请求中的所述查询条件对应的查询数据区间,并从所述多个索引项中确定出匹配索引项,所述匹配索引项中的索引键所指示的取值区间包含所述查询数据区间;
所述确定模块,还用于确定所述匹配索引项中的索引键所指示的取值区间的两个边界值的差值是否大于第一分裂阈值;
读取模块,用于若所述确定模块确定没有大于所述第一分裂阈值,根据所述确定模块确定的所述匹配索引项中的索引键所指示的取值区间,从所述匹配索引项中的索引值指向的存储单元中,读取所述待查询数据;
拆分模块,用于若所述确定模块确定大于所述第一分裂阈值,则根据所述匹配索引项中的索引键所指示的取值区间的两个边界值和所述查询数据区间的两个边界值,将所述匹配索引项拆分为至少两个子索引项;
所述确定模块,还用于从所述拆分模块拆分得到的所述至少两个子索引项中确定出匹配子索引项,所述匹配子索引项中的索引键所指示的取值区间包含所述查询数据区间;根据所述匹配子索引项中的索引键所指示的取值区间,从所述匹配子索引项中的索引值指向的存储单元中,读取所述待查询数据。
6.一种数据库的管理装置,其特征在于,所述数据库包括多个存储单元,所述装置包括:
接收模块,用于接收存储请求;
第一保存模块,用于将所述接收模块接收的所述存储请求中携带的待存储数据保存至所述数据库中的至少一个第一存储单元;
生成模块,用于生成第一索引项,所述第一索引项中包含第一索引键和至少一个第一索引值,所述至少一个第一索引值指向所述至少一个第一存储单元,所述第一索引键用于指示所述待存储数据在所述至少一个第一存储单元所保存的数据中的取值区间;
确定模块,用于确定所述数据库的索引中是否存在第二索引项,所述第二索引项中的索引键所指示的取值区间与所述第一索引项中的索引键所指示的取值区间存在交集;
第二保存模块,用于若所述确定模块确定不存在所述第二索引项,在所述数据库的索引中保存所述生成模块生成的所述第一索引项;
拆分模块,用于若所述确定模块确定存在所述第二索引项,当所述生成模块生成的所述第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第二分裂阈值,或者所述确定模块确定的所述第二索引项中的索引键所指示的取值区间的两个边界值的差值大于所述第二分裂阈值时,根据所述第一索引项中的索引键所指示的取值区间的两个边界值和所述第二索引项中的索引键所指示的取值区间的两个边界值,拆分所述第一索引项和/或所述第二索引项,得到至少两个第一子索引项;
所述第二保存模块,还用于采用所述至少两个第一子索引项更新保存的所述第二索引项。
7.根据权利要求6所述的装置,其特征在于,还包括:
合并模块,用于若所述生成模块生成的所述第一索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于所述第二分裂阈值,且所述确定模块确定的所述第二索引项中的索引键所指示的取值区间的两个边界值的差值小于或者等于所述第二分裂阈值,则合并所述第一索引项和所述第二索引项;
所述第二保存模块,具体用于采用所述合并模块合并后的索引项更新保存的所述第二索引项。
8.根据权利要求7所述的装置,其特征在于,还包括:
拆分模块,用于在所述第二保存模块保存所述第一索引项之前,若所述生成模块生成的所述第一索引项中的索引键所指示的取值区间的两个边界值的差值大于第三分裂阈值,则将所述第一索引项拆分为k个子索引项;
所述第二保存模块,具体用于保存所述k个子索引项,2≤k≤n,n为所述第一索引项的所有索引值所指向存储单元的总数。
9.一种数据库的管理装置,其特征在于,所述数据库的管理装置包括:处理器、存储器和通信接口;
所述存储器用于存储计算机执行指令,所述处理器、所述通信接口与所述存储器通过总线连接,当所述数据库的管理装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述数据库的管理装置执行如权利要求1所述的数据库的查询方法。
10.一种数据库的管理装置,其特征在于,所述数据库的管理装置包括:处理器、存储器和通信接口;
所述存储器用于存储计算机执行指令,所述处理器、所述通信接口与所述存储器通过总线连接,当所述数据库的管理装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述数据库的管理装置执行如权利要求2-4中任一项所述的数据库的存储方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611262341.1A CN108268503B (zh) | 2016-12-30 | 2016-12-30 | 一种数据库的存储、查询方法及装置 |
PCT/CN2017/102499 WO2018120933A1 (zh) | 2016-12-30 | 2017-09-20 | 一种数据库的存储、查询方法及装置 |
US16/455,744 US20190324961A1 (en) | 2016-12-30 | 2019-06-28 | Storage method and query method for database, and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611262341.1A CN108268503B (zh) | 2016-12-30 | 2016-12-30 | 一种数据库的存储、查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268503A CN108268503A (zh) | 2018-07-10 |
CN108268503B true CN108268503B (zh) | 2020-06-16 |
Family
ID=62706788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611262341.1A Active CN108268503B (zh) | 2016-12-30 | 2016-12-30 | 一种数据库的存储、查询方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190324961A1 (zh) |
CN (1) | CN108268503B (zh) |
WO (1) | WO2018120933A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874383B (zh) * | 2018-08-30 | 2023-05-05 | 阿里云计算有限公司 | 数据处理方法、装置及电子设备 |
CN111291237A (zh) * | 2020-02-04 | 2020-06-16 | 北京明略软件系统有限公司 | 数据信息的管理方法和装置 |
CN112486985A (zh) * | 2020-11-26 | 2021-03-12 | 广州奇享科技有限公司 | 一种锅炉数据的查询方法、装置、设备及存储介质 |
US20220405263A1 (en) * | 2021-06-21 | 2022-12-22 | International Business Machines Corporation | Increasing Index Availability in Databases |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020054A (zh) * | 2011-09-20 | 2013-04-03 | 深圳市金蝶中间件有限公司 | 模糊查询方法及系统 |
CN103733195A (zh) * | 2011-07-08 | 2014-04-16 | 起元技术有限责任公司 | 管理用于基于范围的搜索的数据的存储 |
CN105260446A (zh) * | 2015-10-09 | 2016-01-20 | 上海瀚之友信息技术服务有限公司 | 一种数据查询系统及方法 |
-
2016
- 2016-12-30 CN CN201611262341.1A patent/CN108268503B/zh active Active
-
2017
- 2017-09-20 WO PCT/CN2017/102499 patent/WO2018120933A1/zh active Application Filing
-
2019
- 2019-06-28 US US16/455,744 patent/US20190324961A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103733195A (zh) * | 2011-07-08 | 2014-04-16 | 起元技术有限责任公司 | 管理用于基于范围的搜索的数据的存储 |
CN103020054A (zh) * | 2011-09-20 | 2013-04-03 | 深圳市金蝶中间件有限公司 | 模糊查询方法及系统 |
CN105260446A (zh) * | 2015-10-09 | 2016-01-20 | 上海瀚之友信息技术服务有限公司 | 一种数据查询系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108268503A (zh) | 2018-07-10 |
WO2018120933A1 (zh) | 2018-07-05 |
US20190324961A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268503B (zh) | 一种数据库的存储、查询方法及装置 | |
CN111382174B (zh) | 多方数据联合查询方法、装置、服务器和存储介质 | |
CN109299164B (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
CN111090628A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN111352902A (zh) | 日志处理方法、装置、终端设备及存储介质 | |
WO2015078238A1 (en) | Dispatching map matching tasks by cluster server in internet of vehicles | |
CN111104426B (zh) | 一种数据查询方法及系统 | |
CN113656501B (zh) | 一种数据读取方法、装置、设备以及存储介质 | |
CN112181386B (zh) | 一种基于软件持续集成的代码构建方法、装置及终端 | |
CN111177476A (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
CN111737564A (zh) | 一种信息查询方法、装置、设备及介质 | |
CN108446989B (zh) | 手续费确定方法及终端设备 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN110598993B (zh) | 数据加工方法及装置 | |
CN102968491A (zh) | 一种数据分配方法和装置 | |
CN110427574B (zh) | 路线相似度确定方法、装置、设备和介质 | |
CN112765155A (zh) | 基于区块链的键值存储方法、装置、终端设备及介质 | |
CN112783971B (zh) | 交易记录方法、交易查询方法、电子设备及存储介质 | |
US20210042328A1 (en) | Partitioning data in a clustered database environment | |
CA3144051A1 (en) | Data sorting method, device, and system | |
CN113821514A (zh) | 数据拆分方法、装置、电子设备和可读存储介质 | |
CN115794806A (zh) | 金融数据的网格化处理系统及方法、装置、计算设备 | |
CN114328558B (zh) | 一种榜单更新方法、装置、设备及存储介质 | |
CN113157695B (zh) | 数据处理方法、装置、可读介质及电子设备 | |
CN114428578B (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 |