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.
NoSQLどう活かす?	
  
今日から使えるCouchbaseシステムアーキテクチャ	
  
デザインパターン集	
  
	
  
Couchbase	
  Japan,	
  Solutions	
  Engineer	
  河村康爾	
  
©2015	
  Couchbase	
  Inc.	
   2	
  
Couchbase,	
  by	
  the	
  numbers	
  
§ 300
§  EMPL OY EE S
500+
C U S TO M E R S
...
©2015	
  Couchbase	
  Inc.	
   3	
  
Top	
  Use	
  Cases	
  
Profile Management Personalization 360o Customer View Interne...
©2015	
  Couchbase	
  Inc.	
   4	
  
典型的なシステムアーキテクチャ	
  
©2015	
  Couchbase	
  Inc.	
   5	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
サーバApp	
  クライアント	
  
App	
  
Couchbas...
©2015	
  Couchbase	
  Inc.	
   6	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
サーバApp	
  クライアント	
  
App	
  
Couchbas...
©2015	
  Couchbase	
  Inc.	
   7	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
サーバApp	
  クライアント	
  
App	
  
サーバApp	
...
©2015	
  Couchbase	
  Inc.	
   8	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
サーバApp	
  クライアント	
  
App	
  
サーバApp	
...
©2015	
  Couchbase	
  Inc.	
   9	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
サーバApp	
  クライアント	
  
App	
  
サーバApp	
...
©2015	
  Couchbase	
  Inc.	
   10	
  
データセンタ	
  1	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ	
  
データセンタ	
  2	
  
サーバA...
©2015	
  Couchbase	
  Inc.	
   11	
  
Couchbase	
  integrates	
  with	
  the	
  Big	
  Data	
  ecosystem	
  
©2015	
  Couchbase	
  Inc.	
   12	
  
Couchbase	
  Serverを理解し	
  
3つのインタフェースを使い分けよう	
  
©2015	
  Couchbase	
  Inc.	
   13	
  
データモデル	
  
Couchbase	
  Server	
  クラスタ	
  
バケット:	
  music_app	
  
キー	
   バリュー	
  
us...
©2015	
  Couchbase	
  Inc.	
   14	
  
バケットとvBucket	
  
Couchbase	
  Server	
  クラスタ	
  
バケット:	
  music_app	
  
バケット:	
  log...
©2015	
  Couchbase	
  Inc.	
   15	
  
データ分散:	
  オートシャーディング、レプリカ	
  
Couchbase	
  Serverクラスタ	
  
ノード1	
  
Act	
  
Rep	
  
v...
©2015	
  Couchbase	
  Inc.	
   16	
  
リバランス	
  
Couchbase	
  Serverクラスタ	
  
ノード1	
  
Act	
  
Rep	
  
vb-­‐1	
  
vb-­‐4	
  ...
©2015	
  Couchbase	
  Inc.	
   17	
  
3つのデータアクセスインタフェース	
  
Couchbase	
  Server	
  ノード	
  
アプリケーション	
  
Couchbase	
  SDK	
...
©2015	
  Couchbase	
  Inc.	
   18	
  
Couchbase	
  Server	
  
ノード	
  
・・・	
  
DCPキュー	
  
キーアクセス:	
  RAM,	
  Disk,	
  DCP	
...
©2015	
  Couchbase	
  Inc.	
   19	
  
IoT:	
  センサーデータ	
  
©2015	
  Couchbase	
  Inc.	
   20	
  
View:	
  Map	
  Reduce	
  集計に強い	
  
Map	
  
