🤖

関西DB勉強会に参加なぅ

2024/06/22に公開

今日は大阪でやっている関西DB勉強会に参加させていただいています♪

僕自身も登壇をさせていただくと言うことでドキドキしながら参加ですw

ハッシュタグは #dbkan, #ashibinaa の2つ

「市民開発者向け 正しいテーブル設計」

  • 内製化需要が高まっている昨今、データ設計にお悩みの方も多いのでどのようなデータ設計が望ましいのかを、アプリを参考に説明します

  • 登壇者

    • りなたむさん(中村 亮太)
      • 株式会社BizOptimars
      • MS MVP Business Applications (4年連続)
      • Cacoo アクセラレーター
  • 市民開発者とは

    • 依頼から内製化へ
      • コミュニケーションやフィードバックを繰り返しながら開発をしていくことになる
      • 依頼をして業務委託などを行うと時間やコストがもったいない
      • 内製化が必要になる
        • ビジネスにおいて最も最適なシステムを提案、開発していく人
    • コンポーネント分離
      • これまでは企業や業務に合わせてカスタマイズしないといけなかった
      • 内製化によって実際に使うユーザーが独自に作り、開発者は内製化に必要な部品(API) を提供するだけで済むようになる
  • やりがちなデータ設計

    • Excel 脳と言われるようなデータ設計をしがち
      • 横に長いテーブルを作りがち
        • 一つにまとめたがる傾向にある
      • 問題点
        • 一つのテーブルで完結している場合の問題点
          • 共通項目
            • データに対応するためにアプリ修正をする必要がある
            • データ追加や削除のたびに再度テストをし直さなければならない
          • データの正規化の欠如
            • 修正された際の過去データが喪失する場合がある
          • 処理スピードの低下
  • 最適なデータ設計

    • エンティティ
      • システムが利用するデータの実態(エンティティ)についてまとめ表形式に定義する
    • エンティティを整理する
      • エンティティをまとめた上でそれらのデータ更新のタイミングを検証し、データ種別をまとめる
        • マスターデータ
        • 一般利用データ
        • ログデータ
    • 正規化
      • データ種別ごとに分類した上で、テーブルを作成し、IDといった一意識別子に置き換えて各テーブルを結びつける
    • ER図
      • 正規化したデータの関連がわかりやすいように図式化する
    • 整理整頓
      • 部屋の掃除と同じで、分類ごとに細かくデータが分別されていないと、人間と同じようにコンピュータでも探すのに時間がかかる
      • 人間もシステムを理解するのに苦労する
    • 実態データ(トランザクション)は更新しちゃダメ
      • 購入履歴や承認履歴のような事実のデータは、追加はもちろんのこと、修正や削除といったこと自体も記録する必要がある
      • 登録データを更新してはいけないと理解し、修正や削除といった事実を記録すると言うことを覚えておく
    • アプリも更新しちゃダメ
      • アプリの修正は、修正後に必ず「リグレッションテスト」を行う
      • データ更新のたびにアプリを更新すると、非常に多くの人的負荷が発生

