×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
データウェアハウスを 使ってみよう みかん電機
Slide 2
Slide 2 text
DWH (Data Warehouse)とは ● 「データの倉庫」を意味する言葉 ● 大量のデータを管理し、分析計算を高速に行うシステム ● 例 ○ Apache Hadoop, Spark, Hive ○ AWS Athena, Redshift ○ GCP BigQuery ○ Azure SQL Data Warehouse ○ Snowflake ○ Databricks etc…
Slide 3
Slide 3 text
RDB (Relational Database) とは何が違うの? ● 方言の違いはあるものの SQL でクエリを記述できるのは共通 ● RDB は行指向データベース、DWH は列指向データベース ● DWH はデータ量がテラ、ペタ級になっても実用的に動作 ● RDB はレコードの更新も速い、DWH だと更新は遅いもしくは不可 ● RDB を使うのはWebアプリケーションなどのシステム、DWH を使うのは分析基盤 などのシステム user_id ・・・ 名前 年齢 1234 山田 21 1235 田中 30 1236 伊藤 60 行指向 列指向
Slide 4
Slide 4 text
Datalake とは何が違うの? ● Datalake は生ログが置いてあり、DWH はそれらを整形して入れたものだったはず が・・・ ○ AWS S3, Athena は Datalake で、AWS Redshift が DWH ● BigQuery は、改善によって、JSON形式の生ログを入れても大丈夫になっていた ・・・ ○ 境界はあいまいな気が ○ 本によっても言葉がぶれており
Slide 5
Slide 5 text
例)ECサイトの中での立ち位置 ● Web Framework に Laravel ● RDB に、AWS RDS ● Datalake として、AWS S3 / Athena ● DWH に、AWS Redshift DWH RDB WEB サーバ Datalake ユーザデータ 生ログ ● 購買ログ ● ページ遷移
Slide 6
Slide 6 text
わざわざ分けるの面倒だし RDB でも良くないんですか? 「購買ログ・テーブルも、RDBに入れますね」 「カラムは、購買日時、ユーザID、商品ID でいいか」 「えっ、どこの県の人が買っているか調べたい?」 「ユーザ情報と JOIN して検索すると今の県しか分からないって?」 「購買ログ・テーブルのカラムにその時点での住所情報も追加しますね」 「え、年齢も年収も所帯も子供数もさらに必要って?」 「大変です、CMの影響でユーザ数が増大しています」 「RDBの容量の9割以上が購買ログなのですが!」 ・・・・・( ゚Д゚)
Slide 7
Slide 7 text
RDB
Slide 8
Slide 8 text
大量のデータを集めて分析するために作られたのが DWH 課題 ● 分析用ログは正規化できないのでデータ量は膨大に ● 分析対象となる膨大なデータは、RDB の検索性を圧迫しコストも増大 解決策 ● DWH を使おう! ● BigQuery は、DWH の中でスタートアップや個人でも使いやすい ○ 1ヶ月1Gのデータ保存で約3円、長期になると1.5円 ○ スキャンしたデータ量だけ課金される、いわゆるサーバーレスの課金方式 ■ 他のサービスのように最低でも月に〇万円かかる、ということは無い ■ 1Gのスキャンで約0.937円 ○ 初期の契約でも、GCP上の計算リソースが空いているならば最大 2000並列で計算してくれるので、 めっちゃ速い
Slide 9
Slide 9 text
まとめ ● DWHは、大量のデータを管理することができます ● そのデータの分析を高速に行うことができます ● 餅は餅屋 ● SQL でデータの操作はできるので実例は略 ● DWH おススメの本→ ● おまけ ○ VRChat のワールドデータ公開します
Slide 10
Slide 10 text
おまけ)VRChat ワールドデータ (Parquet) ● VRC API にて、ワールドの更新があるとその一覧が取得できるので、そこからデー タ取得 ● ワールド名や作者名、訪問数、お気に入り数、説明文、タグなどがあります
Slide 11
Slide 11 text
おまけ)BigQuery で、月毎のワールド公開数を調べる ● クエリを実行する前に、スキャンするデー タ量が表示され、計算コストが分かるので うれしい↑ ● WITH 構文が使えるので、サブクエリのネ ストしなくても良い ● 最大2000並列で計算するので速い ● クエリ結果は見やすいとは言えないので、 スプレッドシートや JupyterLab などにエク スポート