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
480
Railtieでpluginを作ろう!
onunu
0
440
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Mobile First: as difficult as doing things right
swwweet
222
9k
RailsConf 2023
tenderlove
29
970
GraphQLとの向き合い方2022年版
quramy
44
13k
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にも優る大事な基礎です (そしてこのこと自体もまた思想・哲学です) まとめ ソフトウェアの思想や哲学に沿う
ご静聴ありがとうございました!