SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
分散 KVS の概要と okuyama の紹介

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

       株式会社リンク
       ディベロッパーサポート
       文屋 宏
自己紹介

 ○氏名
  文屋 宏(ぶんや ひろし)

 ○所属
  株式会社リンク ディベロッパーサポート

 ○業務
  プロジェクトマネージャっぽいこと

 ○興味あること
  分散データベース,クラウドコンピューティング,ウェブ系の技術

 ○活動
  日本 Red5 ユーザー会メンバー
会社紹介(at+link とは)


 株式会社リンクは
 at+link の営業窓口     ディベロッパーサポート
                   ・開発者のためのサービス開発
                   ・開発者の悩み相談
講演内容


       ・自己紹介&会社紹介
       ・NoSQL について
       ・KVS について
       ・memcached のデモ
       ・様々な KVS
       ・okuyama について
分散処理 の必要性

     サービスが成長してきたとき、どうする?

  スケールアップ              スケールアウト


                 or



・ハードウェア的な限界がある        ・ハードウェア的な限界がない
・ネットワーク集中             ・ネットワーク分散
・コストパフォーマンスが悪い        ・コストパフォーマンスが高い
・障害に弱い                ・障害に強い(高可用性)


 Web サーバだけでなく、DB サーバも分散させたい!
データベースソフトウェアの分類

    RDBMS              NoSQL

   ・Oracle         ・カラム指向型
   ・MySQL          ・ドキュメント指向型
   ・PostgreSQL     ・キー・バリュー型
    etc.            etc.




   一貫性重視           パフォーマンス重視
   スケールアップ         スケールアウト
                 KVS は NoSQL の一種
                 NoSQL = Not Only SQL

 RDBMS と NoSQL は互いに補完し合う存在
 どちらが優れている、ということはない
どんなシステムでも、何かを
犠牲にしなきゃいけない・・・
CAP 定理による NoSQL の分類
                    Availability
                    可用性        A
         CA                                               AP
     リレーショナル型
                                             キー・バリュー型               カラム指向
       RDBMS
                                             Dynamo                Cassandra
       Aster Data
                                             Voldermote
       Creenplum
                                             Tokyo Cabinet
                                                                 ドキュメント指向
                                             KAI
    カラム指向               2つを選択                                       SimpleDB
                                                                    CouchDB
     Vertica
                                                                    Riack


                                                         Partition Tolerance
    C
Consistency
                                                   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 実践入門
Key-Value Store

       Key-Value Store とは
       ・[Key, Value] のセットでデータ保存
       ・Key を指定して Value を取得
       ・処理を簡単にしてパフォーマンス向上


       用途
       ・キャッシュ
       ・パフォーマンス重視のデータベース
       ・分散ファイルストレージ
       ・解析用のログ保存
KVS のデモ



   キャッシュの代表 memcached
   をさわってみよう



      デモをご覧ください
memcached だけだと・・・


   キャッシュサーバはすごく大事
   でも・・・

     ○あくまでもキャッシュに特化
      ⇒永続型 KVS も必要

     ○分散多重保存できない
      ⇒分散型 KVS が必要
KVS には得意・不得意が

     分散多重保存が得意

     Flare, kumofs


     データ永続化が得意

     Tokyo Tyrant, Flare, kumofs


     データの一貫性を保つのが得意

     memcached, Tokyo Tyrant

    「何でも得意」な KVS は無い!
分散アルゴリズム

    データをどのサーバに保存するか

  ハッシュ法(Mod 法)

  MD5などでキーからハッシュ値を計算
  →得られたハッシュ値をサーバー台数で割った余り

           サーバ追加時にデータ移動が大量発生


    コンシステントハッシュ法
コンシステントハッシング
                                             ここのデータだけ移動
 ノード増減によるデータ移動を最小限にできる!
                                              サーバ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 値をハッシュ関数に通す
          ・それぞれ、リング上の該当位置に配置
          ・時計回りで最初に遭遇するノードが担当
国産 KVS

  国内だけでも、こんなにたくさんの開発者が

      ○Tokyo Tyrant   平林幹雄 氏(当時 mixi)

      ○kumofs         古橋貞之 氏(筑波大)

      ○Flare          藤本真樹 氏(GREE)
分散型
      ○ROMA           西澤無我 氏(楽天)

      ○okuyama        岩瀬高博 氏(神戸デジタル・ラボ)

               素晴らしい!!
国産 KVS


      ○Tokyo Tyrant   平林幹雄 氏(当時 mixi)

      ○kumofs         古橋貞之 氏(筑波大)

      ○Flare          藤本真樹 氏(GREE)
分散型
      ○ROMA           西澤無我 氏(楽天)

      ○okuyama        岩瀬高博 氏(神戸デジタル・ラボ)
       at+link でサービス化!
分散型 KVS 「okuyama」
okuyama の特徴


       分散多重保存できるか
      ⇒ 得意!!

       データを永続化できるか
      ⇒ 4段階レベルを選択可能!!

       データの一貫性を保てるか
      ⇒ 3段階レベルを選択可能!!
