データベースの使い分けを考える

22
データベースの 使い分けを考える クラスメソッド株式会社 データインテグレーション部 甲木 洋介 #gbfukuoka classmethod.jp 1 2017/2/11 合同勉強会 in 福岡

Upload: yosuke-katsuki

Post on 21-Feb-2017

646 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: データベースの使い分けを考える

データベースの使い分けを考える

クラスメソッド株式会社データインテグレーション部

甲木 洋介

#gbfukuoka

classmethod.jp 1

2017/2/11 合同勉強会 in 福岡

Page 2: データベースの使い分けを考える

自己紹介

• 甲木 洋介(かつき ようすけ)

• id: yokatsuki

• クラスメソッド株式会社データインテグレーション(DI)部所属

• AWS上でデータ分析基盤の提案と技術検証、構築を担当

• 丸星ラーメンと立花うどん

classmethod.jp 2

Page 3: データベースの使い分けを考える

Developers.IO

classmethod.jp 3

Page 4: データベースの使い分けを考える

クラスメソッド 採用応募フォームホームページ(classmethod.jp) → 画面一番下スクロール

→ 「採用のお問い合わせ」

4

Page 5: データベースの使い分けを考える

簡単です是非

classmethod.jp 5

Page 6: データベースの使い分けを考える

本セッションの内容

選択肢が増えたデータベース、DBMSの

使い分けを考えてみる

検索キーワードは黄色

※だいたい個人の感想です

classmethod.jp 6

Page 7: データベースの使い分けを考える

データベースの用途

• データ保存

– 一瞬から10年

• データ操作(加工)

– 分析対象の抽出

– 別のデータと合成

• それぞれのDBMSには得手/不得手がある

classmethod.jp 7

Page 8: データベースの使い分けを考える

結論

• 機能の重複は増えてきたが、「何にでも合う」DBMSはない

• データの寿命で選ぶ

• データの柔らかさで選ぶ

• 扱うデータ量で選ぶ

• 性能だけでは選ばない

classmethod.jp 8

Page 9: データベースの使い分けを考える

データの寿命で選ぶ(短寿命)

• 「RDBMSは超巨大なグローバル変数」という解釈

• memcached、Redisの延長上

• 高速(オンメモリ)

• 柔軟なデータ構造

• トランザクション管理の必要性低

• NoSQL DBMS

classmethod.jp 9

Page 10: データベースの使い分けを考える

Amazon DynamoDB

• AWS提供のマネージドNoSQL DB

• 低レイテンシ、大量アクセス重視

classmethod.jp 10

Page 11: データベースの使い分けを考える

データの寿命で選ぶ(長寿命)

• 長期間のデータは安さと汎用性重視

• アクセスログ、ユーザ購買履歴

• 現物保管、しかし直接参照しない

• データレイクという考え方

• AWSの場合はS3 → GlacierそれをRedshiftやEMRへ

classmethod.jp 11

Page 12: データベースの使い分けを考える

データレイク

• 生データを「とりあえず全部」保存

• 後で必要な構造に加工、抽出

• クラウドサービスの登場(ストレージ価格の定価)により実現

classmethod.jp 12

Page 13: データベースの使い分けを考える

Amazon Athena

• S3のファイルに直接SQL

• 従量課金(1TBあたり$5)

• 同時5クエリ、動作時間30分などの制限

classmethod.jp 13

Page 14: データベースの使い分けを考える

データの柔らかさで選ぶ

• データの項目数や型が決まっているか

• RDB or KVS(Key-Valueストア)

• 格納されたデータの活用法を考慮

– 「とりあえずKVS」は危険

classmethod.jp 14

Page 15: データベースの使い分けを考える

カラム型データベース

• 基本はRDB

– テーブル

– SQL

• アプライアンス製品が多い

• スケールアウトできるものが多い

• 集計処理に強み

• トランザクション処理は得意ではない

classmethod.jp 15

Page 16: データベースの使い分けを考える

Amazon Redshift

• マネージドデータウェアハウス製品

• スケールアップ、スケールアップ両方で性能向上可能

classmethod.jp 16

Page 17: データベースの使い分けを考える

データ量で選ぶ

• RDBMS or Hadoopエコシステム

• 目標時間内に処理完了の為にスケールアウトによる力技が有利

• 費用、管理性で判断

classmethod.jp 17

Page 18: データベースの使い分けを考える

Amazon EMR

• マネージドHadoopフレームワーク

classmethod.jp 18

Page 19: データベースの使い分けを考える

性能で選ぶ?

• 「◯◯が速いと聞いたので…」• 機能、特性を考えず、

性能だけで選ぶと問題が起きやすい• アカン例

– Redshiftでレコードアクセス• アーキテクチャ上苦手

– 一台のMySQLで巨大集計• 速度を上げるのに苦労

– Cassandraで長期間保存• 保存コストがかかる

classmethod.jp 19

Page 20: データベースの使い分けを考える

性能で選ぶ?

• DBMS高速化の仕組みを事前に把握使える高速化機能があるか?

– スケールアップ(CPU、メモリ追加)

– スケールアウト(マシン追加)

– キャッシュ

– インデックス

– 分散キー

classmethod.jp 20

Page 21: データベースの使い分けを考える

まとめ

• 機能の重複は増えてきたが、「何にでも合う」DBMSはない

• データの寿命で選ぶ

• データの柔らかさで選ぶ

• 扱うデータ量で選ぶ

• 性能だけでは選ばない

• マネージドサービス最強

classmethod.jp 21

Page 22: データベースの使い分けを考える