CN113742307A - 一种基于值日志系统的二级索引的存储和查询方法及系统 - Google Patents
一种基于值日志系统的二级索引的存储和查询方法及系统 Download PDFInfo
- Publication number
- CN113742307A CN113742307A CN202110918373.7A CN202110918373A CN113742307A CN 113742307 A CN113742307 A CN 113742307A CN 202110918373 A CN202110918373 A CN 202110918373A CN 113742307 A CN113742307 A CN 113742307A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- value
- record
- value log
- 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
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/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于值日志系统的二级索引的存储和查询方法及系统,方法包括如下步骤:(1)基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;(2)值日志系统的索引针对插入操作和查询操作进行优化;系统包括:操作解析模块、操作转化模块、插入操作模块和查询操作模块。本发明中,基于值日志的二级索引的叶子节点直接指向存放的物理记录的偏移地址,查询时避免了与主索引/一级索引的交互过程,更高效地定位数据,性能提升一倍左右。
Description
技术领域
本发明涉及值日志技术领域,尤其是一种基于值日志系统的二级索引的存储和查询方法及系统。
背景技术
包括传统数据库在内的各种数据处理系统,其二级索引(一般是B树/B+树/LSM树/Skiplist等索引数据结构)的叶子节点一般都是存储用户记录的二级索引列的列值以及对应用户记录的主索引的列值。在基于二级索引涉及的列进行检索时,先基于二级索引查找到符合条件的记录对应的主索引/一级索引的列值,然后再基于查找出的主索引/一级索引的列值,在主索引/一级索引中进行检索,查找出符合条件的记录的具体位置,并读取记录,返回给用户。
这种在二级索引中存储主索引/一级索引的列值的方法适合于传统数据库,当用户进行非索引列的更新时,可以避免对索引进行修改,但是对于基于值日志技术的数据处理系统来说不合适。
发明内容
本发明所要解决的技术问题在于,提供一种基于值日志系统的二级索引的存储和查询方法及系统,能够解决传统的二级索引实现机制对于基于值日志技术的数据处理系统来说查询效率偏低的问题。
为解决上述技术问题,本发明提供一种基于值日志系统的二级索引的存储和查询方法,包括如下步骤:
(1)基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
(2)值日志系统的索引针对插入操作和查询操作进行优化。
优选的,步骤(2)中,插入操作的优化具体包括如下步骤:
(21)检查新插入的数据是否有效,无效则报错,否则继续执行下面的步骤;
(22)在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;
(23)在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;
(24)在该数据对应的二级索引中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址。
优选的,步骤(21)中,数据有效为各列数据类型正确、符合各列检查约束条件、没有违反唯一性约束。
优选的,步骤(2)中,查询操作的优化具体为:在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录。避免了对主索引/一级索引的访问,从而提升查询性能。
相应的,一种基于值日志系统的二级索引的存储和查询系统,包括:操作解析模块、操作转化模块、插入操作模块和查询操作模块;
操作解析模块:解析接收到的操作请求,确定操作类型;
操作转化模块:对于插入、更新、删除,基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
插入操作模块:检查新插入的数据是否有效,无效则报错,否则基于值日志技术的数据处理系统在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;然后在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;最后在该数据对应的二级索引记录中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址;
查询操作模块:对于基于二级索引的查询,在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录,避免了对主索引/一级索引的访问,从而提升查询性能。
本发明的有益效果为:基于值日志的二级索引的叶子节点直接指向存放的物理记录的偏移地址,查询时避免了与主索引/一级索引的交互过程,更高效地定位数据,性能提升一倍左右。
附图说明
图1为本发明的系统结构示意图。
具体实施方式
一种基于值日志系统的二级索引的存储和查询方法,包括如下步骤:
(1)基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
(2)值日志系统的索引针对插入操作和查询操作进行优化。
插入操作的优化具体包括如下步骤:
(21)检查新插入的数据是否有效,无效则报错,否则继续执行下面的步骤;
(22)在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;
(23)在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;
(24)在该数据对应的二级索引中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址。
查询操作的优化具体为:在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录。避免了对主索引/一级索引的访问,从而提升查询性能。
在基于值日志技术的数据处理系统中,插入用户记录时和传统数据库一样都需要向所有的索引中插入对应的索引记录,只是在基于值日志技术的数据处理系统中都是顺序写入用户记录和索引记录(索引采用LSM树,也只有顺序写),并且不用写入回滚段、日志和归档日志。
在查询时,基于值日志技术的数据处理系统中的二级索引在叶子节点除了存放索引列值外,不再存放对应用户记录的主索引/一级索引的列值,而是直接存放用户记录的物理地址。这样可以直接基于二级索引定位用户记录,避免再通过主索引/一级索引来查找用户记录,可以使得基于二级索引进行查询的性能提升一倍左右。
如图1所示,一种基于值日志系统的二级索引的存储和查询系统,包括:操作解析模块、操作转化模块、插入操作模块和查询操作模块;
操作解析模块:解析接收到的操作请求,确定操作类型;
操作转化模块:对于插入、更新、删除,基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
插入操作模块:检查新插入的数据是否有效,无效则报错,否则基于值日志技术的数据处理系统在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;然后在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;最后在该数据对应的二级索引记录中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址;
查询操作模块:对于基于二级索引的查询,在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录,避免了对主索引/一级索引的访问,从而提升查询性能。
实施例1:数据插入;
基于值日志技术的数据库/KV等数据处理系统接收处理数据修改(包括插入、删除、更新)请求时,都会转化为插入操作,假定当前数据文件写到1000字节的位置,将要插入key1的记录在数据文件中占64个字节(该记录的值有多列,其中列col1上建立有二级索引,该列的值为整数107),则数据文件和索引文件将依次有以下变化:
(1)数据文件新增一条起始物理地址为1000的物理记录(该物理记录头中包含有该条记录的长度为64字节)。
(2)主索引/一级索引新增一条[key1,1000]的记录,key1是主索引/一级索引列的值,1000是对应的物理记录在数据文件中的偏移地址。
(3)二级索引新增一条[107,1000]的记录,107是二级索引列的值,1000是对应的物理记录在数据文件中的偏移地址。
实施例2:数据查询;
假定现有数据为实施例一中插入key1之后的数据,此时要基于col1=107的条件进行检索,则直接基于建立在col1上的二级索引进行查找,在叶子节点中可以得到该记录在数据文件中的偏移地址为1000,读取该偏移地址的数据,从物理记录头中可以知道记录长度为64字节,表示要从1000地址开始读取64个字节就可以获取完整的物理记录了。如果要查找的是不存在的记录,则查找到叶子层时,发现没有对应的记录,此时就会返回空结果集给用户。
Claims (5)
1.一种基于值日志系统的二级索引的存储和查询方法,其特征在于,包括如下步骤:
(1)基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
(2)值日志系统的索引针对插入操作和查询操作进行优化。
2.如权利要求1所述的基于值日志系统的二级索引的存储和查询方法,其特征在于,步骤(2)中,插入操作的优化具体包括如下步骤:
(21)检查新插入的数据是否有效,无效则报错,否则继续执行下面的步骤;
(22)在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;
(23)在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;
(24)在该数据对应的二级索引中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址。
3.如权利要求1所述的基于值日志系统的二级索引的存储和查询方法,其特征在于,步骤(21)中,数据有效为各列数据类型正确、符合各列检查约束条件、没有违反唯一性约束。
4.如权利要求1所述的基于值日志系统的二级索引的存储和查询方法,其特征在于,步骤(2)中,查询操作的优化具体为:在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录。
5.一种基于值日志系统的二级索引的存储和查询系统,其特征在于,包括:操作解析模块、操作转化模块、插入操作模块和查询操作模块;
操作解析模块:解析接收到的操作请求,确定操作类型;
操作转化模块:对于插入、更新、删除,基于值日志技术的数据处理系统把所有的数据更新和删除都转化为插入操作;
插入操作模块:检查新插入的数据是否有效,无效则报错,否则基于值日志技术的数据处理系统在值日志文件中写入数据对应的物理记录,并返回该记录在值日志文件中的起始物理地址;然后在主索引中插入该数据对应的索引记录,该索引记录的key是主索引对应的列值,value是该数据在值日志文件中的起始物理地址;最后在该数据对应的二级索引记录中插入对应的索引记录,该索引记录的key是二级索引对应的列值,value是该数据在值日志文件中的起始物理地址;
查询操作模块:对于基于二级索引的查询,在二级索引中直接查找指定的索引值,然后基于叶子节点中存储的符合条件的记录的起始物理地址来定位到需要访问的物理记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110918373.7A CN113742307B (zh) | 2021-08-11 | 2021-08-11 | 一种基于值日志系统的二级索引的存储和查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110918373.7A CN113742307B (zh) | 2021-08-11 | 2021-08-11 | 一种基于值日志系统的二级索引的存储和查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742307A true CN113742307A (zh) | 2021-12-03 |
CN113742307B CN113742307B (zh) | 2023-08-25 |
Family
ID=78730803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110918373.7A Active CN113742307B (zh) | 2021-08-11 | 2021-08-11 | 一种基于值日志系统的二级索引的存储和查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742307B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840561A (zh) * | 2022-05-23 | 2022-08-02 | 达梦数据技术(江苏)有限公司 | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369267A (zh) * | 2007-08-15 | 2009-02-18 | 中兴通讯股份有限公司 | 一种基于内存库的模糊查询方法 |
CN103177116A (zh) * | 2013-04-08 | 2013-06-26 | 国电南瑞科技股份有限公司 | 一种基于两级索引的分布式日志处理和查询方法 |
CN104281701A (zh) * | 2014-10-20 | 2015-01-14 | 北京农业信息技术研究中心 | 分布式多尺度空间数据查询方法及系统 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
US20170097771A1 (en) * | 2015-10-01 | 2017-04-06 | Netapp, Inc. | Transaction log layout for efficient reclamation and recovery |
CN106779441A (zh) * | 2016-12-27 | 2017-05-31 | 中国银联股份有限公司 | 一种预测变更风险方法和装置 |
US9922043B1 (en) * | 2013-10-28 | 2018-03-20 | Pivotal Software, Inc. | Data management platform |
CN109408539A (zh) * | 2018-10-22 | 2019-03-01 | 上海达梦数据库有限公司 | 数据操作方法、装置、服务器和存储介质 |
CN109918352A (zh) * | 2019-03-04 | 2019-06-21 | 北京百度网讯科技有限公司 | 存储器系统和存储数据的方法 |
CN110502452A (zh) * | 2019-07-12 | 2019-11-26 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
-
2021
- 2021-08-11 CN CN202110918373.7A patent/CN113742307B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369267A (zh) * | 2007-08-15 | 2009-02-18 | 中兴通讯股份有限公司 | 一种基于内存库的模糊查询方法 |
CN103177116A (zh) * | 2013-04-08 | 2013-06-26 | 国电南瑞科技股份有限公司 | 一种基于两级索引的分布式日志处理和查询方法 |
US9922043B1 (en) * | 2013-10-28 | 2018-03-20 | Pivotal Software, Inc. | Data management platform |
CN104281701A (zh) * | 2014-10-20 | 2015-01-14 | 北京农业信息技术研究中心 | 分布式多尺度空间数据查询方法及系统 |
US20170097771A1 (en) * | 2015-10-01 | 2017-04-06 | Netapp, Inc. | Transaction log layout for efficient reclamation and recovery |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN106779441A (zh) * | 2016-12-27 | 2017-05-31 | 中国银联股份有限公司 | 一种预测变更风险方法和装置 |
CN109408539A (zh) * | 2018-10-22 | 2019-03-01 | 上海达梦数据库有限公司 | 数据操作方法、装置、服务器和存储介质 |
CN109918352A (zh) * | 2019-03-04 | 2019-06-21 | 北京百度网讯科技有限公司 | 存储器系统和存储数据的方法 |
CN110502452A (zh) * | 2019-07-12 | 2019-11-26 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
Non-Patent Citations (3)
Title |
---|
YUZHE TANG等: "Deferred Lightweight Indexing for Log-Structured Key-Value Stores", 《2015 15TH IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER, CLOUD AND GRID COMPUTING》, pages 11 - 20 * |
孙博宇: "面向边缘存储的高性能数据库系统设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 2, pages 138 - 833 * |
欧阳娟频: "mysql二级索引存储的值_数据库索引总结(二)", pages 1, Retrieved from the Internet <URL:《https://blog.csdn.net/weixin_32304839/article/details/113945349》> * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840561A (zh) * | 2022-05-23 | 2022-08-02 | 达梦数据技术(江苏)有限公司 | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 |
CN114840561B (zh) * | 2022-05-23 | 2024-07-30 | 达梦数据技术(江苏)有限公司 | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113742307B (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6546394B1 (en) | Database system having logical row identifiers | |
JP2761389B2 (ja) | ファイル順次アクセス方法及び装置 | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
WO2001033436A1 (en) | System for managing rdbm fragmentations | |
US7499927B2 (en) | Techniques for improving memory access patterns in tree-based data index structures | |
CN110928882B (zh) | 一种基于改进红黑树的内存数据库索引方法及系统 | |
CN109189759B (zh) | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 | |
CN101256579A (zh) | 一种数据库范围查询数据组织的方法 | |
US6466942B1 (en) | Using indexes to retrieve stored information | |
US6826563B1 (en) | Supporting bitmap indexes on primary B+tree like structures | |
CN113688130B (zh) | 一种内存数据库存储引擎管理方法 | |
CN113742307B (zh) | 一种基于值日志系统的二级索引的存储和查询方法及系统 | |
CN114840561B (zh) | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 | |
CN111522820A (zh) | 数据存储结构、存储检索方法、系统、设备及存储介质 | |
CN109800233A (zh) | 一种大数据融合搜索方法 | |
CN112463837B (zh) | 一种关系型数据库数据存储查询方法 | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 | |
CN113986591A (zh) | 基于值日志的数据库闪回查询方法、系统、存储介质及设备 | |
CN109325023B (zh) | 一种数据处理方法及装置 | |
CN115827653B (zh) | 一种用于htap和海量数据的纯列式更新方法及装置 | |
CN116860722B (zh) | 一种数据库持久化组织优化方法 | |
CN115905259B (zh) | 一种支持行级并发控制的纯列式更新方法及装置 | |
CN117390031B (zh) | 一种基于lsm树的存储系统中二级索引有效性的验证方法 | |
JP2003030040A (ja) | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
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 |