データボルト

Snowflakeで学ぶデータモデリング入門

Nuno Rocha

Director of Engineering

データボルトモデルの導入

  • データボルトモデル: 履歴追跡に特化したモデリング手法。ハブ、リンク、サテライトを用いる。

データボルトモデル

Snowflakeで学ぶデータモデリング入門

データボルトの構成要素

  • ハブ: 単一のビジネスキーで一意のビジネス概念を表す。

データボルトモデル: ハブ

Snowflakeで学ぶデータモデリング入門

データボルトの構成要素 (1)

  • リンク: ハブ間の関係・やり取りを保持する。

データボルトモデル: リンク

Snowflakeで学ぶデータモデリング入門

データボルトの構成要素 (2)

  • サテライト: ハブ/リンクに関する記述的・履歴情報を格納する。

データボルトモデル: サテライト

Snowflakeで学ぶデータモデリング入門

ハブの作成

大学のデータボルト: ハブ

Snowflakeで学ぶデータモデリング入門

ハブの作成 (1)

  • AUTOINCREMENT: 各新規行に一意で連番の数値を自動生成する属性。
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Snowflakeで学ぶデータモデリング入門

ハブの作成 (2)

  • 自動生成の一意数値キーと概念IDを持つ新規ハブを作成:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0)
);
1 次に、各概念を識別するビジネスキーを列挙します。student_id が各学生を識別します。
Snowflakeで学ぶデータモデリング入門

ハブの作成 (3)

  • 履歴追跡用の属性を追加:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Snowflakeで学ぶデータモデリング入門

ハブの作成 (4)

  • 新しい classes ハブを作成:
CREATE OR REPLACE TABLE hub_classes (
    class_key NUMBER(10,0)
          AUTOINCREMENT 
          PRIMARY KEY,
    class_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
  • 新しい schools ハブを作成:
CREATE OR REPLACE TABLE hub_schools (
    school_key NUMBER(10,0) 
          AUTOINCREMENT 
          PRIMARY KEY,
    school_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Snowflakeで学ぶデータモデリング入門

リンクの作成

大学のデータボルト: リンク

Snowflakeで学ぶデータモデリング入門

リンクの作成 (1)

  • 自動生成の一意数値キーを持つリンクエンティティを作成:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Snowflakeで学ぶデータモデリング入門

リンクの作成 (2)

  • 他エンティティへの関係を追加:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_key NUMBER(10,0),
    class_key NUMBER(10,0),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
Snowflakeで学ぶデータモデリング入門

リンクの作成 (3)

  • 履歴追跡用の属性を追加:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_key NUMBER(10,0),
    class_key NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
Snowflakeで学ぶデータモデリング入門

リンクの作成 (4)

  • 新しい offerings リンクエンティティを作成:
CREATE OR REPLACE TABLE link_offerings (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    class_key NUMBER(10,0),
    school_key NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key),
    FOREIGN KEY (school_key) REFERENCES hub_schools(school_key)
);
Snowflakeで学ぶデータモデリング入門

サテライトの作成

大学のデータボルト: サテライト

Snowflakeで学ぶデータモデリング入門

サテライトの作成 (1)

  • 概念の属性を列挙する新規サテライトを作成:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255)
);
Snowflakeで学ぶデータモデリング入門

サテライトの作成 (2)

  • 履歴追跡用の属性を追加:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Snowflakeで学ぶデータモデリング入門

サテライトの作成 (3)

  • サテライトと対応するハブを関連付け:
CREATE OR REPLACE TABLE sat_student (
    student_key NUMBER(10,0),
    name VARCHAR(255),
    email VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key)
);
Snowflakeで学ぶデータモデリング入門

サテライトの作成 (4)

  • 新しい class サテライトを作成:
CREATE OR REPLACE TABLE sat_class (
    class_key NUMBER(10,0),
    class_name VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (class_key) 
    REFERENCES hub_classes(class_key)
);
  • 新しい school サテライトを作成:
CREATE OR REPLACE TABLE sat_school (
    school_key NUMBER(10,0),
    school_name VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (school_key) 
    REFERENCES hub_schools(school_key)
);
Snowflakeで学ぶデータモデリング入門

用語と機能の概要

  • データボルトモデル: 履歴追跡に特化したモデリング手法。ハブ、リンク、サテライトを用いる。
  • ハブ: 単一のビジネスキーで一意のビジネス概念を表す。
  • リンク: ハブ間の関係・やり取りを保持する。
  • サテライト: ハブ/リンクに関する記述的・履歴情報を格納する。
  • CREATE OR REPLACE TABLE: テーブルを作成または置換するSQLコマンド。
  • PRIMARY KEY: 一意識別子となる列を定義する句。
  • AUTOINCREMENT: 各新規行に一意で連番の数値を自動生成する属性。
  • FOREIGN KEY (...) REFERENCES (...): 2つのテーブルを関連付ける句。
Snowflakeで学ぶデータモデリング入門

機能の概要

CREATE OR REPLACE TABLE table_name (
      -- Create an auto generated unique value as primary key
      unique_key column_datatype AUTOINCREMENT PRIMARY KEY,
      other_business_key column_datatype,
      foreign_column column_datatype,
      other_foreign_column column_datatype,
      -- Adding relationship with other entities
      FOREIGN KEY(foreign_column) REFERENCES foreign_table(PK_from_foreign_table),
      FOREIGN KEY(other_foreign) REFERENCES foreign_table(PK_from_other_foreign)
);
Snowflakeで学ぶデータモデリング入門

練習しましょう!

Snowflakeで学ぶデータモデリング入門

Preparing Video For Download...