分散 KVS の概要と okuyama の紹介       スクエア free セミナー 第9回       株式会社リンク       ディベロッパーサポート       文屋 宏
自己紹介 ○氏名  文屋 宏(ぶんや ひろし) ○所属  株式会社リンク ディベロッパーサポート ○業務  プロジェクトマネージャっぽいこと ○興味あること  分散データベース,クラウドコンピューティング,ウェブ系の技術 ○活動  日本 Red...
会社紹介(at+link とは) 株式会社リンクは at+link の営業窓口     ディベロッパーサポート                   ・開発者のためのサービス開発                   ・開発者の悩み相談
講演内容       ・自己紹介&会社紹介       ・NoSQL について       ・KVS について       ・memcached のデモ       ・様々な KVS       ・okuyama について
分散処理 の必要性     サービスが成長してきたとき、どうする?  スケールアップ              スケールアウト                 or・ハードウェア的な限界がある        ・ハードウェア的な限界がない・ネット...
データベースソフトウェアの分類    RDBMS              NoSQL   ・Oracle         ・カラム指向型   ・MySQL          ・ドキュメント指向型   ・PostgreSQL     ・キー・バ...
どんなシステムでも、何かを犠牲にしなきゃいけない・・・
CAP 定理による NoSQL の分類                    Availability                    可用性        A         CA                            ...
Key-Value Store       Key-Value Store とは       ・[Key, Value] のセットでデータ保存       ・Key を指定して Value を取得       ・処理を簡単にしてパフォーマンス向...
KVS のデモ   キャッシュの代表 memcached   をさわってみよう      デモをご覧ください
memcached だけだと・・・   キャッシュサーバはすごく大事   でも・・・     ○あくまでもキャッシュに特化      ⇒永続型 KVS も必要     ○分散多重保存できない      ⇒分散型 KVS が必要
KVS には得意・不得意が     分散多重保存が得意     Flare, kumofs     データ永続化が得意     Tokyo Tyrant, Flare, kumofs     データの一貫性を保つのが得意     memcach...
分散アルゴリズム    データをどのサーバに保存するか  ハッシュ法(Mod 法)  MD5などでキーからハッシュ値を計算  →得られたハッシュ値をサーバー台数で割った余り           サーバ追加時にデータ移動が大量発生    コンシス...
コンシステントハッシング                                             ここのデータだけ移動 ノード増減によるデータ移動を最小限にできる!                                ...
国産 KVS  国内だけでも、こんなにたくさんの開発者が      ○Tokyo Tyrant   平林幹雄 氏(当時 mixi)      ○kumofs         古橋貞之 氏(筑波大)      ○Flare          藤本...
国産 KVS      ○Tokyo Tyrant   平林幹雄 氏(当時 mixi)      ○kumofs         古橋貞之 氏(筑波大)      ○Flare          藤本真樹 氏(GREE)分散型      ○RO...
分散型 KVS 「okuyama」
okuyama の特徴       分散多重保存できるか      ⇒ 得意!!       データを永続化できるか      ⇒ 4段階レベルを選択可能!!       データの一貫性を保てるか      ⇒ 3段階レベルを選択可能!!
okuyama って、CAP 定理だとどこ?                    Availability                    可用性        A         CA                         ...
okuyama って、 CAP 定理だとどこ?                    Availability                    可用性        A         CA                        ...
okuyama の構成イメージ                                  Data Node   Data Node   Data Node                    Master Node   Data N...
okuyama クライアント                         Client okuyamaへの問い合わせを実現                  Client 専用クライアントはJavaと、PHPを実装             ...
okuyama マスターノード・クライアントからのI/F ・データノード管理・サポートプロトコル        >データ入出力>オリジナル             サポート分散アルゴリズム                            ...
okuyama データノード                  Data Node   Data Node   Data Node ・データの保存を実現 ・データ保存方式を選択可能    Data Node   Data Node   Data...
データ保存方式の選択1.全てのデータをメモリに保存 >非永続型 (key=メモリ、value=メモリ)2.データ操作履歴のみファイルに保存 >永続型(key=メモリ、value=メモリ)+操作記録ファイル3.データ本体をファイルに保存 >永続型...
データの一貫性について  複数のノードに同一の値を保持していると、  データに異なる時間が発生する  データ保存       保存         保存        未保存             DataNode   DataNode   ...
データ一貫性レベルの選択 1.弱一貫性  >全てのデータノードにランダムにアクセス 2.中一貫性  >常に最後に保存したデータノードからアクセス 3.強一貫性  >データノードの値を検証
okuyama に単一障害点は無い! データノード障害発生                               もう一つのノードから取得                 データ保持                 ノード割り出し    ...
okuyama に単一障害点は無い! マスターノード障害発生                  障害発生!!        Data Ndoe   DataNode          データ取得                   Master...
詳しくは、岩瀬氏の資料をご覧ください○Think IT 連載記事 http://thinkit.co.jp/story/2011/02/03/1990○講演資料 http://www.slideshare.net/okuyamaoo/20110...
まとめ      ・拡張性、可用性の面から KVS(NoSQL)      ・KVS(NoSQL) も色々      ・得意・不得意がある      ・用途によって使い分けよう      ・国内にも素晴らしい技術者がいっぱい      ・oku...
ご清聴ありがとうございましたでは、KVS サービス化の話へ
Upcoming SlideShare
Loading in …5
×

