Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

事例で学ぶApache Cassandra

1,774 views

Published on

db tech showcase 2017 資料

Published in: Technology

事例で学ぶApache Cassandra

  1. 1. 事例で学ぶ Apache Cassandra db tech showcase OSS 2017 森下 雄貴
  2. 2. スピーカー 森下 雄貴 (yuki@datastax.com) - Solution Architect (ときどきSoftware Developer) @ DataStax - Apache Cassandraコミッター
  3. 3. DataStax Enterprise Apache Cassandraを 中核にした製品 + サポート + プロフェッショナルサー ビス + トレーニング
  4. 4. Apache Cassandra
  5. 5. The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance.
  6. 6. スケーラビリティ • データはクラスター内のノードに分散されて格納される • パフォーマンスとデータ容量両方でのリニアスケーラビリティ 50,000 trans/sec 500 GB 100,000 trans/sec 1 TB 200,000 trans/sec 2 TB
  7. 7. スケーラビリティ • Cassandraはマスターレス • ユーザーはどのデータセンターのどのノードに でも読み書きできる。 • 運用もシンプル • すべての書き込みは、自動的に等しくノード間に 分散され、クラスター内に複製される
  8. 8. 10 50 3070 80 40 20 60 クライアント ほかの2つのノードからデータ を取得できる 一時的なノード障害 アベイラビリティ • 単一障害点なし • 高い耐障害性 • 自動レプリケーション • スケールしても運用はシンプル
  9. 9. アベイラビリティ • データセンター間レプリケーション • データセンターやクラウドの アベイラビリティゾーンを またぐデータの複製 • どんな障害が起きても ビジネスへの影響なし • グローバルな低遅延パフォーマンス 10 50 3070 80 40 20 60 Clie nt 15 55 3575 85 45 25 65 別のデータセンターデータセンター障害 10 50 3070 80 40 20 60 クライアント
  10. 10. パフォーマンス • データの書き込み
  11. 11. パフォーマンス • データの読み込み • パーティションを素早く読み取ることに特化
  12. 12. Cassandraクエリ言語(CQL) • RDBMSのSQLに似たシンタックス • DDLによりオブジェクトを作成 • CREATE, INSERT, UPDATE, DELETE, GRANT, REVOKE • SELECT文で検索 • JOINはできない • INSERT, UPDATE, DELETE でデータ書き込み CQL CREATE TABLE market_prices ( symbol TEXT, date TIMESTAMP, price DECIMAL, side INT, PRIMARY KEY (symbol, date) ) WITH CLUSTERING ORDER BY (date DESC);
  13. 13. 事例
  14. 14. RDBからApache Cassandraへ
  15. 15. • Oracleデータベースがメイン • DC間レプリケーションにはOracle Golden Gate • ディザスタリカバリにはOracle Data Guard • 問題点 • ユーザーの増加、それに伴うデータ量の増加にOracleが対応できない • クラウドへの移行も考慮したい
  16. 16. • オンラインビデオプラットフォーム • モノリシックなアーキテクチャ • リリースサイクルが長い • Oracle RAC w/ Oracle Active Data Guard • 問題点 • 要求に満たないアップタイム • DC間をOracle Golden Gateで双方向Active-Active • スケーラビリティ • マイクロサービスアーキテクチャへの移行 • アプリケーションだけではなく、データベース層もスケールアウト • 真のマルチデータセンター環境を構築したい
  17. 17. • ホテル予約システム • 6000ホテル、50の販売チャネル • 25年間1台のデータベースインスタンスで稼働 • 問題点 • スケールアップするしかトランザクション数の増加に対応できない • クラウドへ移行したい
  18. 18. 共通の課題 • データ量の増加に既存のRDBMSでは対応できない • ダウンタイムをなくしたい • クラウドへも含めてスケールアウトが容易なアーキテクチャに変更したい
  19. 19. 移行時のチャレンジ • 結果整合性 / トランザクション • データモデルの考え方の違い
  20. 20. 結果整合性 / トランザクション • 結果整合性 • 書き込んだデータを読み込んでも、すぐに最新のデータが取れるとは限らない • Apache Cassandraはトランザクションがない • LWT (Light Weight Transaction / 軽量トランザクション) • レプリカ間の合意をとって(Paxos) 一貫した結果を書き込み
  21. 21. 結果整合性 / トランザクション • 要件に応じて必要な一貫性の見極めが必要 https://www.slideshare.net/DataStax/building-a-distributed-reservation-system-with-cassandra-andrew-baker-jeffrey-carpenter-choice-hotels-c-summit-2016
  22. 22. 結果整合性 / トランザクション • システム全体でトランザクションの仕組みを考える • LWTを利用する箇所 • 失敗時のリトライ • 補償プロセス https://www.slideshare.net/DataStax/building-a-distributed-reservation-system-with-cassandra-andrew-baker-jeffrey-carpenter-choice-hotels-c-summit-2016
  23. 23. データモデリング • RDMBS • 正規化 • 必要に応じてインデックス作成 • Apache Cassandra • 非正規化 • クエリパターンからデータモデルを考える • セカンダリーインデックスのサポートはあるが、時にはアプリケーション層での処理や外部 検索システム(Apache Solr / ElasticSearch)との連携が必要になる
  24. 24. 移行した結果 • Symantec https://www.slideshare.net/DataStax/oracle-let-my-people-go-shu-zhang-ilya-sokolov-symantec-cassandra-summit-2016
  25. 25. 時系列データの取り込み
  26. 26. 時系列データ? • 時系列データ / Time series data • ある一定の時間間隔で測定されるデータ • Apache Cassandra 上でのデータモデル例 CREATE TABLE temperature ( weatherstation_id text, event_time timestamp, temperature text, PRIMARY KEY (weatherstation_id, event_time) );
  27. 27. なぜCassandra + 時系列データ? • Cassandraは1パーティション内にデータをソートして保持 • 時系列データは時系列でソートされて1パーティション内に保持される • Cassandraは1パーティションの読み取りが早い • 時系列データの主たる読み取りパターン(時間範囲での検索)とマッチ
  28. 28. • GPSデータの取り込み • 一定時間間隔でデバイスから送られてくるGPSデータを取り込み • 数百万データポイント / 秒 • 主たるデータの読み込みは最近のもののみ • SLA • 書き込み: 10ms p99 • 読み込み: 40ms p99 • 結果 • 書き込み: 1mil / 秒 28μs p99 • 読み込み: 10k / 秒 4.7ms p99
  29. 29. データモデル CREATE TABLE locations ( uuid uuid, partition_key bigint, // minute offset timestamp bigint, // timestamp location blob, // thrift encoded location data PRIMARY KEY ((uuid, partition_key), timestamp) );
  30. 30. データの分析
  31. 31. Microsoft Office 365 MyAnalytics (Delve Analytics)
  32. 32. • 様々なアプリケーションからの情報や、ユーザーのアクティビティを集約 • 分析ダッシュボードを提供 https://www.slideshare.net/DataStax/running-400node-cassandra-spark-clusters-in-azure-anubhav-kale-microsoft-c-summit-2016
  33. 33. • アーキテクチャ • Azureクラウド上のシステム • Apache Kafka • Apache Spark • Apache Cassandra https://www.slideshare.net/DataStax/running-400node-cassandra-spark-clusters-in-azure-anubhav-kale-microsoft-c-summit-2016
  34. 34. spark-cassandra-connector • Apache SparkとApache Cassandraをつなぐオープンソースのコネクター • SparkからCassandraのテーブルの読み書きが可能に • Apache License 2.0 • https://github.com/datastax/spark-cassandra-connector
  35. 35. Apache Spark組み合わせ事例 • 機械学習 • Apache SparkのMLlibと組み合わせてレコメンデーション生成 (Netflix) • 外部データソースからのデータ移行 (ETL) • RDBMS -> Apache Cassandra • Apache Cassandra -> Apache Cassandra
  36. 36. まとめ
  37. 37. Apache Cassandraの使いどころ • ハイパフォーマンス、ハイスケーラビリティ、ハイアベイラビリティが求められるシ ステム • 将来の成長を見据えたシステムアーキテクチャ • きちんと特性を踏まえたうえで利用する • RDBMSとは違った特徴 • アプリケーションの要件を詳細に考える • トランザクションが必要な場面は? • ほかのシステムと組み合わせ、データを素早くビジネス価値へ
  38. 38. DataStax Academy • https://academy.datastax.com • オンライン上のフリー トレーニング • Apache Cassandra, Spark + Cassandraなど • 認定エンジニア制度
  39. 39. 参考資料 • Cassandra Summit 2016 ビデオ&スライド • https://www.datastax.com/company/events/cassandra-summit-2016-recorded-sessions- and-slides • DataStax Webinars • https://www.datastax.com/resources/webinars

×