Databricksにてメタデータ管理（DDL）を実施する上での管理対象項目の検討

## 概要
Databricksのメタデータ管理を実施する上での管理対象項目の検討するために、項目を洗い出しました。
検討中であるため、修正予定です。

## 管理対象の項目

### データベースの定義
- 基本情報
    - 名称
    - 規定ディレクトリ
    - ディスクリプション（コメント）
    - その他プロパティ

### テーブル定義


- 通常のテーブル情報
    - 基本情報
        - 物理列
        - カラムの位置
        - カラム名
        - カラムのデータ型
        - カラムのディスクリプション（コメント）
            - 配列にすることで、日本語列名？
        - テーブル分類
            - グローバルテーブル
            - ビュー
            - 一時ビュー
            - グローバル一時ビュー
            - Delta liveテーブル
            - Delta liveビュー
        - 計算列（生成列）
            - カラム名
            - 計算ロジック
    - パーティション列
    - ロケーション
    - テーブルディスクリプション（コメント）
    - テーブルへの権限付与
        - 行レベルセキュリティ
            - ルールベースによる行レベルセキュリティ
            - データ権限（認可）テーブルを利用した行レベルセキュリティ
        - 列レベルセキュリティ
            - 列への参照権限付与による列レベルセキュリティ
            - マスキング
                - 永続データマスキングによる列レベルセキュリティ
                - 動的データマスキングによる列レベルセキュリティ
    - テーブルプロパティ
        - 共通
            - 統計情報
            - 統計情報を取得対象のカラム　dataSkippingNumIndexedCols = -1（テーブルごとに設計）
            - 制約
                - NULL制約
                - Check制約
            - タイムトラベル関連
                - ログ保持期間　delta.logRetentionDuration = "interval 30 days"
                - データの保持期間　delta.deletedFileRetentionDuration = "interval 7 days"
            - 変更データフィード
                - 変更データフィードの有効化　delta.enableChangeDataFeed = true
            - 外部システムからdelta lake参照時に利用するマニフェストファイルへの対応
                - マニフェストファイルの自動更新　delta.compatibility.symlinkFormatManifest.enabled=true
            - カスタマイズプロパティ
                - 日本語のテーブル名 'table_name_ja-jp' = 'テスト'
        - バッチ処理対象のテーブル
            - 共通
                - 最適化された書き込み　delta.autoOptimize.optimizeWrite = true
                - 自動圧縮　delta.autoOptimize.autoCompact = true
            - 7.2以前のクラスターで参照しない場合
                - delta.checkpoint.writeStatsAsJson = false
        - ストリーミング処理対象のテーブル
            - 数分の許容ができる場合
                - 'delta.checkpoint.writeStatsAsStruct' = 'true'
    - ブルームフィルター
    - 集計ロジック
        - CTASのテーブル
            - SQL文
        - Delta liveテーブル・Delta liveビュー
            - SQL文 or Sparkデータフレーム操作

- Feature Storeのテーブル情報
    - テーブル名
    - 処理ロジックを含むスキーマ
    - 主キー
    - ディスクリプション
    - パーティション列


### 関数の定義
   
## 検討中
- データソースのインターフェースファイル
    - テーブルプロパティにいれる？
- データ取得元
    - テーブル定義
        - テーブルプロパティにいれる？
    - カラム定義
        - テーブルのコメントに、配列でいれる？
- データ取得に利用しているコード
    - テーブルプロパティにいれる？


## 対象外

- 共通
  - タイムゾーン　spark.sql.session.timeZone
    - クラスターごと
    - セッション
- 書き込み時のプロパティ
    - バッチ処理対象のテーブル
        - スキーマの展開　mergeschema = true
    - ストリーミング処理対象のテーブル
        - パーティション数をコア数と同値に　spark.sql.shuffle.partitions", sc.defaultParallelism
        - 同時処理するファイル数　maxFilesPerTrigger
        - チェックポイントファイルのパス　checkpointLocation
        - RocksDB 状態ストアの構成　"spark.sql.streaming.stateStore.providerClass",
  "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
- 書き込み後の対応
    - Delta Lakeの場合
        - Optimize
            - Z-Ordering
        - Vacuum
            - データの削除
    - Parquetの場合
        - MSCK REPAIR TABLE
            - 

  
## 参考リンク
- Databricks機能関連ドキュメント
    - [Databricks Feature Store - Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/applications/machine-learning/feature-store)
    - [Delta Live Tables - Azure Databricks | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/data-engineering/delta-live-tables/)
- パラメータ関連公式ドキュメント
  - [テーブルバッチの読み取りと書き込み - Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/delta/delta-batch)
  - [対話型クエリのパフォーマンスを向上させる](https://docs.microsoft.com/ja-jp/azure/databricks/delta/optimizations/file-mgmt#improve-interactive-query-performance)
  - [自動最適化-Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/delta/optimizations/auto-optimize#auto-compaction)
  - [Change data feed-Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/delta/delta-change-data-feed)
  - [ベスト プラクティス - Delta Lake - Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/delta/best-practices)
  - [テーブルユーティリティコマンド-Azure Databricks - Workspace | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/databricks/delta/delta-utility)
- 非公式ドキュメント
  - [DeltaConfigs - The Internals of Delta Lake (japila.pl)](https://books.japila.pl/delta-lake-internals/DeltaConfigs/)


## 更新履歴