You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/01/16 12:41:04 UTC
[kylin] branch doc5.0 updated: Update community activity page
This is an automated email from the ASF dual-hosted git repository.
xxyu pushed a commit to branch doc5.0
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/doc5.0 by this push:
new c62dbf3fc8 Update community activity page
c62dbf3fc8 is described below
commit c62dbf3fc81f79381b1810c369a0c9551e6208a1
Author: XiaoxiangYu <xx...@apache.org>
AuthorDate: Mon Jan 16 19:44:39 2023 +0800
Update community activity page
---
.../2022-12-18-Introduction_of_Metadata/index.md | 13 +
.../protocol-buffer/metadata.proto | 364 +++++++++++++++------
.../diagram/ER-diagram/metadata_store.png | Bin
.../diagram/ER-diagram/metadata_store.puml | 0
.../write_and_read_persistent_entity.puml | 0
.../write_and_read_persistent_entity_cn.png | Bin
.../write_and_read_persistent_entity_cn.puml | 0
.../class_diagram/metastore_resource_store.png | Bin
.../class_diagram/metastore_resource_store.puml | 0
.../2023_01_16-Introduction_of_Metastore/index.md} | 38 ++-
website/blog/authors.yml | 5 +-
website/docs/community.md | 18 +-
.../development/how_to_understand_kylin_design.md | 7 +-
website/sidebars.js | 6 +-
14 files changed, 313 insertions(+), 138 deletions(-)
diff --git a/website/blog/2022-12-18-Introduction_of_Metadata/index.md b/website/blog/2022-12-18-Introduction_of_Metadata/index.md
index 4a5ef1d012..db9703a8c7 100644
--- a/website/blog/2022-12-18-Introduction_of_Metadata/index.md
+++ b/website/blog/2022-12-18-Introduction_of_Metadata/index.md
@@ -7,6 +7,19 @@ hide_table_of_contents: false
date: 2022-12-18T17:00
---
+:::tip Before your read
+**Target Audience**
+- Kylin 5.0 的开发者和用户
+
+**What will you learn**
+- 了解 Kylin 5.0 的元数据 Schema 设计和原理
+
+💬 Kylin5 对[元数据的设计](https://github.com/apache/kylin/blob/doc5.0/website/blog/2022-12-18-Introduction_of_Metadata/protocol-buffer/metadata.proto)
+做了比较大的调整,本文将针对这些调整做比较详细的介绍。
+:::
+
+<!--truncate-->
+
# Introduction of Metadata
Kylin5 对元数据的组织结构做了比较大的调整,本文将针对这些调整做比较详细的介绍。相比于 Kylin4,Kylin5 的元数据的一个显著特点是项目级隔离,也即每个项目彼此独立、互不干扰。本文会从项目开始,分别展开Table、Model、IndexPlan、Segment、Job 各个部分的内容。更宽泛地说,Kylin5 的元数据还包括元数据更新审计日志(AuditLog)、事务表(Epoch)、权限(ACL)、查询历史(Query History) 等内容。所有的这些内容都很重要,但作为入门级的介绍,本文不涉及更宽泛的内容,而是尽量把篇幅控制在元数据中最为基础的那部分,以帮助更多的开发者快速地了解和参与到 Kylin5 的研发。当然,作为一篇入门级介绍性文章,非研发人员阅读也能有所收获。接下来让我们切入主题。
diff --git a/website/protocol-buffer/metadata.proto b/website/blog/2022-12-18-Introduction_of_Metadata/protocol-buffer/metadata.proto
similarity index 57%
rename from website/protocol-buffer/metadata.proto
rename to website/blog/2022-12-18-Introduction_of_Metadata/protocol-buffer/metadata.proto
index f1dc3f877d..1173f6e676 100644
--- a/website/protocol-buffer/metadata.proto
+++ b/website/blog/2022-12-18-Introduction_of_Metadata/protocol-buffer/metadata.proto
@@ -16,112 +16,249 @@
* limitations under the License.
*/
+/**************************************************************************************************
+ * 文档说明
+ *
+ * Kylin 5.0 的元数据和之前的版本存在比较大的额不兼容情况, 所以这里希望梳理元数据字段的含义, 方便用户和开发者进行
+ * 理解和开发. (https://kylin.apache.org/5.0/blog/introduction_of_metadata_cn)
+ *
+ * 标签说明
+ * - [TODO] 这个说明待补充
+ * - [Trivial] 这个配置项不太重要, 不太影响产品行为, 可以不关心
+ *
+ * 对应版本 : 5.0.0-alpha
+ * 更新时间 : 2023-01-16
+ ************************************************************************************************/
syntax = "proto3";
-package org.apache.kylin.protobuf;
+package org.apache.kylin.metadata;
-option java_multiple_files = true;
-option java_package = "org.apache.kylin.protobuf";
-option java_outer_classname = "KylinDataModel";
+// ================================================================================================
+// ================================================================================================
+// ===================================== Part I ===================================================
+/**
+ * 包含了所有元数据的公共字段
+ */
+message RootPersistentEntity {
+ /**
+ * 该元数据的全局唯一标示符
+ */
+ string uuid = 1;
+ int64 createTime = 2;
+ int64 lastModified = 3;
+
+ // [Trivial] 标记这个元数据是由哪个版本的 Kylin 生成的, 可以用作元数据版本校验, 当前实际未使用
+ string version = 4;
+ /**
+ * 用于避免元数据写入相互覆盖的自增字段
+ */
+ int64 mvcc = 5;
+ /**
+ * TODO
+ */
+ bool isBroken = 6;
+}
message ProjectInstance {
- string name = 1;
+ RootPersistentEntity basicProp = 1;
+ string name = 2;
+ string owner = 3;
+ ProjectStatusEnum status = 4;
+ int64 createTimeUTC = 5;
+ string defaultDatabase = 6;
+ string description = 7;
+
+ /**
+ * TODO
+ */
+ string principal = 8;
+
+ /**
+ * TODO
+ */
+ string keytab = 9;
+
+
+ MaintainModelType maintain_model_type = 10; // [Trivial]
+
+ /**
+ * 项目级别的配置(键值对), 可以覆盖全局的配置
+ */
+ map<string, string> override_kylin_properties = 11;
+
+ /**
+ * 项目级别的 Segment 自动合并策略的配置
+ */
+ SegmentConfig segment_config = 12;
+
enum ProjectStatusEnum {
+ /**
+ * TODO:项目 Disable 有什么影响
+ */
DISABLED = 0;
ENABLED = 1;
};
- ProjectStatusEnum status = 2;
- string default_database = 3;
- string description = 9;
- // common properties
- string uuid = 4;
- string owner = 5;
- int64 createTime = 6;
- int64 lastModified = 7;
- string version = 8;
-
- // Configuration settings
- map<string, string> settings = 10;
+ /**
+ * TODO
+ */
+ enum MaintainModelType {
+ MANUAL_MAINTAIN = 0;
+ }
}
message TableDesc {
- string uuid = 1;
- int64 lastModified = 2;
- int64 createTime = 3;
- string name = 4;
+ RootPersistentEntity basicProp = 1;
+
+ string name = 2;
+ repeated ColumnDesc columns = 3;
+
+ SourceTypeEnum sourceType = 4;
+
+ /**
+ * 用于区分一个表是不是视图, 外部表还是内部表
+ */
+ CatalogTableType tableType = 5;
+
+ bool isTop = 6; // [Trivial] for front end only
+
+ string data_gen = 7; // [Trivial]
+
+ /**
+ * TODO
+ */
+ string increment_loading = 8;
+
+ string last_snapshot_path = 9;
+
+ int64 last_snapshot_size = 10;
+ int64 snapshot_last_modified = 11;
+
+ int32 query_hit_count = 12;
+
+ string partition_column = 13;
+
+ map<string, string> snapshot_partitions = 14;
+ map<string, string> snapshot_partitions_info = 15;
+
+ int64 snapshot_total_rows = 16;
+ string snapshot_partition_col = 17;
+ string selected_snapshot_partition_col = 18;
+ string temp_snapshot_path = 19;
+ bool snapshot_has_broken = 20;
+
+ string database = 21;
+
+ bool transactional = 22;
+
+ bool rangePartition = 23;
+ PartitionDesc partition_desc = 24;
- SourceTypeEnum sourceType = 5;
enum SourceTypeEnum {
ID_HIVE = 0;
- ID_STREAMING = 1;
+ ID_STREAMING = 1; // UNDER DEVELOPED
ID_SPARKSQL = 5;
ID_EXTERNAL = 7;
ID_JDBC = 8;
ID_SPARK = 9;
- ID_CSV = 11;
- ID_FILE = 13;
}
- CatalogTableType tableType = 6;
+ /**
+ * 参考 org.apache.spark.sql.catalyst.catalog.CatalogTableType
+ */
enum CatalogTableType {
EXTERNAL = 0;
MANAGED = 1;
VIEW = 2;
}
+}
- string project = 10;
- string database = 11;
- repeated ColumnDesc columns = 9;
- repeated ColumnDesc partitionColumn = 14;
+// ================================================================================================
+// ================================================================================================
+// ===================================== Part II ==================================================
- string lastSnapshotPath = 12;
- int64 lastSnapshotSize = 13;
- map<string, int64> snapshotPartitions = 15;
- map<string, SnapshotPartitionInfo> snapshotPartitionInfo = 16;
- int64 snapshotTotalRows = 17;
- string selectedSnapshotPartitionCol = 18;
- string snapshotPartitionCol = 19;
- int64 snapshotLastModified = 20;
- bool snapshotHasBroken = 21;
-}
+/**
+ * Kylin 5 之前的 DataModel 和 CubeDesc 的合并
+ */
+message NDataModel {
-message DataModel {
- // common properties
- string uuid = 1;
- int64 createTime = 2;
- int64 lastModified = 3;
- string version = 4;
- string alias = 5;
- string owner = 6;
- string description = 7;
+ /**
+ * common properties(from RootPersistentEntity)
+ */
+ RootPersistentEntity basicProp = 1;
+
+ // model basic properties
+ string alias = 11;
+ string owner = 12;
+
+ // 谁上次修改了模型级别配置项
+ string configLastModifier = 13;
+
+ // 上次修改了模型级别配置项的时刻
+ int64 configLastModified = 14;
+ string description = 15;
+
+ // model schema
+ string rootFactTableName = 20;
+ string rootFactTableAlias = 21;
+
+ // 描述了事实表和维度表当前是如何连接的
+ repeated JoinTableDesc joinTables = 22;
- string rootFactTableName = 8;
- repeated JoinTableDesc joinTables = 9;
- string filterCondition = 10;
+ // 打平表时是过滤数据的条件
+ string filterCondition = 23;
+ PartitionDesc partitionDesc = 24;
- repeated NamedColumn allNamedColumns = 13; //dimensions
- repeated Measure allMeasures = 14; //measures
- repeated ComputedColumnDesc computedColumnDescs = 15;
- PartitionDesc partitionDesc = 11;
- DataCheckDesc dataCheckDesc = 18;
+ // dimension and other columns
+ repeated NamedColumn allNamedColumns = 25;
+ repeated Measure allMeasures = 26;
+ repeated ComputedColumnDesc computedColumnDescs = 27;
+
+ // misc
+ DataCheckDesc dataCheckDesc = 40;
+
+ // [Trivial]
+ string managementType = 41;
+
+ // check https://kylin.apache.org/5.0/blog/introduction_of_metadata_cn#significant-change
+ int32 semanticVersion = 42;
+
+ int32 storageType = 43;
+
+ // [Trivial]
+ ModelType modelType = 44;
+
+ // [Trivial]
+ int32 recommendationsCount = 45;
+
+ // [Trivial] for front end only
+ string canvas = 46;
+
+ // Broken reason because of schema change
+ BrokenReason brokenReason = 47;
+ RealizationCapacity capacity = 48; // [Trivial]
+
+ string multiPartitionDesc = 49;
+ string multiPartitionKeyMapping = 50;
+
+ // [Trivial] for streaming feature
+ string fusionId = 51;
+
+ // Some configuration
+ SegmentConfig segmentConfig = 61;
- SegmentConfig segmentConfig = 17;
- ModelType modelType = 26;
enum ModelType {
- BATCH = 0;
- STREAMING = 1;
- HYBRID = 2;
+ BATCH = 0; // Source is Hive only
+ STREAMING = 1; // Source is Kafka only, still under developing
+ HYBRID = 2; // Source is Kafka and Hive, still under developing
UNKNOWN = 3;
}
- RealizationCapacity capacity = 12;
- enum RealizationCapacity {
+ enum RealizationCapacity {// Useless
SMALL = 0;
MEDIUM = 1;
LARGE = 2;
}
- BrokenReason brokenReason = 20;
enum BrokenReason {
SCHEMA = 0;
NULL = 1;
@@ -129,7 +266,51 @@ message DataModel {
}
}
-message JoinTableDesc{
+/**
+ * IndexPlan 是 Kylin5 中用来组织 Index/Layout 的元数据,它里面包含两个最重要的信息 RuleBasedIndex 和 Indexes,
+ * 前者用于管理聚合组索引,后者用于管理被物化的索引。
+ */
+message IndexPlan {
+ string description = 1;
+ int64 retentionRange = 8;
+ int32 engineType = 9;
+ repeated int64 autoMergeTimeRanges = 7;
+
+ RuleBasedIndex ruleBasedIndex = 3; // agg group
+ repeated IndexEntity indexes = 4;
+ repeated DictionaryDesc dictionaries = 10;
+
+ repeated IndexEntity toBeDeletedIndexes = 6;
+ int64 nextAggregationIndexId = 11;
+ int64 nextTableIndexId = 12;
+ repeated int32 aggShardByColumns = 13;
+ map<int64, int32> layoutBucketNumMapping = 15;
+
+ map<string, string> overrideProps = 5;
+}
+
+/**
+ * Kylin 5 之前的 CubeInstance, 保存了索引和 Segment 相关数据的描述信息和统计数据
+ */
+message DataFlow {
+ RealizationStatusEnum status = 1;
+ enum RealizationStatusEnum {
+ OFFLINE = 0;
+ ONLINE = 1;
+ BROKEN = 2;
+ }
+
+ int32 cost = 2;
+ int32 queryHitCount = 3;
+ int64 lastQueryTime = 4;
+ repeated DataSegment segments = 6;
+}
+
+// ================================================================================================
+// ================================================================================================
+// ===================================== Part III =================================================
+
+message JoinTableDesc {
string table = 1;
TableKind kind = 2;
enum TableKind {
@@ -184,25 +365,6 @@ message ComputedColumnDesc {
string uuid = 7;
}
-message IndexPlan {
- string description = 1;
- int64 retentionRange = 8;
- int32 engineType = 9;
- repeated int64 autoMergeTimeRanges = 7;
-
- RuleBasedIndex ruleBasedIndex = 3; // agg group
- repeated IndexEntity indexes = 4;
- repeated DictionaryDesc dictionaries = 10;
-
- repeated IndexEntity toBeDeletedIndexes = 6;
- int64 nextAggregationIndexId = 11;
- int64 nextTableIndexId = 12;
- repeated int32 aggShardByColumns = 13;
- map<int64, int32> layoutBucketNumMapping = 15;
-
- map<string, string> overrideProps = 5;
-}
-
message RuleBasedIndex {
repeated int32 dimensions = 2; // dimension id
repeated int32 measures = 3; //measure id
@@ -256,20 +418,6 @@ message DataCheckDesc {
int64 faultActions = 3;
}
-message DataFlow {
- RealizationStatusEnum status = 1;
- enum RealizationStatusEnum {
- OFFLINE = 0;
- ONLINE = 1;
- BROKEN = 2;
- }
-
- int32 cost = 2;
- int32 queryHitCount = 3;
- int64 lastQueryTime = 4;
- repeated DataSegment segments = 6;
-}
-
message DataSegment {
string id = 1;
string name = 2;
@@ -405,8 +553,19 @@ message ColumnDesc {
string name = 2;
string datatype = 3;
- string comment = 5;
+ string comment = 4;
+
+ string data_gen = 5;
+ string index = 6;
+
+ /**
+ * 如果是一个普通列,那么这里是 null, 否则表示这是一个可计算列
+ */
+ string computedColumnExpr = 7;
string caseSensitiveName = 8;
+
+ // [Trivial] 没有意义
+ bool isPartitioned = 9;
}
message SnapshotPartitionInfo {
@@ -460,7 +619,4 @@ message TimeRange {
}
message SegmentConfig {
-}
-
-
-
+}
\ No newline at end of file
diff --git a/website/docs/development/dev_design/diagram/ER-diagram/metadata_store.png b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/ER-diagram/metadata_store.png
similarity index 100%
rename from website/docs/development/dev_design/diagram/ER-diagram/metadata_store.png
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/ER-diagram/metadata_store.png
diff --git a/website/docs/development/dev_design/diagram/ER-diagram/metadata_store.puml b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/ER-diagram/metadata_store.puml
similarity index 100%
rename from website/docs/development/dev_design/diagram/ER-diagram/metadata_store.puml
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/ER-diagram/metadata_store.puml
diff --git a/website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity.puml b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity.puml
similarity index 100%
rename from website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity.puml
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity.puml
diff --git a/website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity_cn.png b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity_cn.png
similarity index 100%
rename from website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity_cn.png
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity_cn.png
diff --git a/website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity_cn.puml b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity_cn.puml
similarity index 100%
rename from website/docs/development/dev_design/diagram/activity_diagram/write_and_read_persistent_entity_cn.puml
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/activity_diagram/write_and_read_persistent_entity_cn.puml
diff --git a/website/docs/development/dev_design/diagram/class_diagram/metastore_resource_store.png b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/class_diagram/metastore_resource_store.png
similarity index 100%
rename from website/docs/development/dev_design/diagram/class_diagram/metastore_resource_store.png
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/class_diagram/metastore_resource_store.png
diff --git a/website/docs/development/dev_design/diagram/class_diagram/metastore_resource_store.puml b/website/blog/2023_01_16-Introduction_of_Metastore/diagram/class_diagram/metastore_resource_store.puml
similarity index 100%
rename from website/docs/development/dev_design/diagram/class_diagram/metastore_resource_store.puml
rename to website/blog/2023_01_16-Introduction_of_Metastore/diagram/class_diagram/metastore_resource_store.puml
diff --git a/website/docs/development/dev_design/metastore_design.md b/website/blog/2023_01_16-Introduction_of_Metastore/index.md
similarity index 94%
rename from website/docs/development/dev_design/metastore_design.md
rename to website/blog/2023_01_16-Introduction_of_Metastore/index.md
index 6259899b8c..70f2ef76db 100644
--- a/website/docs/development/dev_design/metastore_design.md
+++ b/website/blog/2023_01_16-Introduction_of_Metastore/index.md
@@ -1,22 +1,28 @@
---
-title: Metastore Design of Kylin 5
-language: en
-sidebar_label: Metastore Design of Kylin 5
-pagination_label: Metastore Design of Kylin 5
-toc_min_heading_level: 2
-toc_max_heading_level: 6
-pagination_prev: development/how_to_understand_kylin_design
-pagination_next: null
-showLastUpdateAuthor: true
-showLastUpdateTime: true
-keywords:
- - dev-design
-draft: false
-last_update:
- date: 09/16/2022
- author: Xiaoxiang Yu
+title: Introduction of Metastore(CN)
+slug: introduction_of_metastore_cn
+authors: xxyu
+tags: [metastore, kylin5]
+hide_table_of_contents: false
+date: 2023-01-16T10:00
---
+:::tip Before your read
+**Target Audience**
+- 对 Kylin 5.0 元数据存储, 元数据缓存, 以及节点间元数据同步机制感兴趣的用户和开发者.
+- 在二次开发过程中, 想了解对 Kylin 5.0 进行元数据读写操作的最佳实践和注意事项的开发者.
+- 想对 Kylin 5.0 的元数据进行升级改造的开发者.
+
+
+**What will you learn**
+- 了解在 Kylin 5 如何进行读写元数据操作
+
+💬 Kylin 5 的开发者需要了解元数据读写的逻辑的实现和技术细节
+:::
+
+<!--truncate-->
+
+
### Target Audience
这篇文档是为有以下需求的用户和开发者而准备的:
diff --git a/website/blog/authors.yml b/website/blog/authors.yml
index 02552d7a82..189d62dcec 100644
--- a/website/blog/authors.yml
+++ b/website/blog/authors.yml
@@ -1,10 +1,11 @@
xxyu:
- name: 敏丞
+ name: Xiaoxiang Yu
title: PMC member and Release Manager of Apache Kylin
url: https://github.com/hit-lacus
image_url: https://github.com/hit-lacus.png
pfzhan:
- name: pfzhan
+ name: Pengfei Zhan
+ title: Dev of Kyligence Inc
url: https://github.com/dethrive
image_url: https://github.com/dethrive.png
diff --git a/website/docs/community.md b/website/docs/community.md
index f3ea10b7d6..0001adf1d0 100644
--- a/website/docs/community.md
+++ b/website/docs/community.md
@@ -9,15 +9,17 @@ sidebar_position: 70
- [Source code for Kylin 5.0](https://github.com/apache/kylin/tree/kylin5)
- [Source code for Kylin 5.0 website](https://github.com/apache/kylin/tree/doc5.0)
-### Community Statistics & JIRA Reports
+### Mailing List
+- [List for User](https://lists.apache.org/list.html?user@kylin.apache.org)
+- [List for Developer](https://lists.apache.org/list.html?dev@kylin.apache.org)
+### Community Activity and Statistics
- [Created vs Resolved Issues Report(recent year)](https://issues.apache.org/jira/secure/ConfigureReport.jspa?projectOrFilterId=project-12316121&periodName=weekly&daysprevious=365&cumulative=true&versionLabels=none&selectedProjectId=12316121&reportKey=com.atlassian.jira.jira-core-reports-plugin%3Acreatedvsresolved-report&atl_token=A5KQ-2QAV-T4JA-FDED_610a4d55e17d44d325672c3cb5df9a88c65906c8_lin&Next=Next)
- [Recently Created Issues Report(recent year)](https://issues.apache.org/jira/secure/ConfigureReport.jspa?projectOrFilterId=project-12316121&periodName=weekly&daysprevious=365&selectedProjectId=12316121&reportKey=com.atlassian.jira.jira-core-reports-plugin%3Arecentlycreated-report&atl_token=A5KQ-2QAV-T4JA-FDED_610a4d55e17d44d325672c3cb5df9a88c65906c8_lin&Next=Next)
-- [Monthly Github activities summary](https://github.com/apache/kylin/pulse/monthly)
-- [Github contributors of default branch](https://github.com/apache/kylin/graphs/contributors)
-- [Github Traffic (for committer only)](https://github.com/apache/kylin/graphs/traffic)
-
+- [Monthly GitHub activities summary](https://github.com/apache/kylin/pulse/monthly)
+- [GitHub's contributors of default branch](https://github.com/apache/kylin/graphs/contributors) kylin5 is not default branch at the moment
+- [GitHub Traffic (PV & UV) (for committer only)](https://github.com/apache/kylin/graphs/traffic)
+- [Release download statistics for day/week/quarter/year(for committer only)](https://logging1-he-de.apache.org/stats/) Managed by Infra Team and documented at https://infra.apache.org/release-download-pages.html
-### Mailing List
-- [List for User](https://lists.apache.org/list.html?user@kylin.apache.org)
-- [List for Developer](https://lists.apache.org/list.html?dev@kylin.apache.org)
\ No newline at end of file
+### Credit Table for Contributor
+- [Part of Kylin 5.0 Contributor Credits](https://cwiki.apache.org/confluence/display/KYLIN/Kylin+5.0+Contribution+Detail+Table)
\ No newline at end of file
diff --git a/website/docs/development/how_to_understand_kylin_design.md b/website/docs/development/how_to_understand_kylin_design.md
index e660d1ac8d..f65fbe8915 100644
--- a/website/docs/development/how_to_understand_kylin_design.md
+++ b/website/docs/development/how_to_understand_kylin_design.md
@@ -6,7 +6,7 @@ pagination_label: Overall Design of Kylin 5
toc_min_heading_level: 2
toc_max_heading_level: 6
pagination_prev: development/how_to_release
-pagination_next: development/dev_design/metastore_design
+pagination_next: null
showLastUpdateAuthor: true
showLastUpdateTime: true
keywords:
@@ -28,9 +28,10 @@ Unless more comments, all source code analysis are based on [this code snapshot]
- [x] Transaction(CRUD of Metadata)
- [ ] Epoch, AuditLog, etc.
2. Metadata Format/Schema
- - [ ] DataModel, IndexPlan, and Dataflow
- - [ ] Index and Layout
+ - [x] DataModel, IndexPlan, and Dataflow
+ - [x] Index and Layout
- [ ] Computed Column
+ - [ ] Schema Change
3. Query Engine
- [ ] How a SQL query was executed in Kylin?
- [ ] Query Cache
diff --git a/website/sidebars.js b/website/sidebars.js
index 0511fe27d8..c4f1120e6f 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -1000,11 +1000,7 @@ const sidebars = {
{
type: 'doc',
id: 'development/how_to_understand_kylin_design'
- },
- {
- type: 'doc',
- id: 'development/dev_design/metastore_design'
- },
+ }
],
},