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
3.1k
othlotech
onunu
May 13, 2019
Tweet
Share
More Decks by onunu
See All by onunu
ビッグデータと機械学習の狭間で -データエンジニアに求められる役割-
onunu
5
1.3k
Railsと考えるデータベースのインデックス戦略
onunu
4
1.6k
地球とSQL
onunu
2
470
Railtieでpluginを作ろう!
onunu
0
430
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Automating Front-end Workflow
addyosmani
1366
200k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Documentation Writing (for coders)
carmenintech
66
4.5k
RailsConf 2023
tenderlove
29
940
Visualization
eitanlees
146
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Writing Fast Ruby
sferik
628
61k
Docker and Python
trallard
42
3.1k
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にも優る大事な基礎です (そしてこのこと自体もまた思想・哲学です) まとめ ソフトウェアの思想や哲学に沿う
ご静聴ありがとうございました!