スクエア free セミナー 第9回

1,584 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,584
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

スクエア free セミナー 第9回

  1. 1. 分散 KVS の概要と okuyama の紹介 スクエア free セミナー 第9回 株式会社リンク ディベロッパーサポート 文屋 宏
  2. 2. 自己紹介 ○氏名 文屋 宏(ぶんや ひろし) ○所属 株式会社リンク ディベロッパーサポート ○業務 プロジェクトマネージャっぽいこと ○興味あること 分散データベース,クラウドコンピューティング,ウェブ系の技術 ○活動 日本 Red5 ユーザー会メンバー
  3. 3. 会社紹介(at+link とは) 株式会社リンクは at+link の営業窓口 ディベロッパーサポート ・開発者のためのサービス開発 ・開発者の悩み相談
  4. 4. 講演内容 ・自己紹介&会社紹介 ・NoSQL について ・KVS について ・memcached のデモ ・様々な KVS ・okuyama について
  5. 5. 分散処理 の必要性 サービスが成長してきたとき、どうする? スケールアップ スケールアウト or・ハードウェア的な限界がある ・ハードウェア的な限界がない・ネットワーク集中 ・ネットワーク分散・コストパフォーマンスが悪い ・コストパフォーマンスが高い・障害に弱い ・障害に強い(高可用性) Web サーバだけでなく、DB サーバも分散させたい!
  6. 6. データベースソフトウェアの分類 RDBMS NoSQL ・Oracle ・カラム指向型 ・MySQL ・ドキュメント指向型 ・PostgreSQL ・キー・バリュー型 etc. etc. 一貫性重視 パフォーマンス重視 スケールアップ スケールアウト KVS は NoSQL の一種 NoSQL = Not Only SQL RDBMS と NoSQL は互いに補完し合う存在 どちらが優れている、ということはない
  7. 7. どんなシステムでも、何かを犠牲にしなきゃいけない・・・
  8. 8. CAP 定理による NoSQL の分類 Availability 可用性 A CA AP リレーショナル型 キー・バリュー型 カラム指向 RDBMS Dynamo Cassandra Aster Data Voldermote Creenplum Tokyo Cabinet ドキュメント指向 KAI カラム指向 2つを選択 SimpleDB CouchDB Vertica Riack Partition Tolerance CConsistency P 分割耐性一貫性 カラム指向 CP キー・バリュー型 [参考] ・Visual Guide to NoSQL Systems ドキュメント指向 http://blog.nahurst.com/visual-guide-to-nosql-systems BigTable Scalaris ・NoSQL登場の背景、CAP定理、データモデルの分類 MongoDB Hypertable BerkeleyDB http://www.publickey1.jp/blog/10/nosqlcap.html Terrastore HBase MemcacheDB ・WEB+DB PRESS Vol.58 Redis Cassandra 実践入門
  9. 9. Key-Value Store Key-Value Store とは ・[Key, Value] のセットでデータ保存 ・Key を指定して Value を取得 ・処理を簡単にしてパフォーマンス向上 用途 ・キャッシュ ・パフォーマンス重視のデータベース ・分散ファイルストレージ ・解析用のログ保存
  10. 10. KVS のデモ キャッシュの代表 memcached をさわってみよう デモをご覧ください
  11. 11. memcached だけだと・・・ キャッシュサーバはすごく大事 でも・・・ ○あくまでもキャッシュに特化 ⇒永続型 KVS も必要 ○分散多重保存できない ⇒分散型 KVS が必要
  12. 12. KVS には得意・不得意が 分散多重保存が得意 Flare, kumofs データ永続化が得意 Tokyo Tyrant, Flare, kumofs データの一貫性を保つのが得意 memcached, Tokyo Tyrant 「何でも得意」な KVS は無い!
  13. 13. 分散アルゴリズム データをどのサーバに保存するか ハッシュ法(Mod 法) MD5などでキーからハッシュ値を計算 →得られたハッシュ値をサーバー台数で割った余り サーバ追加時にデータ移動が大量発生 コンシステントハッシュ法
  14. 14. コンシステントハッシング ここのデータだけ移動 ノード増減によるデータ移動を最小限にできる! サーバE サーバB の担当 A A サーバA の担当 サーバA 160 0 1 160 0 1 の担当 2 -1 2 の担当 2 -1 2 E ノード追加 サーバB の担当 D D B BサーバD サーバDの担当 サーバC の担当 サーバC C の担当 C の担当 ・ノードやキーを仮想リング上に配置 ・ノードの IP や、Key 値をハッシュ関数に通す ・それぞれ、リング上の該当位置に配置 ・時計回りで最初に遭遇するノードが担当
  15. 15. 国産 KVS 国内だけでも、こんなにたくさんの開発者が ○Tokyo Tyrant 平林幹雄 氏(当時 mixi) ○kumofs 古橋貞之 氏(筑波大) ○Flare 藤本真樹 氏(GREE)分散型 ○ROMA 西澤無我 氏(楽天) ○okuyama 岩瀬高博 氏(神戸デジタル・ラボ) 素晴らしい!!
  16. 16. 国産 KVS ○Tokyo Tyrant 平林幹雄 氏(当時 mixi) ○kumofs 古橋貞之 氏(筑波大) ○Flare 藤本真樹 氏(GREE)分散型 ○ROMA 西澤無我 氏(楽天) ○okuyama 岩瀬高博 氏(神戸デジタル・ラボ) at+link でサービス化!
  17. 17. 分散型 KVS 「okuyama」
  18. 18. okuyama の特徴 分散多重保存できるか ⇒ 得意!! データを永続化できるか ⇒ 4段階レベルを選択可能!! データの一貫性を保てるか ⇒ 3段階レベルを選択可能!!
  19. 19. okuyama って、CAP 定理だとどこ? Availability 可用性 A CA AP リレーショナル型 キー・バリュー型 カラム指向 RDBMS Dynamo Cassandra Aster Data Voldermote Creenplum Tokyo Cabinet ドキュメント指向 KAI カラム指向 2つを選択 okuyama SimpleDB CouchDB Vertica Riack Partition Tolerance CConsistency P 分割耐性一貫性 カラム指向 CP キー・バリュー型 ドキュメント指向 BigTable Scalaris MongoDB Hypertable BerkeleyDB Terrastore HBase MemcacheDB Redis
  20. 20. okuyama って、 CAP 定理だとどこ? Availability 可用性 A CA AP リレーショナル型 キー・バリュー型 カラム指向 RDBMS Dynamo Cassandra Aster Data Voldermote Creenplum Tokyo Cabinet ドキュメント指向 KAI カラム指向 2つを選択 okuyama SimpleDB CouchDB Vertica Riack 一貫性レベルの 選択で補強!! Partition Tolerance CConsistency P 分割耐性一貫性 カラム指向 CP キー・バリュー型 ドキュメント指向 okuyama では BigTable Scalaris 一貫性のレベルを MongoDB Hypertable BerkeleyDB 3段階選択可能! Terrastore HBase MemcacheDB Redis
  21. 21. okuyama の構成イメージ Data Node Data Node Data Node Master Node Data Node Data Node Data NodeClient Client Master Node Data Node Data Node Data Node Client Data Node Data Node Data Node Client → Master Node → Data Node(×3) (以降 okuyama 関連資料 神戸デジタル・ラボ 岩瀬高博 氏 提供)
  22. 22. okuyama クライアント Client okuyamaへの問い合わせを実現 Client 専用クライアントはJavaと、PHPを実装 Client
  23. 23. okuyama マスターノード・クライアントからのI/F ・データノード管理・サポートプロトコル >データ入出力>オリジナル サポート分散アルゴリズム Master Node>Memcached 1. Mod ・set ・get ・add 2. ConsistentHash ・delete Master Node >生存監視 ・gets ・cas 起動時のデータリカバリ>HTTP ・制限台数なしに冗長化可能 ・GET
  24. 24. okuyama データノード Data Node Data Node Data Node ・データの保存を実現 ・データ保存方式を選択可能 Data Node Data Node Data Node ・最大3ノードにデータを保存 ・アクセスバランシング Data Node Data Node Data Node ・連鎖的ダウンの予防 Data Node Data Node Data Node
  25. 25. データ保存方式の選択1.全てのデータをメモリに保存 >非永続型 (key=メモリ、value=メモリ)2.データ操作履歴のみファイルに保存 >永続型(key=メモリ、value=メモリ)+操作記録ファイル3.データ本体をファイルに保存 >永続型(key=メモリ、value=ファイル)+操作記録ファイル4.全てをファイルに保存 >永続型(key=ファイル、value=ファイル)+操作記録ファイル
  26. 26. データの一貫性について 複数のノードに同一の値を保持していると、 データに異なる時間が発生する データ保存 保存 保存 未保存 DataNode DataNode DataNode データ取得 != データ取得
  27. 27. データ一貫性レベルの選択 1.弱一貫性 >全てのデータノードにランダムにアクセス 2.中一貫性 >常に最後に保存したデータノードからアクセス 3.強一貫性 >データノードの値を検証
  28. 28. okuyama に単一障害点は無い! データノード障害発生 もう一つのノードから取得 データ保持 ノード割り出し Data Ndoe DataNode MasterNode Data Node DataNode データ取得Client MasterNode Data Node DataNode Data Node DataNode
  29. 29. okuyama に単一障害点は無い! マスターノード障害発生 障害発生!! Data Ndoe DataNode データ取得 MasterNode Data Node DataNode Client MasterNode Data Node DataNode 別のマスターノードに Data Node DataNode 再接続して処理続行
  30. 30. 詳しくは、岩瀬氏の資料をご覧ください○Think IT 連載記事 http://thinkit.co.jp/story/2011/02/03/1990○講演資料 http://www.slideshare.net/okuyamaoo/20110517-okuyama-8035077
  31. 31. まとめ ・拡張性、可用性の面から KVS(NoSQL) ・KVS(NoSQL) も色々 ・得意・不得意がある ・用途によって使い分けよう ・国内にも素晴らしい技術者がいっぱい ・okuyama オススメ
  32. 32. ご清聴ありがとうございましたでは、KVS サービス化の話へ

×