okuyama って、CAP 定理だとどこ?
                    Availability
                    可用性        A
         CA                                               AP
     リレーショナル型                                 キー・バリュー型          カラム指向
       RDBMS
                                               Dynamo           Cassandra
       Aster Data
                                               Voldermote
       Creenplum
                                               Tokyo Cabinet   ドキュメント指向
                                               KAI
    カラム指向               2つを選択                  okuyama
                                                                SimpleDB
                                                                CouchDB
     Vertica                                                    Riack


                                                         Partition Tolerance
    C
Consistency
                                                   P     分割耐性

一貫性         カラム指向
                              CP         キー・バリュー型
                          ドキュメント指向
           BigTable                      Scalaris
                            MongoDB
           Hypertable                    BerkeleyDB
                            Terrastore
           HBase                         MemcacheDB
                                         Redis
okuyama って、 CAP 定理だとどこ?
                    Availability
                    可用性        A
         CA                                               AP
     リレーショナル型                                 キー・バリュー型          カラム指向
       RDBMS
                                               Dynamo           Cassandra
       Aster Data
                                               Voldermote
       Creenplum
                                               Tokyo Cabinet   ドキュメント指向
                                               KAI
    カラム指向               2つを選択                  okuyama
                                                                SimpleDB
                                                                CouchDB
     Vertica                                                    Riack
                    一貫性レベルの
                    選択で補強!!
                                                         Partition Tolerance
    C
Consistency
                                                   P     分割耐性

一貫性         カラム指向
                              CP         キー・バリュー型
                          ドキュメント指向                             okuyama では
           BigTable                      Scalaris              一貫性のレベルを
                            MongoDB
           Hypertable                    BerkeleyDB            3段階選択可能!
                            Terrastore
           HBase                         MemcacheDB
                                         Redis
okuyama の構成イメージ

                                  Data Node   Data Node   Data Node




                    Master Node   Data Node   Data Node   Data Node
Client


           Client
                    Master Node   Data Node   Data Node   Data Node



  Client
                                  Data Node   Data Node   Data Node




         Client → Master Node → Data Node(×3)
               (以降 okuyama 関連資料
                神戸デジタル・ラボ 岩瀬高博 氏 提供)
okuyama クライアント



                         Client


 okuyamaへの問い合わせを実現                  Client

 専用クライアントはJavaと、PHPを実装
                           Client
okuyama マスターノード


・クライアントからのI/F ・データノード管理

・サポートプロトコル        >データ入出力
>オリジナル             サポート分散アルゴリズム
                                       Master Node
>Memcached         1. Mod
 ・set ・get ・add
                   2. ConsistentHash
 ・delete                               Master Node
                  >生存監視
 ・gets ・cas
                   起動時のデータリカバリ
>HTTP
                  ・制限台数なしに冗長化可能
 ・GET
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
データ保存方式の選択

1.全てのデータをメモリに保存
 >非永続型 (key=メモリ、value=メモリ)

2.データ操作履歴のみファイルに保存
 >永続型(key=メモリ、value=メモリ)+操作記録ファイル

3.データ本体をファイルに保存
 >永続型(key=メモリ、value=ファイル)+操作記録ファイル

4.全てをファイルに保存
 >永続型(key=ファイル、value=ファイル)+操作記録ファイル
データの一貫性について


  複数のノードに同一の値を保持していると、
  データに異なる時間が発生する


  データ保存       保存         保存        未保存
             DataNode   DataNode   DataNode




     データ取得   != データ取得
データ一貫性レベルの選択


 1.弱一貫性
  >全てのデータノードにランダムにアクセス

 2.中一貫性
  >常に最後に保存したデータノードからアクセス

 3.強一貫性
  >データノードの値を検証
okuyama に単一障害点は無い!

 データノード障害発生
                               もう一つのノードから取得

                 データ保持
                 ノード割り出し        Data Ndoe   DataNode




                  MasterNode    Data Node   DataNode
         データ取得
Client


                  MasterNode    Data Node   DataNode




                                Data Node   DataNode
okuyama に単一障害点は無い!

 マスターノード障害発生

                  障害発生!!        Data Ndoe   DataNode



          データ取得
                   MasterNode   Data Node   DataNode
 Client



                   MasterNode   Data Node   DataNode




   別のマスターノードに                   Data Node   DataNode


   再接続して処理続行
詳しくは、岩瀬氏の資料をご覧ください

○Think IT 連載記事
 http://thinkit.co.jp/story/2011/02/03/1990

○講演資料
 http://www.slideshare.net/okuyamaoo/20110517-okuyama-8035077
まとめ


      ・拡張性、可用性の面から KVS(NoSQL)

      ・KVS(NoSQL) も色々

      ・得意・不得意がある

      ・用途によって使い分けよう

      ・国内にも素晴らしい技術者がいっぱい

      ・okuyama オススメ
ご清聴ありがとうございました




では、KVS サービス化の話へ

Mais conteúdo relacionado

Último

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 

Último (7)

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

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

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