othlotech
by
onunu
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
大量の物件情報を 短時間で 処理するハック データ分析勉強会 ~SQL 活用~ @onunu
Slide 2
Slide 2 text
Hello! おぬま りく@onunu IESHILという不動産の情報格差 をなんとかしていくサービスを 作っています データエンジニアです Twitter: @onunu_ Github: onunu (有益な情報はおそらく皆無)
Slide 3
Slide 3 text
0. 今日の話の前に データエンジニアってどんな仕事?
Slide 4
Slide 4 text
Q. データエンジニアってどんな仕事? 実際のところ、裏方の何でも屋みたいになってます. A. ぼくもよくわからん ◎ というのも、できたばかりの職種で人や会社によって定 義がまちまち ◎ 最大公約数的にはサーバーサイドと機械学習エンジニ ア/データサイエンティストの橋渡し ○ トランザクションデータをDSに渡す仕組み ○ MLのアウトプットをサービスに組み込む ○ データの整形/前処理 ○ 上記を行うための基盤/インフラの整備 etc...
Slide 5
Slide 5 text
1. 今日のテーマ 大量の物件情報を処理するハック
Slide 6
Slide 6 text
大量の物件情報を処理するハック そんなものはない
Slide 7
Slide 7 text
大量の物件情報を処理するハック 正確にはあるが、 みなさんが聞きたいような内容にはならない MySQL? PostgreSQL? Redshift? BigQuery? Or other? そんなものはない ◎ それぞれのtipsはググれば出てくるし ◎ やってるうちに少しずつわかっていく ◎ 小手先のテクニックで楽をする手段はユースケースを 想像できないと理解しにくい
Slide 8
Slide 8 text
なので 大量の物件情報を処理するハック そんなものはない ◎ 事業会社と学生or個人で作るサービスの対比をしなが ら ◎ なるべく汎用的な設計の話とかを交えつつ ◎ これからビッグデータとか、データサイエンスみたいな もの(?)にどう向き合っていくか などなどを話していきたいと思います :)
Slide 9
Slide 9 text
2. 昨今のDB選び
Slide 10
Slide 10 text
Let’s thinking! わからない人は、 「何でファイルシステムではダメなんだろう?」 を考えてみよう 昨今のDB選び そもそもDBって何で使うんだっけ?
Slide 11
Slide 11 text
◎ データを構造化して保存する ◎ データの蓄積が容易になる ◎ データの検索、更新を容易にする ◎ ビジネスロジックとデータを分離する ファイルシステムは内容や名前をキーに検索する手段が あるが、それ自体にファイルの内容を更新する統一的手 段は存在しない また、内容について正しさを保障する機能もない 昨今のDB選び そもそもDBって何で使うんだっけ?
Slide 12
Slide 12 text
DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? 昨今のDB選び ではどのDBを使う?
Slide 13
Slide 13 text
DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? おそらくほとんどの人が、 RDBを思い浮かべたと思います。 昨今のDB選び ではどのDBを使う?
Slide 14
Slide 14 text
RDBの中にも大きなカテゴリがあります 下にのRDBが {A, B}どちらのグループになるか考えてみま しょう 昨今のDB選び ではどのDBを使う?
Slide 15
Slide 15 text
昨今のDB選び ではどのDBを使う? Group A Group B
Slide 16
Slide 16 text
昨今のDB選び ではどのDBを使う? Group A Group B
Slide 17
Slide 17 text
今考えてもらったRDBのカテゴリ分けは、 どのような違いに基づいて分けられたものでしょうか? 昨今のDB選び ではどのDBを使う?
Slide 18
Slide 18 text
世界でもっとも利用されているDBは oracleだそうです 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)
Slide 19
Slide 19 text
MySQLとPostgreSQLがあるように、どうやら上位は さきほどのGroupAのようです... 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)
Slide 20
Slide 20 text
3. 行(Row)指向DBと 列(Column)指向DB
Slide 21
Slide 21 text
行(Row)指向DBと列(Column)指向DB 行指向 列指向
Slide 22
Slide 22 text
行(Row)指向DBと列(Column)指向DB 行指向DBはサービスの フロントエンドDBとして利用される MySQL, PostgreSQLなど、アプリケーションが直接問い合わせ にいくDBです ◎ データを保存する際は1行ずつ ◎ 取り出す際も1行全ての列を取り出すことが得意
Slide 23
Slide 23 text
◎ データを保存する際、複数行を列ごとに保存 ◎ 取り出す際も、指定された列のみ取り出し ○ 指定外の列は取り出さない 行(Row)指向DBと列(Column)指向DB 列指向DBは? AWS Redshift, BigQuery, Hiveなどは列指向DBです
Slide 24
Slide 24 text
行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた? 列指向DBは行指向DBに比べて後発です。 何のために生まれたのでしょうか? アプリケーション内で使われるSQLと、 分析で使われるSQLを見比べてみましょう
Slide 25
Slide 25 text
アプリケーション内で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
Slide 26
Slide 26 text
分析で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
Slide 27
Slide 27 text
アプリケーションでは、1つの行の全体(*)を使うことが多いの に対し、分析では複数の行の一部の列だけが欲しい場合が 多い 列指向DBは主に分析用途で使われることが多いDB 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
Slide 28
Slide 28 text
行(Row)指向DBと列(Column)指向DB 列指向DBは主に分析用途 しっかりした分析基盤を構築する際、 アプリケーションで利用するDBとは思想が異なる 列指向DBを利用することでMLエンジニア/DSの負担を減ら すことができる データエンジニアの仕事の一部として ◎ 列指向DBを中心とする分析環境の構築・運用 ◎ アプリケーションで作成されたトランザクションデータを 分析DBに移し替える仕組み作り なんかも含まれます
Slide 29
Slide 29 text
行指向DBと列指向DBについて簡単ですが解説しました ですが、それぞれのカテゴリの中にさらに様々な種類があ ります。何が違うのでしょうか? 細かな構文(SQL)の違い、設定の仕方の違い、機能差など はもちろんありますが、 それの土台になっているのは思想や哲学です まとめ ソフトウェアの思想や哲学に沿う
Slide 30
Slide 30 text
すべての会社、サービスに出来上がった背景や思想、理念 があるように、ソフトウェアにもそれがあります。 エンジニアとして思想や哲学を理解し、技術選定を行うこと は、どんなtipsにも優る大事な基礎です (そしてこのこと自体もまた思想・哲学です) まとめ ソフトウェアの思想や哲学に沿う
Slide 31
Slide 31 text
ご静聴ありがとうございました!