CN115422194A - 一种用于数据库索引构建的方法与设备 - Google Patents
一种用于数据库索引构建的方法与设备 Download PDFInfo
- Publication number
- CN115422194A CN115422194A CN202211065273.5A CN202211065273A CN115422194A CN 115422194 A CN115422194 A CN 115422194A CN 202211065273 A CN202211065273 A CN 202211065273A CN 115422194 A CN115422194 A CN 115422194A
- Authority
- CN
- China
- Prior art keywords
- data block
- index
- key corresponding
- key
- hash algorithm
- 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.)
- Pending
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种用于数据库索引构建的方法与设备。与现有技术相比,本申请通过基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定,然后存储所述所述每个数据块对应的键,以通过所述键构建数据库索引。这种方式提供了一种由外部指定哈希算法的机制,避免在索引生成过程中进行多次哈希计算带来的额外开销。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于数据库索引构建的技术。
背景技术
现有的常见键值数据库存储引擎多基于以下方案:1.内存型,复杂数据结构;2.持久化型,基于LSM-Tree(Log Structured Merge Tree)及其衍生数据结构;3.持久化型,基于Bitcask及其衍生数据结构;4.持久化行,基于B+-Tree及其衍生数据结构等等。但是,这些方案在处理区块链这种持续写入、数据体量巨大、并发读取要求高、多以内容寻址方式组织数据块的场景,都有一些无法避免的缺陷,例如:内存型数据库无法支持大体量数据集、多针对并发写入进行专门优化,少有专门针对并发读进行优化;大多针对顺序遍历进行专门优化以及索引过程、检索过程多包含多次计算、跳转等等,因此,亟需一种改进方案以克服计算效率开销大的问题。
发明内容
本申请的目的是提供一种用于数据库索引构建的方法与设备。
根据本申请的一个方面,提供了一种用于数据库索引构建的方法,其中,所述方法包括:
基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定;
存储所述所述每个数据块对应的键,以通过所述键构建数据库索引。
进一步地,其中,所述基于预设的哈希算法确定数据块对应的键包括:
基于预设的哈希算法对所述数据块进行哈希运算,确定所述数据块对应的键。
优选地,其中,所述方法还包括:在所述索引中预设存储块对所述每个数据块对应的键进行存储。
优选地,其中,所述方法还包括:将所述每个数据块对应的键分隔成多个索引文件,以通过所述多个索引文件实现并发检索。
进一步地,其中,所述将所述每个数据块对应的键分隔成多个索引文件包括:
基于数据块的尺寸大小将所述每个数据块对应的键分隔成多个索引文件,其中,将数据块大小差距在阈值范围内的键存储在一个索引文件内。
进一步地,其中,所述方法还包括:
将尺寸小于预设阈值的数据块存储在所述索引文件中。
进一步地,其中,所述数据块基于索引文件序号、偏移量及数据块尺寸所组成的元组确定,其中,所述元组被存储在索引中。
根据本申请的另一方面,还提供了一种可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述方法的操作。
根据本申请的再一方面,还提供了一种用于数据库索引构建的设备,其中,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述方法的操作。
与现有技术相比,本申请通过基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定,然后存储所述所述每个数据块对应的键,以通过所述键构建数据库索引。这种方式提供了一种由外部指定哈希算法的机制,避免在索引生成过程中进行多次哈希计算带来的额外开销。
而且,在本方案中国还将所述每个数据块对应的键分隔成多个索引文件,以通过所述多个索引文件实现并发检索。通过这种方式,能够支持并发检索,提高检索效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于数据库索引构建的方法流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。
图1示出本申请一个方面提供的一种用于数据库索引构建的方法,其中,该方法包括:
S11基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定;
S12存储所述每个数据块对应的键,以通过所述键构建数据库索引。
在该实施例中,在所述步骤S11中,其中,所述预设的哈希算法包括外部指定的哈希算法,该算法在不同的内容寻址场景中可以不同,因此,可以在每个内容寻址场景中指定不同或者相同的哈希算法。具体地,由于在内容寻址的场景中,数据块(value)对应的键(key)本就由某种哈希算法得出,因此,本申请提供一种由外部指定哈希算法的机制,避免在索引生成过程中进行多次哈希计算带来的额外开销。
当确定预设的哈希算法,基于该哈希算法进行哈希计算,确定每个数据块对应的键并进行存储,以通过所述键构建数据库索引。
优选地,其中,所述基于预设的哈希算法确定数据块对应的键包括:基于预设的哈希算法对所述数据块进行哈希运算,确定所述数据块对应的键。
具体地,由于目前的键值数据库索引构造过程中都是对键值对中的键进行哈希。而在本方案中,针对内容寻址场景,本方案选择对数据块,也即键值对中的值进行哈希。这样做一方面更加贴合使用场景,另一方面可以规避同一数据多次存储带来的空间浪费。
优选地,所述方法还包括:S13(未示出)在所述索引中预设存储块对所述每个数据块对应的键进行存储。
由于现有的键值数据库方案中,索引往往只会使用哈希结果的一部分,如192bit/256bit,384bit/512bit。这是在考虑了数据集大小和与之对应的哈希碰撞率之后妥协的结果。这种做法在数据集非常大的场景下,会带来一些负面效果,如:键值的存在性判断需要引入更复杂的机制(如布隆过滤器)和多次定向(继续引入类索引的机制来区分发生碰撞的部分);以及由上述额外机制产生的额外存储开销。
因此,在本方案中,我们选择在索引中引入较大的存储块,放置完整的键,即内容的哈希结果,以降低额外的计算和存储开销。
优选地,其中,所述方法还包括:将所述每个数据块对应的键分隔成多个索引文件,以通过所述多个索引文件实现并发检索。
在该实施例中,可以基于哈希结果的前缀数位进行索引文件级别的隔离,其中,前缀数位可以根据需求进行设定,具体地,本方案按照一定的逻辑将索引结果分隔成多个索引文件,这是为了避免一个索引文件过大,同时也可以更好地支持并发检索,同时,这种分隔索引文件的做法还使得多台存储设备组成分布式集群共同提供大数据集存储能力的设计变得更为简便。
优选地,其中,所述将所述每个数据块对应的键分隔成多个索引文件包括:基于数据块的尺寸大小将所述每个数据块对应的键分隔成多个索引文件,其中,将数据块大小差距在阈值范围内的键存储在一个索引文件内。
优选地,其中,所述方法还包括:将尺寸小于预设阈值的数据块存储在所述索引文件中。
在该实施例中,由于在内容寻址场景中的数据块大小从数十字节到数兆字节不等。在本方案中为了进一步节省小尺寸数据块的检索开销,可以选择将此类数据直接存储在索引中。具体地,可以将尺寸小于预设阈值的数据块存储在所述索引文件中。
优选地,其中,所述数据块基于索引文件序号、偏移量及数据块尺寸所组成的元组确定,其中,所述元组被存储在索引中。具体地,由于这种元组会被存储在索引中,因而数据块在数据文件中可以以紧密的布局排布,没有任何额外的存储开销。这种方式,通过三元组即可确定对应的数据块,提高了检索效率。
与现有技术相比,本申请通过基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定,然后存储所述所述每个数据块对应的键,以通过所述键构建数据库索引。这种方式提供了一种由外部指定哈希算法的机制,避免在索引生成过程中进行多次哈希计算带来的额外开销。
而且,在本方案中国还将所述每个数据块对应的键分隔成多个索引文件,以通过所述多个索引文件实现并发检索。通过这种方式,能够支持并发检索,提高检索效率。
此外,本申请实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
本申请实施例还提供了一种用于数据库索引构建的设备,其中,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行前述方法的操作。
例如,计算机可读指令在被执行时使所述一个或多个处理器:基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定;存储所述每个数据块对应的键,以通过所述键构建数据库索引。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (9)
1.一种用于数据库索引构建的方法,其中,所述方法包括:
基于预设的哈希算法确定每个数据块对应的键,其中,所述预设的哈希算法基于不同的内容寻址场景确定;
存储所述每个数据块对应的键,以通过所述键构建数据库索引。
2.根据权利要求1所述的方法,其中,所述基于预设的哈希算法确定数据块对应的键包括:
基于预设的哈希算法对所述数据块进行哈希运算,确定所述数据块对应的键。
3.根据权利要求1或2所述的方法,其中,所述方法还包括:
在所述索引中预设存储块对所述每个数据块对应的键进行存储。
4.根据权利要求1至3中任一项所述的方法,其中,所述方法还包括:
将所述每个数据块对应的键分隔成多个索引文件,以通过所述多个索引文件实现并发检索。
5.根据权利要求4所述的方法,其中,所述将所述每个数据块对应的键分隔成多个索引文件包括:
基于数据块的尺寸大小将所述每个数据块对应的键分隔成多个索引文件,其中,将数据块大小差距在阈值范围内的键存储在一个索引文件内。
6.根据权利要求4或5所述的方法,其中,所述方法还包括:
将尺寸小于预设阈值的数据块存储在所述索引文件中。
7.根据权利要求4至6中任一项所述的方法,其中,所述数据块基于索引文件序号、偏移量及数据块尺寸所组成的元组确定,其中,所述元组被存储在索引中。
8.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至7中任一项所述的方法。
9.一种用于数据库索引构建的设备,其中,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至7中任一项所述方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065273.5A CN115422194A (zh) | 2022-09-01 | 2022-09-01 | 一种用于数据库索引构建的方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065273.5A CN115422194A (zh) | 2022-09-01 | 2022-09-01 | 一种用于数据库索引构建的方法与设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115422194A true CN115422194A (zh) | 2022-12-02 |
Family
ID=84202153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211065273.5A Pending CN115422194A (zh) | 2022-09-01 | 2022-09-01 | 一种用于数据库索引构建的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115422194A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955363A (zh) * | 2023-09-21 | 2023-10-27 | 北京四维纵横数据技术有限公司 | 无模式数据创建索引方法、装置、计算机设备及介质 |
-
2022
- 2022-09-01 CN CN202211065273.5A patent/CN115422194A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955363A (zh) * | 2023-09-21 | 2023-10-27 | 北京四维纵横数据技术有限公司 | 无模式数据创建索引方法、装置、计算机设备及介质 |
CN116955363B (zh) * | 2023-09-21 | 2023-12-26 | 北京四维纵横数据技术有限公司 | 无模式数据创建索引方法、装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120303633A1 (en) | Systems and methods for querying column oriented databases | |
US10678654B2 (en) | Systems and methods for data backup using data binning and deduplication | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US10331641B2 (en) | Hash database configuration method and apparatus | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN102402602A (zh) | 一种实时数据库的b+树索引方法及装置 | |
US10255234B2 (en) | Method for storing data elements in a database | |
CN110134335B (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN104063384A (zh) | 一种数据检索方法及装置 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
CN111324665A (zh) | 一种日志回放方法及装置 | |
CN108762915B (zh) | 一种在gpu内存中缓存rdf数据的方法 | |
JP2015528957A (ja) | 分散ファイルシステム、ファイルアクセス方法及びクライアントデバイス | |
US20230342395A1 (en) | Network key value indexing design | |
CN115422194A (zh) | 一种用于数据库索引构建的方法与设备 | |
US9165008B1 (en) | System and method for data compression using a dynamic compression dictionary | |
US11119996B2 (en) | System and method of bloom filter for big data | |
US20190129999A1 (en) | Helper scan in a database management system | |
CN110618790A (zh) | 基于重复数据删除的雾存储数据去冗余方法 | |
KR101693108B1 (ko) | 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치 | |
US20220083522A1 (en) | Data processing method, apparatus, electronic device, and computer storage medium |
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 |