Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
othlotech
Search
onunu
May 13, 2019
1
3k
othlotech
onunu
May 13, 2019
Tweet
Share
More Decks by onunu
See All by onunu
ビッグデータと機械学習の狭間で -データエンジニアに求められる役割-
onunu
5
1.2k
Railsと考えるデータベースのインデックス戦略
onunu
4
1.6k
地球とSQL
onunu
2
440
Railtieでpluginを作ろう!
onunu
0
390
Featured
See All Featured
Atom: Resistance is Futile
akmur
261
25k
Faster Mobile Websites
deanohume
304
30k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Code Review Best Practice
trishagee
62
16k
Designing Experiences People Love
moore
138
23k
Writing Fast Ruby
sferik
625
60k
Six Lessons from altMBA
skipperchong
26
3.4k
Infographics Made Easy
chrislema
239
18k
Optimizing for Happiness
mojombo
375
69k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
4k
Transcript
大量の物件情報を 短時間で 処理するハック データ分析勉強会 ~SQL 活用~ @onunu
Hello! おぬま りく@onunu IESHILという不動産の情報格差 をなんとかしていくサービスを 作っています データエンジニアです Twitter: @onunu_ Github:
onunu (有益な情報はおそらく皆無)
0. 今日の話の前に データエンジニアってどんな仕事?
Q. データエンジニアってどんな仕事? 実際のところ、裏方の何でも屋みたいになってます. A. ぼくもよくわからん ◎ というのも、できたばかりの職種で人や会社によって定 義がまちまち ◎ 最大公約数的にはサーバーサイドと機械学習エンジニ
ア/データサイエンティストの橋渡し ◦ トランザクションデータをDSに渡す仕組み ◦ MLのアウトプットをサービスに組み込む ◦ データの整形/前処理 ◦ 上記を行うための基盤/インフラの整備 etc...
1. 今日のテーマ 大量の物件情報を処理するハック
大量の物件情報を処理するハック そんなものはない
大量の物件情報を処理するハック 正確にはあるが、 みなさんが聞きたいような内容にはならない MySQL? PostgreSQL? Redshift? BigQuery? Or other? そんなものはない
◎ それぞれのtipsはググれば出てくるし ◎ やってるうちに少しずつわかっていく ◎ 小手先のテクニックで楽をする手段はユースケースを 想像できないと理解しにくい
なので 大量の物件情報を処理するハック そんなものはない ◎ 事業会社と学生or個人で作るサービスの対比をしなが ら ◎ なるべく汎用的な設計の話とかを交えつつ ◎ これからビッグデータとか、データサイエンスみたいな
もの(?)にどう向き合っていくか などなどを話していきたいと思います :)
2. 昨今のDB選び
Let’s thinking! わからない人は、 「何でファイルシステムではダメなんだろう?」 を考えてみよう 昨今のDB選び そもそもDBって何で使うんだっけ?
◎ データを構造化して保存する ◎ データの蓄積が容易になる ◎ データの検索、更新を容易にする ◎ ビジネスロジックとデータを分離する ファイルシステムは内容や名前をキーに検索する手段が あるが、それ自体にファイルの内容を更新する統一的手
段は存在しない また、内容について正しさを保障する機能もない 昨今のDB選び そもそもDBって何で使うんだっけ?
DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? 昨今のDB選び ではどのDBを使う?
DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? おそらくほとんどの人が、 RDBを思い浮かべたと思います。 昨今のDB選び ではどのDBを使う?
RDBの中にも大きなカテゴリがあります 下にのRDBが {A, B}どちらのグループになるか考えてみま しょう 昨今のDB選び ではどのDBを使う?
昨今のDB選び ではどのDBを使う? Group A Group B
昨今のDB選び ではどのDBを使う? Group A Group B
今考えてもらったRDBのカテゴリ分けは、 どのような違いに基づいて分けられたものでしょうか? 昨今のDB選び ではどのDBを使う?
世界でもっとも利用されているDBは oracleだそうです 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)
MySQLとPostgreSQLがあるように、どうやら上位は さきほどのGroupAのようです... 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)
3. 行(Row)指向DBと 列(Column)指向DB
行(Row)指向DBと列(Column)指向DB 行指向 列指向
行(Row)指向DBと列(Column)指向DB 行指向DBはサービスの フロントエンドDBとして利用される MySQL, PostgreSQLなど、アプリケーションが直接問い合わせ にいくDBです ◎ データを保存する際は1行ずつ ◎ 取り出す際も1行全ての列を取り出すことが得意
◎ データを保存する際、複数行を列ごとに保存 ◎ 取り出す際も、指定された列のみ取り出し ◦ 指定外の列は取り出さない 行(Row)指向DBと列(Column)指向DB 列指向DBは? AWS Redshift,
BigQuery, Hiveなどは列指向DBです
行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた? 列指向DBは行指向DBに比べて後発です。 何のために生まれたのでしょうか? アプリケーション内で使われるSQLと、 分析で使われるSQLを見比べてみましょう
アプリケーション内で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
分析で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
アプリケーションでは、1つの行の全体(*)を使うことが多いの に対し、分析では複数の行の一部の列だけが欲しい場合が 多い 列指向DBは主に分析用途で使われることが多いDB 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?
行(Row)指向DBと列(Column)指向DB 列指向DBは主に分析用途 しっかりした分析基盤を構築する際、 アプリケーションで利用するDBとは思想が異なる 列指向DBを利用することでMLエンジニア/DSの負担を減ら すことができる データエンジニアの仕事の一部として ◎ 列指向DBを中心とする分析環境の構築・運用 ◎
アプリケーションで作成されたトランザクションデータを 分析DBに移し替える仕組み作り なんかも含まれます
行指向DBと列指向DBについて簡単ですが解説しました ですが、それぞれのカテゴリの中にさらに様々な種類があ ります。何が違うのでしょうか? 細かな構文(SQL)の違い、設定の仕方の違い、機能差など はもちろんありますが、 それの土台になっているのは思想や哲学です まとめ ソフトウェアの思想や哲学に沿う
すべての会社、サービスに出来上がった背景や思想、理念 があるように、ソフトウェアにもそれがあります。 エンジニアとして思想や哲学を理解し、技術選定を行うこと は、どんなtipsにも優る大事な基礎です (そしてこのこと自体もまた思想・哲学です) まとめ ソフトウェアの思想や哲学に沿う
ご静聴ありがとうございました!