「MySQLのリリースモデルの変更点と最新アップデート」

  • 登壇者

  • 資料

  • MySQL とは

    • 世界で最も普及している OSS Database
    • 「小さく始めて大きく育てる」
  • 柔軟な MySQL の利用方法

    • 自社で運用管理
      • コミュニティ版 MySQL
      • 商用版 MySQL
    • MySQL マネージドサービス
      • MySQL HeatWave Database Service
        • MySQL チームが 100% 開発・提供する
    • クラウドネイティブな MySQL
      • MySQL Operator for k8s
        • MySQL の高可用性構成を k8s で構築&運用管理
    • MySQL に関連する数字
      • 1, 4, 7, 10
        • MySQL の新しいバージョンがリリースされる月
          • オラクルが計画している CPU の提供タイミングに合わせて MYSQL の新しいバージョンリリースが計画されている
        • リリースは基本的に 3ヶ月毎
      • 1
        • 共通のソースコード
          • コミュニティ、商用、クラウドパッケージ化時に振り分けロックインの不安なし
      • 8.0
        • Bug Fix series
      • 8
        • ライフタイムサポート
          • GA 後 8 年
      • 現在の最新バージョン
        • 8.0.37
        • 8.4.0 LTS
    • innovation release
      • バグ修正と新規機能追加を行うリリース
        • リリース方針
          • バグ修正
          • セキュリティパッチ
          • 新機能追加
          • 機能やパラメータの非推奨化及び削除
        • リリースサイクル
          • 3ヶ月毎
          • 次バージョンのリリースで EOL
        • 本番運用想定のテスト済み
    • LTS (Long-Term Support) リリース
      • バグ修正のみを行うリリース
        • リリース方針
          • バグ修正
          • セキュリティパッチ
          • バージョン間の互換性重視
        • リリースサイクル
          • リリース後8年間サポート
          • 複数の LTS リリースをサポート予定
        • 本番運用想定のテスト済み
    • Oracle Lifetime Support for MySQL
    Features Premier(Years 1-5) Extended(Years 6-8) Sustain(Years 9+)
    24x7 Support
    Unlimited Support Incidents
    Knowledge Base
    Maintenance Releases, Bug Fixes, Patches, Updates Pre-Existing only
    • 2024年7月のリリース
      • 9.0.0 IR
      • 8.4.1 LTS
      • 8.0.39
    • MySQL 8.0 のサポート期限は 2026年4月19日
  • コネクタ、周辺ツールについて

    • Connectors のバージョン番号は 9.0.0 になる
  • MySQL Workbench

    • 8.0 でリリース終了
    • MySQLShell for VS Code が後継
    • MySQL Enterprise Monitor
      • 2025年1月で EOL
        • Oracle Enterprise Manager for MySQL
  • MySQL Shell って何?

    • MySQL の新しいクライアントプログラム
    • SQL 以外にも Javascript と Python をサポート
    • 開発や運用を効率化する各種 DevOps ユーティリティ
    • 主な機能
      • アップグレードチェッカーユーティリティ
  • 最新情報

    • MySQL for Developers License
      • 学習、開発用途であれば MySQL Enterprise Edition を OTN からダウンロードして無償で使用可能になった
    • MySQL Shell for VS Code
    • Database Management Service
      • Monitoring, Diagnostics & Predictive Insights
        • MySQL HeatWave Database Service も関し可能に
        • オンプレも可能になる(予定)
    • Group Replication
    • MySQL Shell 8.1
      • MySQL 8.4 での機能追加や変更点
        • MySQL Native Password プラグインがデフォルトでは無効
          • 早めに新しい方式に変更するといい
            • スマートカードやセキュリティキー、生体認証など
  • MySQL Heatwave with Generative AI

    • MySQL に対して SQL を実行するだけで自動的に高速化される
  • Vector Data Type Support

    • ベクトルデータ Type 。。。

「こんなに違うよMySQLとPostgreSQL」

  • 登壇者

  • OSC のブースにて

    • DBMS のブース2つ並んでるけど何が違うんですか?
    • → 大体一緒ですよ
    • → とは言うものの、本当は結構違う
  • 違いポイント 1: ポスグレは長い

    • 原稿を書くときなど PostgreSQL は場所をとる
    • MySQL はコンパクト
    • クライアントになると形勢逆転
      • psql
      • mysql
  • 違いポイント 2: ポスグレは間違われやすい

  • 違いポイント 3: \ コマンドが便利

    • コマンドラインクライアント上での操作
      • データベース一覧の確認
        • PostgreSQL
          • \l
          • \d
        • MySQL
          • SHOW DATABASES
          • SHOW TABLES
  • 違いポイント 4: スキーマ

    • PostgreSQL
      • インスタンス
        • データベース
          • スキーマ
    • MySQL
      • インスタンス
        • データベース (= スキーマ)
  • 違いポイント 5: 演算子 ^

    • お題 10の3乗を求めたい
      • MySQL
        • SELECT 10^3 = 9
          • 1010 XOR 0011 = 1001
        • SELECT POW(10,3) = 1000
          • POW 関数を使う
      • PostgreSQL
        • SELECT 10^3 = 1000
  • 違いポイント 6: INSERT 文

    • PostgreSQL
      • CREATE TABLE t1 (a int, b int, c int)
      • INSERT INTO t1 VALUES (4, 5)
        • 値が与えられていない列 c には NULL が入る
          • INSERT INTO t1 (a, b, c) VALUES (4, 5)
            • 流石にこれはエラー
  • 違いポイント 7: 部分指定 DISTINCT

    • DISTINCT ON 句
      • SELECT DISTINCT ON (val1) val1, val2, val3 FROM t2;
        • みたいなのができる
        • 指定したカラムの値がユニークになるように良きに計らってくれる機能
    • MySQL も ONLY_FULL_GROUP_BY を指定していなければ。。。
  • 違いポイント 8: なくなくない?演算子

    • PostgreSQL: IS NOT DISTINCT FROM
    • MySQL: <=>
  • 違わない面白ポイント: ぎゅうぎゅう

    • SELECT*FROM t1
      • PostgreSQL でも MySQL でも動く

