Treasure データモデリング講義をレポート!!
技術広報のしゅーぞーです。
今日はCARTA HOLDINGS(以下、CARTA)の夏季インターンシップ Treasureのデータモデリング講義をレポートします。
データモデリング講義の講師は @t_wada さん。
データモデリングの基礎を学んだ後、「実際にPOSシステムのモデリングを行う」実習を行います。
なんと最後には、 「実際に買い出し」をして、自分たちのデータモデルが現実問題に耐えうるか検証する ことをやっています...!
Treasureの詳細はこちらをご覧ください。
講義の間には、イベントがもりだくさん
講義の間には、 ランチでお弁当を食べたり
CARTAエンジニアの キャリア を聞いたり
サポーターズからの かき氷の差し入れ など様々なイベントも有りました!
データモデリング講義の流れ
講義は以下の順で進みました。
- モデリングの基礎
- 人事システムで演習
- 現実の課題で実習
1. データモデリングの基礎
では、講義内容の概要を見ていきましょう。
データモデリングの基本では、その考え方や用語を学びます。
データモデリングにおける考え方や用語
モデリングにおいて最も大切なことはモデリング対象に関係があるものを拾い、関係がないものを捨てること。
抽象と捨象: データモデリングの核心
- 抽象: 概念に必要な要素、形や名前、属性を明確にくくりだす
- 捨象: 関係のないもの、不要なものを除外する
データと情報の違い
- データ: 起きた事実そのもの。毎日の時間帯別気温の記録など
- 情報: 「データ」を選択・加工して、必要とする知識(新たな価値)を取り出したもの。日別の平均気温など
モノ(リソース)とコト(イベント)に分けて考える
- 対象な領域の中で大事そうな対象に名前づけを行い、関係性を洗い出す
- リソース: 永続的な存在や対象そのもの
- イベント: タイムスタンプを持つ、繰り返される行為や出来事
2023年におけるデータモデリングの変遷
20年以上、IT業界で走り続ける @t_wadaさんから、2023年におけるRDBMSの立ち位置やモデリングの変遷を教わります。
- 中央集権的なRDBMSの問題点
- 真ん中にデカいRDBがあって、相乗りすることがアンチパターンになりつつある
- 何故か? 各サービスのデプロイ独立性を妨げる要因になる
- 現代は、それぞれのマイクロサービスが別々のデータベースを持つアーキテクチャが増えている
- 無矛盾なデータを維持するためのRDBMSの仕組みがデプロイ独立性を下げる要因
- 中央集権的なRDBMSの強い一貫性よりも、ビジネスの変化に追従できるアジリティを重視した開発が主流
- 今、データモデリングが重要な理由
- 各マイクロサービスが独立したデータベースを持つ流れが主流になりつつある
- そのため、「ゼロからデータモデリング」するチャンスが増えている
2. 人事システムを題材に、"データモデルの設計"を段階的に追体験
人事システムを題材に、@t_wadaさんの解説を聞きながら、"データモデルの設計"を段階的に追体験していきます。
- Entity Relationship Diagram (ERD)
- 「モデルの構成要素と関係性を描く」図
- 全体像の把握に有用である
- なぜなら包括的に「概念とその関係性」をひとまとめにした資料はなかなか無い
- データベース設計と正規形
- 第1正規形から第3正規形までの変換
- キーに関する説明
- 主キー、ナチュラルキー、サロゲートキーの違い
- イミュータブルデータモデリング
- UPDATE, DELETEを使わず「データの追加」のみで変更履歴を扱うモデリング
- 論理設計で"理想な設計"を描き、物理設計で"現実"的な設計に落とし込む
- 一度は理想的なモデルを描き、その後に現実問題に向き合ってわかったことを織り込んで設計していく
- ビジネスのニーズに応えられる設計を生むためには、事業理解が不可欠
3. POSシステムを題材に、データモデリングの実習
ここからは数人のグループに分かれて、モデリングを実践します。
お題は「POSシステム」。
@t_wadaさんが持ち込んだ一枚のレシートをもとに、POSシステムのデータモデルを想像しながら、データモデリングを行っていきます。
その後、「実際に買い出し」を行い、自分たちが作ったモデルが"現実的な問題"に耐えうるのかテストを行います。量り売りやセット割引、ワゴンセールなど"想定していなかったケース"を実際に買うことでそのモデルを検証します。
そして、再度買ってきたレシートをもとに再モデリング。こうやって「理想から現実」への揺り戻しを体験します。
学生からの感想
講義後に学生から感想を聞いてみました。
"データモデルの講義では、正規化から説明するのではなく、データモデリングの歴史や現代におけるデータモデリングの重要性や位置付けから紹介していただいたことで、データモデリングの意義をより深く理解できたように感じる。 レシートを使った課題を行うことで、モデル化に対する理解度の低さを痛感すると共に、データモデリングを理解すると世の中の解像度がグッと深くなるんだろうなぁと感じた。 DDDの「境界づけられたコンテキスト」の説明で用語定義の重要性を実感。今回はデータモデリングの観点からのアプローチだったが、アプリケーション開発でも感じていた課題感だったので知れてよかった"
"抽象と具象、データと情報の違いおよびDBへの格納するコツなどを多くのことを学ぶことができました。DB知識は教科書程度しかなかったため、実用的なDBの考え方を知ることができました。 また、実世界のDBの複雑さや再現の難しさ、再現するためのコツを体験できたことが成長につながったと思います。
"現実世界に対するデータモデリング"を実際に行うことで、教科書を読むだけでは達しない実用的なデータベースの利用方法を学んだようでした。
以上、Treasure2023講義レポートでした!