概念 - 规范 - Schema

Schema

该Schema文件的版本从 0 开始计数,目前保留了所有版本的Schema文件。可能存在依赖旧Schema版本的旧文件,因此删除此类文件时应谨慎行事。

Schema 文件为 JSON 格式,其内容包括:

  1. 字段:数据字段列表,数据字段包含 ID、名称、类型,字段 ID 用于支持schema演变。
  2. 分区键:字段名称列表,表的分区定义,不可修改。
  3. 主键:字段名称列表,表的主键定义,不可修改。

举例

  "version" : 3,
  "id" : 0,
  "fields" : [ {
    "id" : 0,
    "name" : "order_id",
    "type" : "BIGINT NOT NULL"
  }, {
    "id" : 1,
    "name" : "order_name",
    "type" : "STRING"
  }, {
    "id" : 2,
    "name" : "order_user_id",
    "type" : "BIGINT"
  }, {
    "id" : 3,
    "name" : "order_shop_id",
    "type" : "BIGINT"
  } ],
  "highestFieldId" : 3,
  "partitionKeys" : [ ],
  "primaryKeys" : [ "order_id" ],
  "options" : {
    "bucket" : "5"
  },
  "comment" : "",
  "timeMillis" : 1720496663041
}

兼容性

对于旧版本:

  • 版本 1:如果没有设置桶键,则应将“bucket”(桶)选项设置为 1 。
  • 版本 1 和 2:如果不存在 file.format 键,则应将 file.format -> orc 放入选项中。

数据列

DataField 表示表中的一列。

  1. id: 整数类型,列标识符,自动递增,用于表结构演变。
  2. name:字符串,列名。
  3. type: 数据类型方面,它与 SQL 中的字符串类型非常相似。
  4. description: 字符串。

更新Schema

更新Schema应当生成一个新的Schema文件。

└── default.db
    └── my_table
        ├── schema
            ├── schema-0
            ├── schema-1
            └── schema-2

该快照中提到了一个“模式”(schema)的相关内容。数值最大的模式文件通常就是最新的模式文件。

旧的模式文件不能直接删除,因为可能存在引用旧模式文件的旧数据文件。在读取表时,需要依靠它们来进行模式演变读取操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基本概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合 关系模式:描述关系数据库中表的结构和约束的...
    bowen_wu阅读 113评论 0 0
  • SQLite 是一个开源的嵌入式关系型数据库,是一个自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎...
    派派森森阅读 1,085评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,468评论 0 9
  • 一、背景 在当今世界,大数据时代的来临,带来了信息技术发展的巨大变革,并深刻影响着社会生产和人民生活的方方面面。如...
    Andy_shenzl阅读 359评论 0 2
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 41,119评论 0 48