CN102609492B - 一种支持表模式可变的元数据管理方法 - Google Patents
一种支持表模式可变的元数据管理方法 Download PDFInfo
- Publication number
- CN102609492B CN102609492B CN201210019950.XA CN201210019950A CN102609492B CN 102609492 B CN102609492 B CN 102609492B CN 201210019950 A CN201210019950 A CN 201210019950A CN 102609492 B CN102609492 B CN 102609492B
- Authority
- CN
- China
- Prior art keywords
- metadata
- data
- segment
- buffer zone
- row
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种支持表模式可变的元数据存储方法和管理策略,其特征在于:包括以下步骤:所有元数据表按列存储在一个元数据文件中,一个字段对应数据文件中一个段。定义元数据缓冲区结构。数据库***启动时,将元数据读入元数据缓冲区,并进行数据按行组织。分析用户的元数据请求。返回用户查询结果,对添加、删除、更新数据记录在缓冲区中进行标记。对元数据表进行添加、删除字段,转换为对列的添加、删除,执行用户请求,更新表模式。数据库关闭时,将元数据缓冲区中数据按列写回元数据文件。本发明能针对元数据管理中,表模式更改时代价较大的问题,提供支持表模式可变的元数据管理方法,同时,保持元数据查询效率,提高管理元数据灵活性。
Description
技术领域
本发明涉及一种数据库中元数据管理方法。
背景技术
元数据是描述数据库内数据的结构以及数据库中数据建立方法的数据。在数据库***中,元数据可以帮助数据库管理员和数据库开发人员方便地找到他们所关心的数据,因此,元数据是数据库的灵魂,如何以高效的方式对它们进行管理和访问就变得尤为重要。解决这一问题的关键是对元数据的存储结构进行科学有效的设计和管理。数据库***存储层技术主要分为列存储和行存储,现有数据库***元数据表大都采用行存储方式。然而,采用目前现有的元数据组织策略,元数据表一旦创建,无法修改表模式。如果表模式变更,需对涉及的表进行重建。尤其当表中已***数据信息,需为表中原有数据备份,按照新的表模式创建表,数据重新***。由于元数据为查询处理器等数据库管理***运行提供必要的信息,因此元数据表重建过程中,***无法维持正常的运行,由此带来的损失将非常大。而随着***的不断运行,应用需求的变化,不可避免的出现原有表模式不再适应需求,需进行扩充等问题。虽然设计预留字段可以对上述问题进行处理,然而在实际应用中,难以准确的确定预留字段的个数。如何设计支持表模式可变的元数据组织和管理策略成为一项迫切需要解决的任务。
发明内容
本发明的目的是提供一种支持表模式可变的元数据组织和管理策略。
为了达到上述目的,本发明的技术方案是提供了一种支持表模式可变的元数据管理方法,其特征在于,步骤为:
步骤1、所有元数据表按列存储在一个元数据文件中,该步骤包括:
步骤1.1、依次为每个元数据表分配不同的表ID;
步骤1.2、各元数据表的每一列数据连续存储在一个数据段中,每个数据段中设置段控制块,段控制块包含段表ID,将段表ID设置为与该数据段相对应的元数据表的表ID,即段表ID相同的数据段存储的是相同元数据表中不同列的数据
步骤2、数据库***启动时,将元数据读入元数据缓冲区,并进行数据按行组织,该步骤包括:
步骤2.1、将元数据文件中各个数据段中的数据依次读入元数据缓冲区,同一数据段中数据顺序存放;
步骤2.2、段表ID相同的不同数据段中的数据使用行指针链接成数据行,每行第一个数据项设置记录标志位;
步骤3、分析用户的元数据请求,若为对元数据表数据记录的查询、更新、删除命令,转步骤4,若为调整表模式结构请求,转步骤5;
步骤4、返回用户查询结果,对添加、删除、更新数据记录在缓冲区中进行标记,该步骤包括:沿行指针,进行数据记录的添加、删除及更新,随后设置进行过添加、删除及更新的数据行的记录标志位;
步骤5、对元数据表进行添加、删除字段,转换为对列的添加、删除,执行用户请求,更新表模式。
步骤6、数据库关闭时,将元数据缓冲区中数据按列写回元数据文件。
优选地,所述步骤2中的缓冲区采用顺序与链式混合的数据组织方式。
优选地,所述步骤5包括:
步骤5.1、若元数据表Ti存在新增字段,在元数据文件结尾追加一个新的数据段SAi,并将该数据段SAi的段表ID设置为元数据表Ti的表ID,将数据段SAi内的数据依次写入数据段SAi中,数据段SAi中每一行的位置与元数据表Ti中其他数据段的相同行的位置相对应,即保证元数据表Ti中所有数据段的相同行具有相同的行号;
步骤5.2、将新增字段读入元数据缓冲区,进行数据组织;
步骤5.3、若元数据表Ti存在删除字段,将与该列数据所对应的数据段的段表ID置空,从而使得该数据段不属于任何一个元数据表。
本发明提供了一种基于列存储技术的元数据存储方法和管理策略,其特点为支持表模式可变同时保持较高的查询效率,从而克服传统方法的局限性,提高了数据库管理***中元数据管理的灵活性。
具体实施方式
为使本发明更明显易懂,兹以一优选实施例详细说明如下。
本发明提供了一种支持表模式可变的元数据管理方法,本发明能针对元数据管理中,表模式更改时代价较大的问题,提供支持表模式可变的元数据管理方法,提高了管理元数据的灵活性,其步骤为:
步骤1、所有元数据表按列存储在一个元数据文件中
1.1)依次为每个元数据表分配不同的表ID;
1.2)各元数据表的每一列数据连续存储在一个数据段中;
1.3)每个数据段中设置段控制块,段控制块包含段表ID;
1.4)将段表ID设置为与该数据段相对应的元数据表的表ID,即段表ID相同的数据段存储的是相同元数据表中不同列的数据。
步骤2、数据库***启动时,将元数据读入元数据缓冲区,并按照段表ID进行行数据组织。
2.1)缓冲区中采用顺序与链式混合的数据组织方式。
每个元数据表都对应有一个元数据表描述结点TAB_DESC。所有元数据表描述结点TAB_DESC使用指针连接起来。每个元数据表描述结点TAB_DESC中都有个指向其表第一列数据的指针。元数据表描述结点TAB_DESC的定义如表1所示:
table_id | 表ID |
table_name | 表名 |
record_num | 表中记录数 |
table_data | 指针,指向表中数据列表 |
table_desc_next | 指向下一个表描述符结点 |
bitmap | 表的字段标识位图 |
表1表描述结点TAB_DESC成员变量
表的字段标识位图bitmap用2个字节来存储,共16位,即最大能表示16个字段是否被更新过。标志位的顺序和字段的顺序一致,即标志位的第1位表示第1个字段的更新情况,初始为0,如果为1,表示该字段被删除。
2.2)将元数据文件中各个数据段中的数据依次读入元数据缓冲区,同一数据段中数据顺序存放;
2.3)段表ID相同的不同数据段中的数据使用指针链接成行,这样一个表的所有数据就可以连接起来。
2.4)每行第一个数据项设置记录标志位REC_HEADER,初始化记录标志位。
标志位REC_HEADER的定义如表2所示:
DEL | 当前行是否有数据被删除 |
INS | 当前行是否有数据添加 |
UPD | 当前行是否有数据更新 |
表2标志位REC_HEADER成员变量
其中,删除、添加和更新各占1位。如果标志位的第1位是1,表示该字段被删除;第2位是1,则表示该记录是添加的。初始化均置为0。
步骤3、分析用户的元数据请求。若为对元数据表数据记录的查询、更新、删除命令,转步骤4;若为调整表模式结构请求,转步骤5;
步骤4、返回用户查询结果。对添加、删除、更新数据记录在缓冲区中进行标记。
4.1)沿行指针,进行数据记录更新,置进行更新的数据记录对应的记录标志位为1;
4.2)若为添加,在每列的列尾追加数据,置进行添加的数据记录对应的记录标志位为1;
4.3)若为删除,置进行删除的数据记录对应的记录标志位为1;
步骤5、对元数据表进行添加、删除字段,转换为对列的添加、删除,执行用户请求,更新表模式。具体如下:
5.1)若元数据表Ti存在新增字段,在元数据文件结尾追加一个新的数据段SAi,并将该数据段SAi的段表ID设置为元数据表Ti的表ID,将数据段SAi内的数据依次写入数据段SAi中,数据段SAi中每一行的位置与元数据表Ti中其他数据段的相同行的位置相对应,即保证元数据表Ti中所有数据段的相同行具有相同的行号;
5.2)在元数据缓冲区中申请连续空间,将该段内数据读入元数据缓冲区。修改该表最后一列行记录指针,指向新增数据。
5.3)若元数据表Ti存在删除字段,将与该列数据所对应的数据段的段表ID置空,从而使得该数据段不属于任何一个元数据表。下一次加载时,该字段将不被加载。置缓冲区中对应表描述结点TAB_DESC中对删除字段的标识位为1。
由此可见,本技术将新增和删除字段,转换为对列的新增和删除,通过对数据段的操作,不会引起其它表字段的数据变更。
步骤6、数据库关闭时,将元数据缓冲区中数据按列写回元数据文件。扫描元数据缓冲区各表第一列信息,若添加、删除、更新记录标志位为1,将该表所有列重新写回。表描述结点TAB_DESC中字段的标识位为1的字段将不再写回。
Claims (2)
1.一种支持表模式可变的元数据管理方法,其特征在于,步骤为:
步骤1、所有元数据表按列存储在一个元数据文件中,该步骤包括:
步骤1.1、依次为每个元数据表分配不同的表ID;
步骤1.2、各元数据表的每一列数据连续存储在一个数据段中,每个数据段中设置段控制块,段控制块包含段表ID,将段表ID设置为与该数据段相对应的元数据表的表ID,即段表ID相同的数据段存储的是相同元数据表中不同列的数据;
步骤2、数据库***启动时,将元数据读入元数据缓冲区,并进行数据按行组织,该步骤包括:
步骤2.1、将元数据文件中各个数据段中的数据依次读入元数据缓冲区,同一数据段中数据顺序存放;
步骤2.2、段表ID相同的不同数据段中的数据使用行指针链接成数据行,每行第一个数据项设置记录标志位;
步骤3、分析用户的元数据请求,若为对元数据表数据记录的查询、更新、删除命令,转步骤4,若为调整表模式结构请求,转步骤5;
步骤4、返回用户查询结果,对添加、删除、更新数据记录在缓冲区中进行标记,该步骤包括:沿行指针,进行数据记录的添加、删除及更新,随后设置进行过添加、删除及更新的数据行的记录标志位;
步骤5、将对元数据表进行的添加、删除字段,转换为对列的添加、删除,执行用户请求,更新表模式,包括:
步骤5.1、若元数据表Ti存在新增字段,在元数据文件结尾追加一个新的数据段SAi,并将该数据段SAi的段表ID设置为元数据表Ti的表ID,将数据段SAi内的数据依次写入数据段SAi中,数据段SAi中每一行的位置与元数据表Ti中其他数据段的相同行的位置相对应,即保证元数据表Ti中所有数据段的相同行具有相同的行号;
步骤5.2、将新增字段读入元数据缓冲区,进行数据组织;
步骤5.3、若元数据表Ti存在值为删除的字段,将与该列数据所对应的数据段的段表ID置空,从而使得该数据段不属于任何一个元数据表;
步骤6、数据库关闭时,将元数据缓冲区中数据按列写回元数据文件。
2.如权利要求1所述的一种支持表模式可变的元数据管理方法,其特征在于,所述步骤2中的缓冲区采用顺序与链式混合的数据组织方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210019950.XA CN102609492B (zh) | 2012-01-21 | 2012-01-21 | 一种支持表模式可变的元数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210019950.XA CN102609492B (zh) | 2012-01-21 | 2012-01-21 | 一种支持表模式可变的元数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609492A CN102609492A (zh) | 2012-07-25 |
CN102609492B true CN102609492B (zh) | 2014-05-28 |
Family
ID=46526864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210019950.XA Expired - Fee Related CN102609492B (zh) | 2012-01-21 | 2012-01-21 | 一种支持表模式可变的元数据管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609492B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857570A (zh) * | 2012-09-13 | 2013-01-02 | 清华大学 | 文件的云同步方法及云存储服务器 |
CN104866497B (zh) | 2014-02-24 | 2018-06-15 | 华为技术有限公司 | 分布式文件***列式存储的元数据更新方法、装置、主机 |
CN104537030B (zh) * | 2014-12-22 | 2018-03-02 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库*** |
CN106506661A (zh) * | 2016-11-18 | 2017-03-15 | 浪潮软件集团有限公司 | 一种动态返回数据的方法、服务端及*** |
CN107092624B (zh) * | 2016-12-28 | 2022-08-30 | 北京星选科技有限公司 | 数据存储方法、装置及*** |
CN110019026B (zh) * | 2017-07-24 | 2022-02-01 | 北京京东尚科信息技术有限公司 | 一种文件清理的方法和装置 |
CN112632078B (zh) * | 2020-12-29 | 2023-06-30 | 竹间智能科技(上海)有限公司 | 表单新增字段的方法、***、设备及可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
-
2012
- 2012-01-21 CN CN201210019950.XA patent/CN102609492B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
Non-Patent Citations (4)
Title |
---|
列存储数据查询中的连策略选择方法;李静等;《Journal of Frontiers of Computer Science and Technology》;20101231;全文 * |
基于字典的保序字符串压缩改进方法;李海燕等;《计算机工程》;20111130;第37卷(第21期);全文 * |
李海燕等.基于字典的保序字符串压缩改进方法.《计算机工程》.2011,第37卷(第21期), |
李静等.列存储数据查询中的连策略选择方法.《Journal of Frontiers of Computer Science and Technology》.2010, |
Also Published As
Publication number | Publication date |
---|---|
CN102609492A (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609492B (zh) | 一种支持表模式可变的元数据管理方法 | |
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN1983266B (zh) | 闪速类介质中存储事务记录的文件*** | |
JP6262874B2 (ja) | データベース実現方法 | |
CN100583832C (zh) | 数据管理方法及*** | |
CN102779180A (zh) | 数据存储***的操作处理方法,数据存储*** | |
CN106951375B (zh) | 在存储***中删除快照卷的方法及装置 | |
CN104679847B (zh) | 一种构建在线实时更新海量音频指纹库的方法和设备 | |
CN104346357A (zh) | 一种嵌入式终端的文件存取方法及*** | |
CN101464895A (zh) | 一种更新内存数据的方法、***和装置 | |
JP2001142751A (ja) | データベース管理方法および装置並びにデータベース管理プログラムを記録した記憶媒体 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
US20130013648A1 (en) | Method for database storage of a table with plural schemas | |
CN111522507B (zh) | 一种低延迟的文件***地址空间管理方法、***及介质 | |
CN103544156A (zh) | 文件存储方法及装置 | |
CN104424219A (zh) | 一种数据文件的管理方法及装置 | |
CN103106286A (zh) | 元数据的管理方法和装置 | |
CN108089821A (zh) | 一种微控制器数据存储管理的方法 | |
WO2016106757A1 (zh) | 一种存储数据的管理方法、存储管理器及存储*** | |
CN101303667B (zh) | 建立磁盘空簇表及查找磁盘空簇的方法和装置 | |
AU2018345147B2 (en) | Database processing device, group map file production method, and recording medium | |
US8190655B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
CN105512325A (zh) | 多版本数据索引的更新、删除与建立方法及装置 | |
US7689634B2 (en) | Flexible approach to store attribute information (META-DATA) related to files of a file system | |
CN106874329A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140528 Termination date: 20170121 |
|
CF01 | Termination of patent right due to non-payment of annual fee |