function	
  (doc,	
  meta)	
  {	
  
	
  ...
©2015	
  Couchbase	
  Inc.	
   21	
  
N1QL:	
  SQL	
  for	
  Documents	
  
大規模データの中から、検索条件で	
  
小、中規模に絞り込んで利用すると吉	
  
インデッ...
©2015	
  Couchbase	
  Inc.	
   22	
  
シングルノードタイプ、3つのサービス	
  
Couchbase	
  Server	
  ノード	
  
Data	
  Service	
  
マネージドキャッシュ...
©2015	
  Couchbase	
  Inc.	
   23	
  
Couchbase	
  
Server	
  ノード	
  
Index	
  Service	
  
GSI	
  
インデックス	
  
Multi	
  Dim...
©2015	
  Couchbase	
  Inc.	
   24	
  
モバイル	
  
©2015	
  Couchbase	
  Inc.	
   25	
  
NoSQL	
  Use	
  Cases	
  —	
  Mobile	
  
Database Requirements:
Allow online /
offli...
©2015	
  Couchbase	
  Inc.	
   26	
  
Couchbaseモバイルを利用したシステムアーキテクチャ	
  
データセンタ	
  
ロードバランサ	
  
モバイルApp	
  
Couchbase	
  Li...
©2015	
  Couchbase	
  Inc.	
   27	
  
まとめ	
  
©2015	
  Couchbase	
  Inc.	
   28	
  
データセンタ	
  1	
  
Couchbase	
  Serverクラスタ	
  
典型的なシステムアーキテクチャ、おさらい	
  
データセンタ	
  2	
  ...
©2015	
  Couchbase	
  Inc.	
   29	
  
是非こんな要件に活用されたし	
  
§  ビジネスの成長に合わせ無停止でのデータベース拡張、運用	
  
§  既存システムの性能改善にHAキャッシュストレージと...
©2015	
  Couchbase	
  Inc.	
   30	
  
Couchbaseを利用したシステム成功の秘訣	
  
§  クラスタトポロジを理解するスマートなクライアントSDKライブラ
リ	
  
§  キーアクセス、Vie...
©2015	
  Couchbase	
  Inc.	
   31	
  
お知らせ	
  
©2015	
  Couchbase	
  Inc.	
   32	
  
公式トレーニング	
  
©2015	
  Couchbase	
  Inc.	
   33	
  
JCBUG:	
  コミュニティに参加しよう!	
  
©2015	
  Couchbase	
  Inc.	
   34	
  
ドキュメント翻訳も一緒にやりましょう!!	
  
©2015	
  Couchbase	
  Inc.	
   35	
  
Thank	
  you.	
  
	
  
couchbasejp@couchbase.com	
  
Upcoming SlideShare
Loading in …5
×

今日から使えるCouchbaseシステムアーキテクチャデザインパターン集

1,492 views

Published on

Sapporo Dev Festa 2015で登壇した際の資料です。

Published in: Technology
  • Be the first to comment

今日から使えるCouchbaseシステムアーキテクチャデザインパターン集

  1. 1. NoSQLどう活かす?   今日から使えるCouchbaseシステムアーキテクチャ   デザインパターン集     Couchbase  Japan,  Solutions  Engineer  河村康爾  
  2. 2. ©2015  Couchbase  Inc.   2   Couchbase,  by  the  numbers   § 300 §  EMPL OY EE S 500+ C U S TO M E R S 100% OPEN SOURCE
  3. 3. ©2015  Couchbase  Inc.   3   Top  Use  Cases   Profile Management Personalization 360o Customer View Internet of Things Content Management Catalog Real Time Big Data Digital Communication Mobile Applications High Availability Caching
  4. 4. ©2015  Couchbase  Inc.   4   典型的なシステムアーキテクチャ  
  5. 5. ©2015  Couchbase  Inc.   5   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   サーバApp  クライアント   App   Couchbase  SDK   Couchbase  Server  ノード   主要な開発言語をサポート:   Java,  Scala,  Go,  .NET,  Node.js,  C,  PHP,  Ruby     クラスタトポロジを理解する、   スマートなクライアント     3つのデータアクセスインタフェース:   キーアクセス、Viewクエリ、N1QLクエリ  
  6. 6. ©2015  Couchbase  Inc.   6   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   サーバApp  クライアント   App   Couchbase  SDK   既存DBMS   Couchbase  Server  ノード   Memcached互換のAPI   既存データベースへのアクセス負荷を軽減   保存データには有効期限を設定可能   メインフレームやレガシーシステムの手前 に配置されるケースも多い   レプリケーション、ディスクへの永続化、 リバランスなどの機能でHAなキャッシュス トレージとして利用   もちろん、メインのデータベースとしても 利用可能  
  7. 7. ©2015  Couchbase  Inc.   7   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   サーバApp  クライアント   App   サーバApp   ・・・   ・・・   Couchbase  Server  ノード   サーバApp   Couchbase  SDK   既存DBMS   ロードバランサ   Couchbase  Server  ノード   ビジネス、システムの成長に 合わせてスケール   ノードをクラスタに追加しリ バランスすることで無停止で のデータベース拡張が可能   サーバメンテナンス、アップ グレードの際も停止する必要 はない  
  8. 8. ©2015  Couchbase  Inc.   8   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   サーバApp  クライアント   App   サーバApp   ・・・   ・・・   Couchbase  Server  ノード   サーバApp   Couchbase  SDK   既存DBMS   CDN   ロードバランサ   Couchbase  Server  ノード   Couchbase  Server最大の利点は低レイテンシ、 高スループットの高性能   1件のMaxサイズは20MBだが、特性を活か すため  <  1MBを推奨   画像やビデオなど大きなオブジェクトは CDNやS3などのストレージに配置し、その メタデータをCouchbaseに保存して高速に参 照できるようにするのが一般的  
  9. 9. ©2015  Couchbase  Inc.   9   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   サーバApp  クライアント   App   サーバApp   ・・・   ・・・   Couchbase  Server  ノード   サーバApp   Couchbase  SDK   既存DBMS   分析   プラットフォーム  CDN   ロードバランサ   Couchbase  Server  ノード   Couchbaseでクリックストリームなどのオン ラインデータを収集し、SparkやHadoopな どの分析基盤に渡し、大規模な分析を行う   また、TableauなどのBIツールからODBCド ライバ経由での分析も可能   これらの分析結果をCouchbaseに保存し、イ ンタラクティブなアプリケーションで活用 する  
  10. 10. ©2015  Couchbase  Inc.   10   データセンタ  1   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ   データセンタ  2   サーバApp  クライアント   App   サーバApp   ・・・   ・・・   Couchbase  Server  ノード   サーバApp   Couchbase  SDK   DNS   ロードバランサ   サーバApp   既存DBMS   分析   プラットフォーム   Couchbase  Server   クラスタ   CDN   ロードバランサ   Couchbase  Server  ノード   単一クラスタ内のレプリケー ションに加え、クラスタ間、 データセンタ間のレプリケー ション  (XDCR)  をサポート   DR対策や、データローカリ ティ、オンライン/分析クラ スタの分離など利用方法は 様々  
  11. 11. ©2015  Couchbase  Inc.   11   Couchbase  integrates  with  the  Big  Data  ecosystem  
  12. 12. ©2015  Couchbase  Inc.   12   Couchbase  Serverを理解し   3つのインタフェースを使い分けよう  
  13. 13. ©2015  Couchbase  Inc.   13   データモデル   Couchbase  Server  クラスタ   バケット:  music_app   キー   バリュー   user::a49e2577-­‐f257-­‐47c2-­‐ ab0b-­‐63a6dc5f4919   {“name”:  “Foo”,    “email”:  “foo@example.com”,    “favariteGenres”:  [“jazz”,  “rock”]}   genre::jazz   {“desc”:  “演奏の中にブルー・ノート、シンコペー ション…”}   バケット:  log_events   ・・・   ・・・  
  14. 14. ©2015  Couchbase  Inc.   14   バケットとvBucket   Couchbase  Server  クラスタ   バケット:  music_app   バケット:  log_events   ・・・   vb-­‐0   vb-­‐1   vb-­‐2   vb-­‐1023   ・・・  vb-­‐3   key-­‐1   key-­‐2   key-­‐3   key-­‐4   key-­‐5   key-­‐6   key-­‐7   key-­‐m   key-­‐n   hash(key)  
  15. 15. ©2015  Couchbase  Inc.   15   データ分散:  オートシャーディング、レプリカ   Couchbase  Serverクラスタ   ノード1   Act   Rep   vb-­‐1   vb-­‐4   アプリケーション   Couchbase  SDK   クラスタマップ   ・・・   vb-­‐3   vb-­‐5   ・・・   ノード2   Act   Rep   vb-­‐2   vb-­‐5   ・・・   vb-­‐1   vb-­‐6   ・・・   ノード3   Act   Rep   vb-­‐3   vb-­‐6   ・・・   vb-­‐2   vb-­‐4   ・・・   ①   ②          //  ①アプリケーションコードからSDKを利用しクラスタへ接続          cluster  =  CouchbaseCluster.create(“ノード1”,  “ノード2”);                    //  SDKの内部でCouchbase  Serverノードに接続し                  //  クラスタマップを取得                  node  =  connect(nodeAddress);                  clusterMap  =  node.getClusterMap();            //  ②バケット内のドキュメントにアクセス          bucket  =  cluster.openBucket("バケット名");          doc  =  bucket.get("ドキュメントID");                    //  SDKの内部でドキュメントIDからvBUcketIDを計算                  vBucketId  =  hash(docId);                  //  クラスタマップを利用し、                  //  vBucketを担当するCouchbase  Serverノードを取得                  node  =  clusterMap.get(vBucketId);                  doc  =  node.sendGetRequest(docId);                  return  doc;  
  16. 16. ©2015  Couchbase  Inc.   16   リバランス   Couchbase  Serverクラスタ   ノード1   Act   Rep   vb-­‐1   vb-­‐4   アプリケーション   Couchbase  SDK   クラスタマップ   ・・・   vb-­‐3   vb-­‐5   ・・・   ノード2   Act   Rep   vb-­‐2   vb-­‐5   ・・・   vb-­‐1   vb-­‐6   ・・・   ノード3   Act   Rep   vb-­‐3   vb-­‐6   ・・・   vb-­‐2   vb-­‐4   ・・・   ③クラスタマップが更新され、トポロジの変化に追従   ノード4   Act   Rep   vb-­‐4   vb-­‐…   ・・・   vb-­‐6   vb-­‐…   ・・・   ノード5   Act   Rep   vb-­‐5   vb-­‐…   ・・・   vb-­‐4   vb-­‐…   ・・・   ②リバランスを実行   ①ノードをクラスタに追加/削除  
  17. 17. ©2015  Couchbase  Inc.   17   3つのデータアクセスインタフェース   Couchbase  Server  ノード   アプリケーション   Couchbase  SDK   N1QL   クエリエンジン   JSON用SQL、宣 言型クエリ言語の N1QL   View   クエリエンジン   差分MapReduceに よるマテリアライ ズドView   マネージドキャッシュ   最も原始的かつ高性 能なキーアクセス  
  18. 18. ©2015  Couchbase  Inc.   18   Couchbase  Server   ノード   ・・・   DCPキュー   キーアクセス:  RAM,  Disk,  DCP   ディスク   クライアントアプリケーション   マネージドキャッシュ   doc-­‐1   doc-­‐N  doc-­‐10   doc-­‐1   doc-­‐N   ・・・   ・・・   doc-­‐10   ・・・   ・・・   ディスクキュー   2   2-­‐1   2-­‐2   1   set  get   get   doc -­‐N   doc -­‐N   doc -­‐N   ok   キャッシュ   ミス  
  19. 19. ©2015  Couchbase  Inc.   19   IoT:  センサーデータ  
  20. 20. ©2015  Couchbase  Inc.   20   View:  Map  Reduce  集計に強い   Map   function  (doc,  meta)  {      if(doc.tp  !==  "sd")  return;      var  ts  =  dateToArray(doc.ts);      for(var  prop  in  doc.vals){          if(doc.vals.hasOwnProperty(prop)){              var  v  =  doc.vals[prop];              if(v  &&  isNaN(v)){                  emit([doc.gi,  prop,  v].concat(ts),  1);              }          }      }   }   Reduce   _count  
  21. 21. ©2015  Couchbase  Inc.   21   N1QL:  SQL  for  Documents   大規模データの中から、検索条件で   小、中規模に絞り込んで利用すると吉   インデックスの貼り方はRDBMSと同様   アドホックなクエリが可能  
  22. 22. ©2015  Couchbase  Inc.   22   シングルノードタイプ、3つのサービス   Couchbase  Server  ノード   Data  Service   マネージドキャッシュ   ディスク   ストレージ  View   インデックス   Query  Service   Index  Service   GSI   インデックス   プロジェクタ   N1QL   クエリエンジン   アプリケーション   Couchbase  SDK   レプリケーション   View   クエリエンジン  
  23. 23. ©2015  Couchbase  Inc.   23   Couchbase   Server  ノード   Index  Service   GSI   インデックス   Multi  Dimensional  Scalability   アプリケーション   Couchbase  Server  ノード   Query   Service   Couchbase  Server  ノード   Data  Service   Couchbase  Server  ノード   Data  Service   Couchbase  Server  ノード   Query   Service   Couchbase   Server  ノード   Index  Service   GSI   インデックス   N1QLクエリエンジン  Couchbase  SDK   Couchbase  Server  ノード   Data  Service   マネージド   キャッシュ   View   インデックス  
  24. 24. ©2015  Couchbase  Inc.   24   モバイル  
  25. 25. ©2015  Couchbase  Inc.   25   NoSQL  Use  Cases  —  Mobile   Database Requirements: Allow online / offline support (Mobile) Real-world Enterprise Example: RyanAir rewrote its mobile app to provide a better user experience, reduce network bandwidth costs, and support offline operation. Scale to support a expanding customer base (Thousands to Millions of Users) Allow different customer data models (E.g., purchases, profile, feedback) Application Features: Get users with the highest scores Browse product catalogs offline Ingest telemetry data in remote locations for IoT
  26. 26. ©2015  Couchbase  Inc.   26   Couchbaseモバイルを利用したシステムアーキテクチャ   データセンタ   ロードバランサ   モバイルApp   Couchbase  Lite   Sync  Gateway   ブラウザApp   PouchDB   Couchbase  Serverクラスタ   Couchbase  Server  ノード   Couchbase  Server  ノード   ・・・   ・・・   Sync  Gateway  
  27. 27. ©2015  Couchbase  Inc.   27   まとめ  
  28. 28. ©2015  Couchbase  Inc.   28   データセンタ  1   Couchbase  Serverクラスタ   典型的なシステムアーキテクチャ、おさらい   データセンタ  2   サーバApp  クライアント   App   サーバApp   ・・・   ・・・   Couchbase  Server  ノード   サーバApp   Couchbase  SDK   DNS   ロードバランサ   サーバApp   既存DBMS   分析   プラットフォーム   Couchbase  Server   クラスタ   CDN   ロードバランサ   Couchbase  Server  ノード  
  29. 29. ©2015  Couchbase  Inc.   29   是非こんな要件に活用されたし   §  ビジネスの成長に合わせ無停止でのデータベース拡張、運用   §  既存システムの性能改善にHAキャッシュストレージとして導入   §  キャッシュエンジンとデータベースを一体化したストレージとして利用し システムの複雑性を軽減し、サーバ台数、運用コストを削減   §  最大の武器はサブミリ秒の低レイテンシ、秒間数十万〜数百万の高スルー プット、メタデータの格納に威力を発揮、コンテンツは外部ストレージへ   §  豊富なコネクタ(Kawa,  Hadoop,  Spark  …  etc)でバックエンドの分析基盤へ データ連携、分析結果を保存しオンラインで利用   §  複数データセンタ、リージョンでデータを同期し、DR対策、データロー カリティ向上   §  オフライン耐性を持つモバイルアプリケーションの開発  
  30. 30. ©2015  Couchbase  Inc.   30   Couchbaseを利用したシステム成功の秘訣   §  クラスタトポロジを理解するスマートなクライアントSDKライブラ リ   §  キーアクセス、View  (MapReduce)、N1QLの特性を理解した使い分 けが重要   §  柔軟なスキーマを活かすのはアクセスパターンを考慮した適切な データモデリング   §  データストレージ、N1QLクエリ実行、GSIインデックス管理など、 異なるワークロードを個別にスケールできる   §  運用開始時点のクラスタサイジング、継続的なモニタリングと拡 張がシステム運用成功の鍵  
  31. 31. ©2015  Couchbase  Inc.   31   お知らせ  
  32. 32. ©2015  Couchbase  Inc.   32   公式トレーニング  
  33. 33. ©2015  Couchbase  Inc.   33   JCBUG:  コミュニティに参加しよう!  
  34. 34. ©2015  Couchbase  Inc.   34   ドキュメント翻訳も一緒にやりましょう!!  
  35. 35. ©2015  Couchbase  Inc.   35   Thank  you.     couchbasejp@couchbase.com  

×