接着前面的,本节介绍剩下的索引信息管理和视图信息管理。

3、(IndexMgr)索引信息管理

IndexMgr随着系统启动而创建,如果系统已经有idxcat.tbl,说明事先已经创建过索引信息表,直接读取文件内容即可,否则需要创建一个新的索引信息表。表结构如下:

indexName tableName fieldName

新创建索引的时候,需要向idxcat.tbl文件中添加一条记录。

支持返回指定表上创建的所有索引信息,返回的是一个<fieldName,indexINfo>的字典。

IndexInfo维护着某个列上添加的索引的信息,包括:

a. 指定表的指定列中非重复值的数目;

b. 按照某个值在该列上搜索时,访问磁盘块Block个数的估计值;

c. 按照某个值在该列上搜索时,查询得到的记录条数的估计值。

  • 指定表的指定列中非重复值的数目

如果参数中的列名与索引列名相同,则值为1;否则,为统计信息记录的索引列的非重复值和本索引输出记录数的最小值。这里理解上有点问题,稍后在Index中一并解释下。

public int distinctValues(string fname)
{
    if (fldname.Equals(fname))
        return 1;
    else
        return System.Math.Min(si.distinctValues(fldname), recordsOutput());
}

  • 按照某个值在该列上搜索时,访问磁盘块Block个数的估计值

首先计算出每个磁盘块中可容纳的记录条数rpb;

然后用统计信息记录的记录条数除以rpb,得到需要访问的块的数目;

最后用Hash索引来估计下使用索引是需要访问的块的数目。

  • 按照某个值在该列上搜索时,查询得到的记录条数的估计值

用统计信息记录的总记录数除以不重复记录条数,得到每个搜索值可得到的输出记录数

除了上面的信息之外,IndexInfo还提供open()方法,返回一个index对象。该对象默认为HashIndex,不可更改。如果想用BTreeIndex,稍后会详细说明。

Index是一个特殊的表,表模式如下:

blockNumber idNumber dataValue

可以理解为[ RID | dataVal ],其中RID由两部分组成,真实记录在真实数据表中的块号 和 块内的编号。

关于索引的如何使用,稍后会有详细说明。

4、(ViewMgr)视图信息管理

同样视图信息管理随系统启动而创建。视图信息保存在viewcat.tbl表中,表的模式如下:

viewName viewDef

创建视图时,将视图信息按照上面的默写,写入到文件中。

注意,可以看下前面对simpledb支持的SQL的语法,这里的viewDef实际上就是一条SQL语句。

在必要的时候,通过扫面viewcat.tbl文件,根据视图名称,得到视图的定义信息viewDef。

转载于:https://www.cnblogs.com/YFYkuner/archive/2012/09/18/2691720.html

再读simpledb 之 元数据管理(3)相关推荐

  1. 一文读懂元数据管理!

    原文:一文读懂元数据管理! - 知乎 数字化时代,企业需要知道他们拥有什么数据,数据在哪里.由谁负责,数据中的值意味着什么,数据的生命周期是什么,哪些数据安全性和隐私性需要保护,以及谁使用了数据,用于 ...

  2. 【收藏】关于元数据(Metadata)和元数据管理,这是我的见过最全的解读!

    本文主要从元数据的定义.作用.元数据管理现状.管理标准和元数据管理功能等方面讲述了我对元数据(Metadata)和元数据管理的认知及理解. 元数据管理 一.元数据的定义 按照传统的定义,元数据(Met ...

  3. Hadoop生态圈(十三)- Namenode元数据管理及各组件工作机制

    目录 前言 1. Namenode元数据管理 1.1 元数据是什么 1.2 元数据管理概述 1.2.1 内存元数据 1.2.2 磁盘元数据 1.2.2.1 fsimage内存镜像文件 1.2.2.2 ...

  4. 数据仓库与元数据管理

    数据仓库与元数据管理 1. 前言 在事务处理系统中的数据,主要用于记录和查询业务情况.随着数据仓库(DW)技术的不断成熟,企业的数据逐渐变成了决策的主要依据.数据仓库中的数据是从许多业务处理系统中抽取 ...

  5. 业务元数据管理——洞悉数据背后的业务含义

    本文转自微信号EAWorld.扫描下方二维码,关注成功后,回复"普元方法+",将会获得热门课堂免费学习机会! 目前,很多企业已经意识到,由于业务人员看不懂系统中存储的数据,所以难以 ...

  6. 项目纪实--如何搭建一个高可用强一致性灵活元数据管理的数据平台实现高效可靠的数据分发等功能

    项目纪实–大型数据平台系统构建 背景:18年入职这家轻松的国企,在19年难得接(抢)到一个有意思的项目,开始定义还比较简单:写一个CMS用于近期某XX项目中发布数据,开始是找到别人被别婉拒后我主动给接 ...

  7. 读懂 JVM 内存管理这篇就够了

    读懂 JVM 内存管理这篇就够了 JVM 的内存结构 程序计数器 作用 概述 PC寄存器的常见问题 虚拟机栈 栈中可能出现的异常 栈的存储单位 栈运行原理 栈帧的内部结构 局部变量表 槽 Slot 操 ...

  8. TiKV 在京东云对象存储元数据管理的实践

    京东云对象存储是在 2016 年作为公有云对外公开的,主要特点是可靠.安全.海量.低成本,应用于包括一些常用的业务场景,比如京东内部的京东商城视频/图片云存储,面向京东云公有云外部的开发者的服务,和面 ...

  9. qstring 属于元数据类型吗_数据仓库的“元数据管理”

    作者 | 李谦恒 数据工程师.逻辑重于代码,高效胜过勤奋.崇尚life work balance. 引言 元数据管理是企业数据治理的基础,是数据仓库的提升:作为一名数据人,首要任务就是理解元数据管理. ...

最新文章

  1. 从UV位置图获得3D人脸
  2. Python元组与字典详解
  3. Rxjava+Retrofit+Mvp的使用实例(基于retrofit2.1.0)
  4. Vue——[Props with type Object/Array must use a factory function to return the default value.]解决方案
  5. 身边的设计模式(一):单例 与 RedisCacheManager
  6. dbcp连接池配置参数
  7. CompletableFuture异步任务的简单使用
  8. MES系统整体解决方案
  9. 【MIUI9】小米平板1MIPAD1欧版ROM历史ROM下载地址-另附挥泪典藏版V9系统
  10. 教你5分钟制作出一个Unity图像追踪的AR Demo(使用EasyAR插件4.1版本,个人版,免费)
  11. HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)
  12. 大数据学习相关内容总结
  13. VMware Workstation虚拟机设置联网(Linux)
  14. CIO:主数据管理( MDM)知多少
  15. 惠普打印机墨盒更换教程_惠普彩色打印机如何换墨盒 惠普打印机墨盒更换方法【介绍】...
  16. 大学校园无线覆盖解决方案
  17. RocketMQ前置:完全图解Raft协议基础
  18. OBS Studio的安装与使用
  19. 记一次snmp远程连接失败的记录
  20. A Game of Thrones(59)

热门文章

  1. 大型网站架构模式之二
  2. 如何区别指针数组和数组指针?
  3. springmvc三十一:spring mvc整体结构
  4. nginx 认证多个客户端的问题
  5. javascript - 全局与局部作用域
  6. Cocoapods安装过程【转载】
  7. authentication list default is not defined for PPP
  8. 解决Virtualbox无法安装Windows 8.1
  9. 在.net中如何禁用或启用DropDownList的Items
  10. Android多媒体扫描过程(Android Media Scanner Prosess)