「PostgreSQL 主要機能の進化と最新バージョン情報」

  • 登壇者
  • PostgreSQL 概要
    • オープンソースで開発されている RDBMS
    • ライセンスは PostgreSQL License ≒ BSD License
    • 活発なコミュニティ
      • The PostgreSQL Global Developer Group
      • Commitfests
      • 日本PostgreSQL ユーザー会
      • PostgreSQL Enterprise Consortium
    • バージョン構成
      • 原則として1年毎に新バージョンが公開
      • 現時点の最新バージョンは PostgreSQL 16 (16.3)
      • PostgreSQL 17 Bata 1 開発中
  • ロジカルレプリケーション
    • ロジカルレプリケーションとは
      • PostgreSQL 10 以降で利用可能
        • テーブル単位のレプリカ作成機能
        • レプリケーション先のテーブルも READ / WRITE 可能
        • SQL 文の結果が同一であることを保証 (=Logical)
      • Publication → Subscription
    • 最新バージョンでは
      • ストリーミングレプリケーションのスタンバイとレプリケーション状況を同期
        • スタンバイが昇格した場合でもロジカルレプリケーションの情報が維持される
          • レプリケーション・スロットの failover オプション
          • SUBSCRIPTION の failover オプション
        • ストリーミングレプリケーションに WAL を送信してから
    • pg_createsubscriber コマンド (PostgreSQL 17 Beta)
      • ストリーミングレプリケーションのスタンバイ環境をロジカルレプリケーションに変換するコマンド
        • 停止したスタンバイ・インスタンスを変換する
        • ロジカルレプリケーションの初期データ移行を簡易化する目的
  • パラレルクエリー
    • 単一の SQL を複数のプロセスで並列に処理を行う
      • PostgreSQL 9.6 以降順調に機能が増えている
  • パーティショニング
    • 概要
      • 大規模なテーブルを物理的に分割する機能
      • 一般的には列値を使って自動的に分割先を決定
      • パーティションもテーブルとしてアクセス可能
      • PostgreSQL 10 以降
    • 方法
      • LIST Partition
        • 特定の値
      • RANGE Partition
        • 日付や数字など
      • Hash Partition
        • ハッシュ値
    • 実行計画
      • PARTITION OF XXX FOR VALUES FROM XXX
    • SPLIT PARTITION
      • 単一の PARTITION を 複数の PARTITION に分割
    • MERGE PARTITIONS
      • 複数の PARTITION を一つにマージ
        • いずれもメタデータの書き換えではなく物理的にデータを移動している
  • その他の主要な新機能
    • INCREMENTAL BACKUP
      • 更新分のみのバックアップを取得可能
      • リカバリ時は基準となるベースバックアップと増分バックアップから最新のデータを作成
      • 条件
        • WAL Summarize 昨日の有効化が必要
        • バックアップ時にはマニフェストファイルが必要(デフォルトで有効)
      • ベースバックアップと増分バックアップのマージ
      • バックアップの上書きはできない (現状では)
    • MERGE STATEMENT
      • BY SOURCE 句のサポート
        • ソーステーブルに存在しないが、ターゲットテーブルには存在するレコードに対する操作
      • RETURNING 句のサポート
        • 更新されたレコードを返す(INSERT / UPDATE / DELETE 文はすでに対応済み)
        • 変更理由を取得する merge_action 関数を利用可能
    • COPY STATEMENT
      • ON_ERROR
        • データ型変換エラー発生時の動作を変更する
          • IGNORE 指定時にはエラーを無視
      • LOG_VERBOSITY
        • データ型変換エラーのログ出力レベルを変更できる
      • FORCE_NULL
        • 列名にアスタリスクを指定可能に
    • EXPLAIN STATEMENT
      • MEMORY オプション
        • SQL 文解析に使用したメモリを縮小できる
    • MAINTAIN PRIVILEGE
      • 管理権限系
  • まとめ
    • 開発は続く

