Upgrade to Pro — share decks privately, control downloads, hide ads and more …

明治薬科大学講義_ビッグデータ解析を支えるデータベース技術とクラウドコンピューテ...

 明治薬科大学講義_ビッグデータ解析を支えるデータベース技術とクラウドコンピューティング

5/22に行われた明治薬科大学での講義資料_座学パートになります。

ハンズオンパート資料はこちら
https://zenn.dev/sde_lab/articles/snowflake-multiomics-handson

Avatar for Tatsuya Koreeda

Tatsuya Koreeda

June 14, 2026

More Decks by Tatsuya Koreeda

Other Decks in Science

Transcript

  1. ⾃⼰紹介 是枝 達也 / GA technologies Data Division • データ基盤‧データエンジニアリングを担当

    • データベース設計‧クラウドデータ基盤‧Snowflake 活⽤の設計‧運⽤に携わる • 趣味: バイオインフォマティクス研究 今⽇のテーマ:データ解析を⽀えるデータベース技術 2
  2. なぜデータ解析にデータベースが必要なのか データが⼤きすぎる Excel の限界は約 104 万⾏ 実際のデータは 数億⾏規模に達することも データが散在している 複数ファイル‧複数システム

    にデータが分断されていると 統合‧横断分析が困難に 処理が遅い 全データをメモリに読み込 んでから計算するため 時間とリソースを⼤量消費 7
  3. ファイル管理 vs データベース CSV / Excel データベース 保存⽅法 ファイルとして保存 構造化して格納

    検索 全⾏を順番に確認 インデックスで⾼速検索 データ型 すべてテキスト 型を強制‧保証 同時利⽤ 上書き競合が発⽣ 同時アクセスを制御 ⼤規模化 104万⾏で限界 数億⾏以上も対応 整合性 ⼿動管理 ⾃動で保証 8
  4. リレーショナルデータベース(RDB)の基本 患者テーブル 処⽅テーブル 患者ID ⽒名 年齢 診療科 P001 ⽥中 22

    薬学部 P002 鈴⽊ 35 外科 P003 佐藤 28 内科 処⽅ID 患者ID 薬剤名 R001 P001 アスピリン R002 P001 イブプロフェン R003 P002 メトホルミン ★ 主キー(Primary Key):各⾏を⼀意に識別する列 ★ 外部キー(Foreign Key):患者テーブルの患者IDと紐 付く列 リレーショナル(Relational)= 複数のテーブルを「キー」で繋ぎ、データの重複を排除して管理する 9
  5. SQLとは何か Structured Query Language ⸺ データベース操作のための⾔語 「どう処理するか」ではなく「何が欲しいか」を書く SELECT 性別, count(*)

    as 人数 FROM 患者 WHERE 年齢 >= 20 GROUP BY 性別 基本の命令 SELECT 取得する列を指定 FROM どのテーブルから取得するか WHERE 絞り込み条件 GROUP BY グループごとに集計 ORDER BY 並び替え ID ⽒名 年齢 性別 1 ⽥中 22 男 2 鈴⽊ 35 ⼥ 3 佐藤 28 男 4 加藤 16 ⼥ 性別 ⼈数 男 2 ⼥ 1 患者 テーブル SQLした結果 10
  6. 業務⽤DBと分析⽤DBは「⽬的」が違う 業務⽤ DB(OLTP) → ⽇々の処理を正確‧⾼速に記録する → 1件ずつの登録‧更新‧削除が得意 → 現在のデータを正確に保持することが 最優先

    分析⽤ DB(OLAP) → ⼤量の過去データを横断的に集計‧分 析する → ⼤量の⾏をまとめて読む処理が得意 → 履歴データを保持し続けることが重要 ⽬的が違うから、内部の設計も根本から違う 12
  7. OLTPとOLAPの⽐較 項⽬ OLTP(業務⽤ DB) OLAP(分析⽤ DB) ⽬的 ⽇々の業務処理を 正確‧⾼速に記録する ⼤量の過去データを

    横断的に集計‧分析する 処理単位 少数⾏(1件ずつ) ⼤量⾏(数百万〜数⼗億) レスポンス ミリ秒単位 秒〜分単位 最優先 データの整合性‧⼀貫性 読み取りスループット 例 注⽂登録‧在庫更新など ⽉次集計‧売上分析など 15
  8. 分析向けDBの⼯夫①:列指向ストレージ ⾏指向ストレージ(Row-oriented) → 4列すべて(ID‧名前‧年齢‧薬剤)を   ディスクから読み込む • I/O量:100%(全データ) • 不要な列まで読み込むため低速

    ⚠ 分析クエリには⾮効率な設計 列指向ストレージ(Column-oriented) → 年齢列だけをディスクから読み込む   ID‧名前‧薬剤列はスキップ • I/O量:約25%(1/4に削減) • 必要なデータだけ読む設計 ✓ 分析クエリに最適化された⾼速処理 ID 名前 年齢 薬剤 1 ⽥中 22 アスピリン 2 鈴⽊ 35 メトホルミン 3 佐藤 28 イブプロフェン ID 名前 年齢 薬剤 22 35 28 18
  9. 分析向けDBの⼯夫②:圧縮とデータスキップ 圧縮(Compression) • 同じ値が続く列は⾮常に圧縮しやすい   例:国名「Japan」が100万⾏続く場合 • 列指向と組み合わせることで   ⾼い圧縮率を実現

    • ディスク使⽤量とI/Oを   同時に削減できる データスキップ(Data Skip) • 各ブロックの最⼩値‧最⼤値を   事前にメタデータとして記録する • 例:「2024年以降のデータ」という   クエリで2023年以前のブロックを   まるごと読み⾶ばせる • 全データを読まずに処理できる 19
  10. 分析向けDBの⼯夫③:並列分散処理 ⼤きなデータ(例:1億⾏) ↓  ↓  ↓  ↓   4 分割して各ノードへ割り当て Node 1 ⾏ 1 〜 2,500万

    部分集計 完了 ✓ Node 2 ⾏ 2,501 〜 5,000万 部分集計 完了 ✓ Node 3 ⾏ 5,001 〜 7,500万 部分集計 完了 ✓ Node 4 ⾏ 7,501 〜 1 億 部分集計 完了 ✓ 各ノードの結果を結合   最終集計 完了  ⚡ 4 ノード並列処理により直列⽐で約 4 倍の⾼速化 20
  11. クラウドDBのメリット ① ⼤量データを低コストで保存できる ② 計算資源を柔軟に増減できる(使った分だけ課⾦) ③ 複数⼈‧複数チームが同じデータを同時に利⽤できる ④ 権限管理でセキュアにデータ共有できる ⑤

    BIツール‧Python‧AIとの連携が容易 ⑥ サーバー管理の負担がなく、データ活⽤に集中できる 今回はSnowflakeというクラウドDWH製品を使ってハンズオンをやっていきます 23
  12. Snowflakeの主な特徴① 伸縮性のある高性能エンジン • 複雑なデータパイプライン、大規模アナリ ティクス、特徴量エンジニアリング、アプリ ケーションを自動でスケール • 即時かつコスト効率の良いスケーリング で、性能に影響を与えることがない •

    SQLを始め、Python、Java、Scala用 Snowpark開発者フレームワークが用意さ れている reference image: https://www.snowflake.com/ja/data-cloud/platform/?utm_cta=websi te-homepage-platform-card-elastic-compute 25
  13. Snowflakeの主な特徴② 最適化されたストレージ • PDFなどの非構造化データも一元的に管 理可能 • 最適化された圧縮、自動マイクロパーティ ション、ACIDコンプライアンス、Time Travelなどを活用 •

    オープンテーブル形式(Iceberg Tableな ど)が利用可能 reference image: https://www.snowflake.com/ja/data-cloud/platform/?utm_cta=website-ho mepage-platform-card-elastic-compute 26
  14. 後半ハンズオンへ ① ログイン Snowflakeの Webコンソールへ ② Worksheet SQL Worksheetを 開く

    ③ SQL実⾏ テーブル検索‧ 集計するSQL書く ④ Snowflake Notebooksにて Pythonで解析 ゴール クラウドDB上でSQLを実際に実⾏する感覚をつかむ 「必要なデータだけ取り出す」を体験する 27