Upgrade to Pro — share decks privately, control downloads, hide ads and more …

othlotech

8400ad0bcb9bd4c71168a38c67325fe6?s=47 onunu
May 13, 2019
2.8k

 othlotech

8400ad0bcb9bd4c71168a38c67325fe6?s=128

onunu

May 13, 2019
Tweet

Transcript

  1. 大量の物件情報を 短時間で 処理するハック データ分析勉強会 ~SQL 活用~ @onunu

  2. Hello! おぬま りく@onunu IESHILという不動産の情報格差 をなんとかしていくサービスを 作っています データエンジニアです Twitter: @onunu_ Github:

    onunu (有益な情報はおそらく皆無)
  3. 0. 今日の話の前に データエンジニアってどんな仕事?

  4. Q. データエンジニアってどんな仕事? 実際のところ、裏方の何でも屋みたいになってます. A. ぼくもよくわからん ◎ というのも、できたばかりの職種で人や会社によって定 義がまちまち ◎ 最大公約数的にはサーバーサイドと機械学習エンジニ

    ア/データサイエンティストの橋渡し ◦ トランザクションデータをDSに渡す仕組み ◦ MLのアウトプットをサービスに組み込む ◦ データの整形/前処理 ◦ 上記を行うための基盤/インフラの整備 etc...
  5. 1. 今日のテーマ 大量の物件情報を処理するハック

  6. 大量の物件情報を処理するハック そんなものはない

  7. 大量の物件情報を処理するハック 正確にはあるが、 みなさんが聞きたいような内容にはならない MySQL? PostgreSQL? Redshift? BigQuery? Or other? そんなものはない

    ◎ それぞれのtipsはググれば出てくるし ◎ やってるうちに少しずつわかっていく ◎ 小手先のテクニックで楽をする手段はユースケースを 想像できないと理解しにくい
  8. なので 大量の物件情報を処理するハック そんなものはない ◎ 事業会社と学生or個人で作るサービスの対比をしなが ら ◎ なるべく汎用的な設計の話とかを交えつつ ◎ これからビッグデータとか、データサイエンスみたいな

    もの(?)にどう向き合っていくか などなどを話していきたいと思います :)
  9. 2. 昨今のDB選び

  10. Let’s thinking! わからない人は、 「何でファイルシステムではダメなんだろう?」 を考えてみよう 昨今のDB選び そもそもDBって何で使うんだっけ?

  11. ◎ データを構造化して保存する ◎ データの蓄積が容易になる ◎ データの検索、更新を容易にする ◎ ビジネスロジックとデータを分離する ファイルシステムは内容や名前をキーに検索する手段が あるが、それ自体にファイルの内容を更新する統一的手

    段は存在しない また、内容について正しさを保障する機能もない 昨今のDB選び そもそもDBって何で使うんだっけ?
  12. DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? 昨今のDB選び ではどのDBを使う?

  13. DBといったら何が思い浮かびますか? サービスを1から作れと言われたら、 何を使うでしょうか? おそらくほとんどの人が、 RDBを思い浮かべたと思います。 昨今のDB選び ではどのDBを使う?

  14. RDBの中にも大きなカテゴリがあります 下にのRDBが {A, B}どちらのグループになるか考えてみま しょう 昨今のDB選び ではどのDBを使う?

  15. 昨今のDB選び ではどのDBを使う? Group A Group B

  16. 昨今のDB選び ではどのDBを使う? Group A Group B

  17. 今考えてもらったRDBのカテゴリ分けは、 どのような違いに基づいて分けられたものでしょうか? 昨今のDB選び ではどのDBを使う?

  18. 世界でもっとも利用されているDBは oracleだそうです 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)

  19. MySQLとPostgreSQLがあるように、どうやら上位は さきほどのGroupAのようです... 昨今のDB選び ではどのDBを使う? DB-Engines Ranking (https://db-engines.com/en/ranking)

  20. 3. 行(Row)指向DBと 列(Column)指向DB

  21. 行(Row)指向DBと列(Column)指向DB 行指向 列指向

  22. 行(Row)指向DBと列(Column)指向DB 行指向DBはサービスの フロントエンドDBとして利用される MySQL, PostgreSQLなど、アプリケーションが直接問い合わせ にいくDBです ◎ データを保存する際は1行ずつ ◎ 取り出す際も1行全ての列を取り出すことが得意

  23. ◎ データを保存する際、複数行を列ごとに保存 ◎ 取り出す際も、指定された列のみ取り出し ◦ 指定外の列は取り出さない 行(Row)指向DBと列(Column)指向DB 列指向DBは? AWS Redshift,

    BigQuery, Hiveなどは列指向DBです
  24. 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた? 列指向DBは行指向DBに比べて後発です。 何のために生まれたのでしょうか? アプリケーション内で使われるSQLと、 分析で使われるSQLを見比べてみましょう

  25. アプリケーション内で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?

  26. 分析で使われるSQL 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?

  27. アプリケーションでは、1つの行の全体(*)を使うことが多いの に対し、分析では複数の行の一部の列だけが欲しい場合が 多い 列指向DBは主に分析用途で使われることが多いDB 行(Row)指向DBと列(Column)指向DB 列指向DBはなんのために生まれた?

  28. 行(Row)指向DBと列(Column)指向DB 列指向DBは主に分析用途 しっかりした分析基盤を構築する際、 アプリケーションで利用するDBとは思想が異なる 列指向DBを利用することでMLエンジニア/DSの負担を減ら すことができる データエンジニアの仕事の一部として ◎ 列指向DBを中心とする分析環境の構築・運用 ◎

    アプリケーションで作成されたトランザクションデータを 分析DBに移し替える仕組み作り なんかも含まれます
  29. 行指向DBと列指向DBについて簡単ですが解説しました ですが、それぞれのカテゴリの中にさらに様々な種類があ ります。何が違うのでしょうか? 細かな構文(SQL)の違い、設定の仕方の違い、機能差など はもちろんありますが、 それの土台になっているのは思想や哲学です まとめ ソフトウェアの思想や哲学に沿う

  30. すべての会社、サービスに出来上がった背景や思想、理念 があるように、ソフトウェアにもそれがあります。 エンジニアとして思想や哲学を理解し、技術選定を行うこと は、どんなtipsにも優る大事な基礎です (そしてこのこと自体もまた思想・哲学です) まとめ ソフトウェアの思想や哲学に沿う

  31. ご静聴ありがとうございました!