「TiDB全部入り! NewSQL & HTAP から最近のベクトル検索対応まで」

  • 登壇者

    • 関口 匡稔さん (@bohnen)
      • PingCAP 株式会社
  • 資料

  • TiDB の概要

    • 数百TB, 100万QPS 以上を裁く MySQL 互換分散データベース
      • MySQL 互換
        • スクラッチオープンソース
          • Go, Rust, C++
      • オンプレにもクラウドにも対応
      • 本番運用可能な運用ツール・ダッシュボード
  • TiDB の思想

    • TiDB は元々スケーラビリティの問題を解決するために生まれた
      • 数ヶ月毎に管理する MySQL クラスタを倍する。。。
    • 現在ではさらに分析やマルチテナンシー、AI といったものをサポートする必要性に迫られているが、スケーラビリティがなければ全てが台無しになってしまう
  • TiDB = NewSQL + HTAP

    • MySQL 互換
    • 運用の容易さ
      • ローリングアップデートなどにも対応
    • 水平スケール
    • 高い可用性と信頼性
    • 強い一貫性
  • HTAP: OLTP + OLAP

    • 一つのデータベースシステムに OLTP 用(TiKV) と OLAP 用(TiFlash)の2つのストレージエンジンを持つ
    • 一つのシステムで両方のユースケースに対応でき、リアルタイム分析にも寄与
    • データパイプラインもシンプルに
  • 様々なプラットフォームでの実行をサポート

    • INSTANCE
      • TiUP
    • k8s
      • TiDB Operator
    • Cloud
      • AWS
      • TiDB Serverless
  • TiDB Playground

    • Audit Log はエンタープライズ版のみ
    • そのほかは全て同じ
    • MySQL Shell からも実行できる
  • TiDB Architecture

    • 分散データベースとしての機能はほぼ TiKV + PD が担っている
    • 分散 KVS + ステートレスな SQL/KV API 変換フロントエンド
      • と言うイメージ
  • TiDB Cloud 紹介

    • TiDB Cloud のラインナップ
      • Serverless (共有型)
      • Dedicated (占有型)
    • Agile な機能開発
      • ユーザーニーズを取り込み2週間サイクルでリリースする
  • TiDB Serverless

    • TiDB の基本的なアーキテクチャは踏襲
    • それぞれのコンポーネントをマイクロサービス化し動的に割り当てる
    • また TiKV の RocksDB 部分には S3 を活用
    • Ease of Use
      • クラスタの起動 10 秒くらい
    • オートスケールアウト/イン
      • 20分で 100万 QPS レベルまでスケールアウト
      • その後 15分程度 0 QPS までスケールイン
    • HTAP Serverless DB のユースケース
      • 波のあるワークロード
        • キャンペーンとかで一気にアクセスが増えるとか
      • Scalable B2C ビジネス
        • 分析クエリも捌けるのでダッシュボード等にも利用可能
    • OSS Insight
      • GitHub の今までの全てのイベントを TiDB Serverless に入れている
        • 10TB 〜20TB くらいある
          • 最近は duckdb がいい感じらしい
      • 画面から実行クエリや実行計画まで見れちゃう
      • LLM も使える
    • Chat2Query & DataAPI & GPTs
      • GPT にテーブルのメタ情報も渡している
      • API で直接取得できる
      • グラフ生成もしてくれる
  • 最新情報

    • Vector Search: LLM Framework の対応
      • Chat2Query
        • 生成AIによるクエリ
      • Data Service
        • 生成 AI のための API 生成
      • Vector Search
        • RAG + RDBMS
        • LangChain + lamaindex
    • Bedrock + TiDB による chat アプリ
    • ローコード LLM 開発
      • Dify x TiDB Serverless

