浅谈CirroData数据库元数据体系架构实现

原创 码农  2019-12-16 14:32:12  阅读 1110 次 评论 1 条

CirroData是基于分布式存储系统的新一代MPP数据库,数据和元数据存储于分布式文件系统上。分布式存储具备高可用、易扩展的能力,使得CirroData数据的存储和扩容得以保障。本文将从元数据的结构模型、存储模型和实现技术等多方面来描述CirroData的元数据体系结构。

什么是元数据?简而言之,就是描述数据的数据。


在数据库领域中,元数据是指描述定义数据结构的数据。数据库中定义了各类数据库对象,数据存储格式,数据规则和算法等等,而数据库元数据就是描述这些数据库中定义的对象、存储规格和算法的数据。其作用主要概括有两点:


  • 提供给数据库管理系统的基本管理信息,帮助数据库用户理解数据;


  • 数据库运作的支撑,通过元数据的信息的描述,支撑数据库的请求作业能够正确运行。


概括来讲:CirroData的元数据是描述数据的组织结构和存储位置信息的数据,描述数据库规则和定义以及其他辅助信息的数据。


数据库是软件产品中发明次数最多的产品,元数据结构模型各大厂商有其特有的定义。CirroData的元数据设计同样需要具备数据库元数据最基本的能力和作用。元数据的结构模型设计之处,借鉴了通用交易数据库的元数据结构模型,抽象出由库-模式-表-数据分区的特征模型;元数据以分布式文件系统作为存储介质,由此诞生了当前CirroData的元数据结构模型。


结合传统数据库元数据模型和层次、星型元数据集成体系结构,CirroData抽象出数据库(database)、用户(user)、表(table)、视图(view)、存储过程(store procedure)、函数(function)、索引(index)等数据库对象,其组织结构如图所示:


浅谈CirroData数据库元数据体系架构实现 架构 第1张


  • CirroData是多数据库对象的数据库,一个进程实例中可以创建多个数据库对象,支撑大数据平台分库管理数据。


  • 用户:沿用客户使用习惯,借鉴Oracle用户设计模式,一个用户对应一个schama对象,schema对象作为用户表管理的实体表现。


  • 数据表:描述用户数据块的结构定义;一个表中包含多个数据列,每个数据列有各自的类型。


  • 分区,数据分片:逻辑上对表数据的横向切分,表分区把一个大的物理表分成若干个小物理表,可以使得这些小物理表在逻辑上可以当一张表来使用。数据分区在大数据查询分析场景下极大提升数据库的查询性能。


  • 存储过程、函数:用户自定义一组为完成特定功能的SQL语句集,一次编译,用户通过指定存储过程名和给定的参数来执行。存储过程,为大数据平台中,数据加工和可定制化工作提供便利。


  • CirroData抽象定义实现了当前主流数据库中所必须的数据库对象,如视图、包、索引、权限对象等,在此不再一一列举。


数据库对象的定义和元模型的设计大同小异,每个数据库根据存储系统和功能特性,设计了元数据模型结构,存在着各自的差异性。简单说明了元数据元模型和数据库对象的抽象,后续对元数据的存储、缓存以及MVCC实现做说明。


元数据在分布式文件系统中的存储,极大提升了元数据存储系统的健壮性和高可用性,分布式文件系统的稳定性和安全性也经过了各企业大数据平台的验证和考验。时至今日,CirroData数据库已成功部署和应用在上百家大型客户的大数据生产平台。为客户提供安全可靠的海量数据加工和分析服务。而且,根据客户使用反馈,元数据服务也在不断的优化和改进中。


下面,结合分布式文件系统的特性,对如何进行元数据的元模型进行分割和存储进行介绍。存储结构如下图:


浅谈CirroData数据库元数据体系架构实现 架构 第2张


  • 以目录层次进行数据库对象的划分,即所有同类数据对象如所有Database在同一目录层级,归属一个Database的所有Schema在一个目录层级,归属一个schema对象的表在一个目录层级。并以目录层级的方式保留其归属关系。(/database/schema/table.)


  • 以数据库对象为个体,全局事务id为数据对象版本和对象唯一id(事务id全局唯一,单调递增),进行多版本存储管理元数据数据信息。数据库对象的操作,是通过DDL语句操作的,根据DDL操作所涉及的数据库对象,进行元数据信息存储文件的切分。如database、schema、table等数据库对象的操作,DDL的操作都是涉及到单个对象,可以选择已单个对象的信息作为一个文件存储。Partition、dblink等信息,多个对象作为一个文件进行存储等等。


  • MVCC,多版本并发控制:上文已经提到了DDL操作和元数据信息文件的对应关系,对数据库引擎来说,一个用户请求可以对应一个事务,每个写事务都会存在全局唯一的事务ID,对一个元数据对象的更改操作,都会产生新版本的文件数据信息,并不需要锁机制和破坏其他查询请求。已实现多版本并发控制的需求。旧版本文件也会通过事务的purge机制进行清理,清理垃圾碎片文件的存在。


  • 分布式锁:分布式数据库中,存在多节点并发DDL的操作,即对同一个对象在不同节点进行修改操作,通过分布式锁来保障DDL的正确执行和元数据的正确性。


  • 缓存:CirroData分布式数据库系统,元数据缓存选取了常用的LRU缓存机制,在一个海量数据的分布式数据库系统中,计算节点存在几百甚至上千,每个数据节点服务的业务数据不同,所以全量缓存元数据的方式(实属浪费资源)并不可取,而通过LRU和使用时加载方式,可以充分发挥缓存性能。


本文介绍了CirroData的元数据的基本组织架构和实现概念,可以对元数据体系结构有个大概的认识,技术细节需要结合具体的场景和结构进行详述,这里就不做具体说明了。

本文地址:https://www.itcodeit.com/post/18.html
版权声明:本文为原创文章,版权归 码农 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表

  1. 访客
    访客  @回复

    怎么联系你