عندما تظهر الحاجة إلى توثيق مخططات قاعدة البيانات ، توفر نظم إدارة قواعد البيانات المختلفة أدواتها الخاصة لمهام مماثلة. ويدعم معظمهم DESC table_name
، بما في ذلك ClickHouse. ومع ذلك ، فإن نتيجة هذا الأمر ليست معبرة كما نود.
DESCRIBE TABLE data_lr name type default_type default_expression comment codec_expression ttl_expression Path String ZSTD(3) Value Float64 Gorilla, LZ4 Time UInt32 DoubleDelta, LZ4 Date Date DoubleDelta, LZ4 Timestamp UInt32 DoubleDelta, LZ4
وفي الوقت نفسه، فإن جداول النظام tables
و columns
تحتوي على معلومات شاملة، والجمع التي يمكنك الحصول عليها هنا هو نتيجة جميلة:

وحي - الهام
قبل البدء في رؤية الحل الخاص بي بعناية ، والخالي من العيوب القاتلة ، بحثت عن الخيارات المتاحة. وقد ألهمني هذا العمل لبدء مشروعي الخاص. تم استعارة بعض الفراغات مع الامتنان من هناك ، مع الإسناد.
ما هو PlantUML
بضع كلمات حول ماهية هذا المنتج. للحصول على أفضل فهم ، أنصحك بالذهاب إلى الصفحة الرسمية . باختصار ، هذا برنامج يقوم بتحويل الوصف النصي للرسومات التخطيطية ، على سبيل المثال:
@startuml Bob -> Alice : hello @enduml
بالصور

, , , , . Atlassian Confluence, wiki. pandoc ( ), LaTeX, .
: system.tables , , , , . , system.columns, . , , . .
, , . , . , ReplacingMergeTree Version. . Replicated*MergeTree. MaterializedView . , MV.
. , ± . -. .
. , Distributed , Buffer *MergeTree
, . . .
@startuml ' This diagram is generated with https://github.com/Felixoid/clickhouse-plantuml !define Table(x) class x << (T,mistyrose) >> !define View(x) class x << (V,lightblue) >> !define MaterializedView(x) class x << (m,orange) >> !define Distributed(x) class x << (D,violet) >> hide empty methods hide stereotypes skinparam classarrowcolor gray Distributed(graphite.data) { ENGINE=**Distributed** ..engine config.. cluster: graphite_data database: graphite table: data_lr sharding_key: cityHash64(Path) ==columns== Path: String Value: Float64 Time: UInt32 Date: Date Timestamp: UInt32 } Table(graphite.data_lr) { ENGINE=**ReplicatedGraphiteMergeTree** ..engine config.. rollup_config: graphite_rollup ..replication.. zoo_path: /clickhouse/tables/graphite.data_lr/{shard} replica: {replica} ==columns== Path: String <size:15><&signal></size> Value: Float64 Time: UInt32 <size:15><&signal></size> Date: Date <size:15><&list-rich></size> Timestamp: UInt32 ..<size:15><&list-rich></size>partition key.. toYYYYMMDD(toStartOfInterval(Date, toIntervalDay(3))) ..<size:15><&signal></size>sorting key.. Path, Time } Table(graphite.index) { ENGINE=**ReplicatedReplacingMergeTree** ..engine config.. version: Version ..replication.. zoo_path: /clickhouse/tables/graphite.index/1 replica: {replica} ==columns== Date: Date <size:15><&list-rich></size> <size:15><&signal></size> Level: UInt32 <size:15><&signal></size> Path: String <size:15><&signal></size> Version: UInt32 ..<size:15><&list-rich></size>partition key.. toYYYYMM(Date) ..<size:15><&signal></size>sorting key.. Level, Path, Date } Table(graphite.tagged) { ENGINE=**ReplicatedReplacingMergeTree** ..engine config.. version: Version ..replication.. zoo_path: /clickhouse/tables/graphite.tagged/1 replica: {replica} ==columns== Date: Date <size:15><&list-rich></size> <size:15><&signal></size> Tag1: String <size:15><&signal></size> Path: String <size:15><&signal></size> Tags: Array(String) Version: UInt32 ..<size:15><&list-rich></size>partition key.. toYYYYMM(Date) ..<size:15><&signal></size>sorting key.. Tag1, Path, Date } graphite.data_lr -|> graphite.data @enduml

, — ClickHouse. ClickHouse. , - issue. , .
, - .
, pypi:
pip install clickhouse-plantuml clickhouse-plantuml -h