「Data Cloud Summit参加報告 Snowflakeで作る最新マーケティング分析・活用基盤 -」

  • 登壇者

    • 喜田 紘介さん (@kkkida_twtr)
      • Snowflake Data Superheroes 2024
  • エクスチュア株式会社

    • マーケのためのデータ収集 ~ 活用コンサル
    • ビジネスユーザーが「使える」データ x AI 整備
    • 目的特化ツールで即効性のある施策実行
  • Snowflake Data Cloud Summit

    • サンフランシスコの有名ホール Moscone Center
    • 400+ セッション、180社のスポンサー
    • 1.5万人の参加者 (日本人ん参加者 250人)
    • 海外カンファレンス体験
      • 深夜のリアタイ現地配信
        • おしゃれ民泊から思い出配信
          • YouTube 配信
    • 聖地巡礼
      • Snowflake
      • Oracle
    • 繋がりに感謝
      • 海外の方が LinkedIn でメッセージくれたり
  • Snowflake が唱えるビジョン

    • システム起点の DWH から人やビジネスを中心としたデータ利活用にフォーカスした SaaS へ
      • Enterprise AI
        • 簡単、効率的、信頼できることがビジネスの成功のための AI に必須である
        • Snowflake はそれらを提供する「AI Data Cloud」へとリブランディング
      • Native Apps
        • データの移動なく統制の取れた環境で AI ロジックを動かし、ビジネスに寄与
        • Native Apps のエコシステムは拡大し、業界特化やインハウス型も実現
      • Data Foundation
        • AI/APP の土台となるデータ基盤はすでに「Completed」と強調
        • あらゆるデータを最適なコンピュートエンジンで扱い、高品質なデータを揃え、セキュリティとアクセシビリティを両立
  • AI Data Cloud の今

    スクリーンショット 2024-06-22 16.58.44.png

  • Snowflake Cortex

    • すぐ使えるマネージド AI/ML サービス + あらゆる開発者体験を AI 用途に統合
      • Snowflake Cortex AI
        • 目的特化型 AI サービス群
          • Cortex Functions
            • SQL 内で実行できる AI/ML 関数
          • Cortex Analyst
            • 構造化データに対するクエリ生成 + 結果のせいつ名
          • Cortex Search
            • 非構造データに対するセマンティック検索
      • AI/ML 開発、ライフサイクル支援
        • 高度なアプリ開発用のフレームワーク群
      • Snowflake そのもののユーザー利便性を向上する AI インターフェース群
  • Snowflake Horizon

    • 活用 Ready なデータを整える = Data Products とそのデータが利用者に届くまでを重視
      • Snowflake Horizon
        • データへのアクセス性とセキュリティ、ガバナンスを統語した新たな機能ブランディング
      • マーケットプレイスの活用
        • 3rd Party データ・アプリ流通基盤
      • データメッシュ組織の実現
        • Data Products / Native Apps を自社で有効活用
  • Exrure 視点で見るこれからのマーケティング基盤のポイント

    • AI を前提に新たにできることを考える
      • 既存のマーケ支援ツールでできることはやり尽くしている状態から、AI ならではのアイデア創出にシフト
        • 見込み客を集める
        • 購入・リピート
        • 離反、流出を防止
    • 各部門で持っているデータやマーケ支援ツールを統合
      • ツールに閉じた活用からデータを切り離し、一元管理
    • システム課題の解消、データの鮮度やボリューム、利用方法を最高
      • ライブデータで作られた高品質な Data Products

Discussion