SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
NoSQLとビッグデータ入門編
     Update版
     at 沖縄Web+DB勉強会
     2012/09/27 @k_nishijima / 西島 幸一郎



12年9月27日木曜日
自己紹介
    西島 幸一郎 / にしじま こういちろう
    twitter : @k_nishijima

    JAWS−UG沖縄の副代表、
    やらせて頂いてます。

    ※11月17日土曜日に
    JAWS-UG沖縄勉強会を開きますのでお楽しみに!
    (今回はいろいろハンズオンをやる予定です!)

                                2

12年9月27日木曜日
よく耳にするNoSQLって何?
    諸説ありますが、現状のコンセンサスは
    「Not only SQL」 = 「SQLだけじゃない!」
    の略であるということで意見が一致。


    ※この辺の紆余曲折は
    http://www.publickey1.jp/blog/09/nosqlnot_only_sql.html
    が詳しいです。



                                                              3

12年9月27日木曜日
実装は多数あります
    以下、本資料では @yutuki_r さんが第10回Cassandra勉強
    会にて発表したスライドから図をパクr^h^h^h流用させ
    てもらっています。かなりいい資料なので一読をおすす
    めします!




    http://www.slideshare.net/yutuki/cassandrah-baseno-sql

                                                             4

12年9月27日木曜日
実装は多数あります
    実装にキーとそれに紐づく値を格納する方式を取るもの
    が多いため、そのようなNoSQL実装のことをKVS(キー
    バリューストア)などとも言います。




                                   5

12年9月27日木曜日
『SQLチョーベンリなのに
              使わない意味が
              全然わかんない』

    はい、アナタは大変正しいです。
    RelationalDataBaseとSQLがカバーできる問題領域は
    大変広く、ほとんどの場合は事足ります。
                                         6

12年9月27日木曜日
NoSQLの存在意義
    では、RDBがカバーできない問題領域とはなにか?
    例えば

     • データを正規化せずとも柔軟なスキーマで保存するこ
        と(JSONや連想配列まるごと保存)

     • とてつもなく大量/高速の書き込み/読み込みへの対応
     • 大規模なデータセンター分割への対応
    など、ちょっと違った視点からデータベースを見てみる
    と、なるほど苦手な問題領域もあったりします。
                                   7

12年9月27日木曜日
ACID特性とBASE特性
    RDBが提供するACID特性
    •   A:Atomic(原子性)

    •   C:Consistency(一貫性)

    •   I:Isolation(独立性)

    •   D:Durability(永続性)


    NoSQLなどの分散システムが提供するBASE特性
    •   BA:Basically Available(可用性が基本)

    •   S:Soft-state(厳密でない状態遷移)

    •   E:Eventual Consistency(結果として整合性がとれる)

                                               8

12年9月27日木曜日
ACID特性とBASE特性
    RDBが提供するACID特性
    •   A:Atomic(原子性)

    •          そのトランザクション、
        C:Consistency(一貫性)

    •   I:Isolation(独立性)

    •               只今承りました!
        D:Durability(永続性)


    NoSQLなどの分散システムが提供するBASE特性
    •            今書き込んだデータ、
        BA:Basically Available(可用性が基本)

    •   S:Soft-state(厳密でない状態遷移)

    •   そのうちちゃんと読み出せるよ!
        E:Eventual Consistency(結果として整合性がとれる)

                                               9

12年9月27日木曜日
ブリュワーのCAP定理
    どんなシステムデザインにも言えることですが、
    全ては「何を捨てて、何を取るか」の問題。




                             10

12年9月27日木曜日
ブリュワーのCAP定理
    Consistency = 一貫性
    Availability = 可用性
    Partition-tolerance = ネットワーク分断耐性




                                       11

12年9月27日木曜日
ブリュワーのCAP定理
    Consistency = 一貫性
    どのような状況でも、例えばサーバが1000台あって
    も、あるデータに付いて問い合わせたら、
    必ず一貫性のあるデータが返ってくること。




                                12

12年9月27日木曜日
ブリュワーのCAP定理
    Availability = 可用性
    バルスに耐えるtwitterの様に、一時的に死ぬほど
    リクエストがかかっても停止せず常に利用できること。
    (2万write/sec以上に耐えられるか?)




                                 13

12年9月27日木曜日
ブリュワーのCAP定理
    Partition-tolerance = ネットワーク分断耐性
    よく「分散できること」と思っている人がいますがこれ
    は誤り。ネットワークに障害が起こっても、出来る範囲
    で正しく応答しようとする能力、の事です。




                                       14

12年9月27日木曜日
RDBはACID特性を満たす
    トランザクションを提供する
    故に高い一貫性を持ちますが、一般にネットワーク分断
    耐性は低い = CA型。
    (勿論、お金をたっぷりかければ可能です)




                                15

12年9月27日木曜日
じゃあ、どっち取る?
    それによって、各プロダクトの特色が出てきます。

    • Google BigTable
    • Amazon DynamoDB
    • Apache Cassandra
    • Apache HBase
    MongoDBは?
    まじめに使ったこと無いっす。。。
    &一応BigDataがテーマなので。。。




                              16

12年9月27日木曜日
Google BigTable
    Webのクロールとインデックシング(ページランク作成
    のMapReduceなど)に利用されてい[る|た]。

    (未公開ゆえ2006年公開の論文などから推測ですが)


    今ではGoogleAppEngineから利用可能。



    GAEから利用できるBigTableは、一貫性を担保する範囲
    を「限定的」とし、高い可用性と分断耐性を持つAP型
                                     17

12年9月27日木曜日
Amazon DynamoDB
    自社のコマースサイト向けに作られたと言われている実装
    で、2007年に論文が公開。
    そのノウハウをつぎ込み、2012年1月にAmazon
    DynamoDBとしてサービス提供開始。


    一貫性を利用するユーザが選択可能(強一貫性も指定で
    きるが料金が2倍!)とし、高い可用性とネットワーク分
    断耐性を保つAP型
                                 18

12年9月27日木曜日
Amazon DynamoDB
    秒間あたりの読み込み/書き込みのスループットを
    指定するだけで、あとは勝手にスケールしていく!
       •容量無制限
       •サービスなのでメンテ不要
       •アトミックカウンタもサポート(コスト2倍/速度低下を許容すれば)
       •しかもEMR経由で外部テーブルとしてマウントできる
    というわけで一般に利用できる範囲では
    現代最強のNoSQLサービス!?


                                           19

12年9月27日木曜日
Apache
    元々Facebookのメッセージボックス検索のために開発さ
    れたものを、2008年にオープンソース化。
    マスタノードが必要なく、例えネットワークが分断されて
    も動作し続け読み書きが可能
    (勿論場合によっては読み込み不可の場合もある)。

    合言葉は「eventually consistency」=結果整合性!
    一貫性を利用するユーザが選択可能とし、高い可用性と
    ネットワーク分断耐性を保つAP型
                                          20

12年9月27日木曜日
Apache
    GoogleのBigTableをモデルに実装された
    列指向分散データベース。
    現在はHadoopプロジェクトの一部だが、色々あるらしい。。。



    最近(6月から)Amazon EMRがサポートしだしました。


    高い一貫性とネットワーク分断耐性を持つが、SPoFが存
    在するため可用性には劣るCP型

                                      21

12年9月27日木曜日
そして世の中はさらに進む
    Spanner: Google's Globally-Distributed Database
    http://research.google.com/archive/spanner.html

    2012年6月に突如資料が出現し、世の分散システム研究者
    をあっと驚かせた           のデータベース。
    日本語では@ kazunori_279さんのブログが詳しいです。
    最新の論文↑が今月16日に公開されました。



                                                      22

12年9月27日木曜日
Spanner: Google's Globally-
    Distributed Database
    「世界中に分散する全サーバに、GPSと原子時計を使っ
    て正確なタイムスタンプを供給し、惑星規模で整合性の
    取れる分散データベース作ったよ」


    ⇛ 分散システムは正確な時間が取れないよねっていう
    前提を完全にちゃぶ台返しする斜め上な発想!
    (それだけじゃないけど:詳細は論文を熟読のこと)


                                  23

12年9月27日木曜日
最近のトレンドは
    Consistency = 一貫性をどう扱うか、にフォーカスが
    当たってるような気がしますね。
    他にも

    •   どうやってデータを分散させるの?

        = Consistent Hashingとか
    •   そもそもキーとバリューでどうやってデータ取り出すの?

        = じゃあsecondery index使おうか、とか
    •   データモデリングはどうするの?
    などなど、話のネタは付きませんが以下次号。。。

                                      24

12年9月27日木曜日
まとめ
    アマゾンのクラウド(AWS)に移行したいよとか、
    (当方 solutionProviderOnTheBeach.com です)

    BigDataに興味のある人、MapReduceってなに?とか、
    Amazon Elastic MapReduce(EMR)でハマってるよ!など
    ありましたら @k_nishijima までコンタクトください。



                    ありがとうございました。

                                              25

12年9月27日木曜日

Contenu connexe

En vedette

Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnhaketa
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentYohei Yamamoto
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRecruit Technologies
 
AWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorksAWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorksAmazon Web Services Japan
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)hamaken
 
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems ManagerAWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems ManagerAmazon Web Services Japan
 
スケーラビリティと耐障害性を両立するWeb アプリケーション
スケーラビリティと耐障害性を両立するWeb アプリケーションスケーラビリティと耐障害性を両立するWeb アプリケーション
スケーラビリティと耐障害性を両立するWeb アプリケーションMasayoshi Hagiwara
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlYutuki r
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAmazon Web Services Japan
 
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster RecoveryAWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster RecoveryAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAmazon Web Services Japan
 

En vedette (14)

Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually Consistent
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
AWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorksAWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorks
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems ManagerAWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
 
スケーラビリティと耐障害性を両立するWeb アプリケーション
スケーラビリティと耐障害性を両立するWeb アプリケーションスケーラビリティと耐障害性を両立するWeb アプリケーション
スケーラビリティと耐障害性を両立するWeb アプリケーション
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWS
 
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster RecoveryAWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 

Similaire à NoSQLとビックデータ入門編Update版

社会ネットワーク分析第7回
社会ネットワーク分析第7回社会ネットワーク分析第7回
社会ネットワーク分析第7回Satoru Mikami
 
NoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableNoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableTakekazu Omi
 
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版Akira Shimosako
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用Amazon Web Services Japan
 
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例Akihiro Kuwano
 
SAP HANA One on AWS
SAP HANA One on AWSSAP HANA One on AWS
SAP HANA One on AWSsatoshi
 
Seminar report (Building a Linux server and AWS SDK for Ruby)
Seminar report (Building a Linux server and AWS SDK for Ruby)Seminar report (Building a Linux server and AWS SDK for Ruby)
Seminar report (Building a Linux server and AWS SDK for Ruby)Tamotsu Furuya
 
Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発kishimotosc
 
セプテーニさんでのセミナー
セプテーニさんでのセミナーセプテーニさんでのセミナー
セプテーニさんでのセミナーTokusei Noborio
 
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPSDB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPSAkira Shimosako
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~kishimotosc
 
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版Akira Shimosako
 
Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Satoru Ishikawa
 
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみようJunko Nukaga
 
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスMasayuki Ozawa
 
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編Amazon Web Services Japan
 

Similaire à NoSQLとビックデータ入門編Update版 (20)

社会ネットワーク分析第7回
社会ネットワーク分析第7回社会ネットワーク分析第7回
社会ネットワーク分析第7回
 
About NoSQL
About NoSQLAbout NoSQL
About NoSQL
 
NoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableNoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure Table
 
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用
 
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
 
SAP HANA One on AWS
SAP HANA One on AWSSAP HANA One on AWS
SAP HANA One on AWS
 
Seminar report (Building a Linux server and AWS SDK for Ruby)
Seminar report (Building a Linux server and AWS SDK for Ruby)Seminar report (Building a Linux server and AWS SDK for Ruby)
Seminar report (Building a Linux server and AWS SDK for Ruby)
 
Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発
 
AWSのNoSQL入門
AWSのNoSQL入門AWSのNoSQL入門
AWSのNoSQL入門
 
セプテーニさんでのセミナー
セプテーニさんでのセミナーセプテーニさんでのセミナー
セプテーニさんでのセミナー
 
DB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPSDB2をAWS上に構築する際のヒント&TIPS
DB2をAWS上に構築する際のヒント&TIPS
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
 
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
DB2をAWS上に構築する際のヒント&TIPS 2018年1月版
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!
 
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
 
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
 
Code Anything
Code AnythingCode Anything
Code Anything
 
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
 

NoSQLとビックデータ入門編Update版

  • 1. NoSQLとビッグデータ入門編 Update版 at 沖縄Web+DB勉強会 2012/09/27 @k_nishijima / 西島 幸一郎 12年9月27日木曜日
  • 2. 自己紹介 西島 幸一郎 / にしじま こういちろう twitter : @k_nishijima JAWS−UG沖縄の副代表、 やらせて頂いてます。 ※11月17日土曜日に JAWS-UG沖縄勉強会を開きますのでお楽しみに! (今回はいろいろハンズオンをやる予定です!) 2 12年9月27日木曜日
  • 3. よく耳にするNoSQLって何? 諸説ありますが、現状のコンセンサスは 「Not only SQL」 = 「SQLだけじゃない!」 の略であるということで意見が一致。 ※この辺の紆余曲折は http://www.publickey1.jp/blog/09/nosqlnot_only_sql.html が詳しいです。 3 12年9月27日木曜日
  • 4. 実装は多数あります 以下、本資料では @yutuki_r さんが第10回Cassandra勉強 会にて発表したスライドから図をパクr^h^h^h流用させ てもらっています。かなりいい資料なので一読をおすす めします! http://www.slideshare.net/yutuki/cassandrah-baseno-sql 4 12年9月27日木曜日
  • 5. 実装は多数あります 実装にキーとそれに紐づく値を格納する方式を取るもの が多いため、そのようなNoSQL実装のことをKVS(キー バリューストア)などとも言います。 5 12年9月27日木曜日
  • 6. 『SQLチョーベンリなのに 使わない意味が 全然わかんない』 はい、アナタは大変正しいです。 RelationalDataBaseとSQLがカバーできる問題領域は 大変広く、ほとんどの場合は事足ります。 6 12年9月27日木曜日
  • 7. NoSQLの存在意義 では、RDBがカバーできない問題領域とはなにか? 例えば • データを正規化せずとも柔軟なスキーマで保存するこ と(JSONや連想配列まるごと保存) • とてつもなく大量/高速の書き込み/読み込みへの対応 • 大規模なデータセンター分割への対応 など、ちょっと違った視点からデータベースを見てみる と、なるほど苦手な問題領域もあったりします。 7 12年9月27日木曜日
  • 8. ACID特性とBASE特性 RDBが提供するACID特性 • A:Atomic(原子性) • C:Consistency(一貫性) • I:Isolation(独立性) • D:Durability(永続性) NoSQLなどの分散システムが提供するBASE特性 • BA:Basically Available(可用性が基本) • S:Soft-state(厳密でない状態遷移) • E:Eventual Consistency(結果として整合性がとれる) 8 12年9月27日木曜日
  • 9. ACID特性とBASE特性 RDBが提供するACID特性 • A:Atomic(原子性) • そのトランザクション、 C:Consistency(一貫性) • I:Isolation(独立性) • 只今承りました! D:Durability(永続性) NoSQLなどの分散システムが提供するBASE特性 • 今書き込んだデータ、 BA:Basically Available(可用性が基本) • S:Soft-state(厳密でない状態遷移) • そのうちちゃんと読み出せるよ! E:Eventual Consistency(結果として整合性がとれる) 9 12年9月27日木曜日
  • 10. ブリュワーのCAP定理 どんなシステムデザインにも言えることですが、 全ては「何を捨てて、何を取るか」の問題。 10 12年9月27日木曜日
  • 11. ブリュワーのCAP定理 Consistency = 一貫性 Availability = 可用性 Partition-tolerance = ネットワーク分断耐性 11 12年9月27日木曜日
  • 12. ブリュワーのCAP定理 Consistency = 一貫性 どのような状況でも、例えばサーバが1000台あって も、あるデータに付いて問い合わせたら、 必ず一貫性のあるデータが返ってくること。 12 12年9月27日木曜日
  • 13. ブリュワーのCAP定理 Availability = 可用性 バルスに耐えるtwitterの様に、一時的に死ぬほど リクエストがかかっても停止せず常に利用できること。 (2万write/sec以上に耐えられるか?) 13 12年9月27日木曜日
  • 14. ブリュワーのCAP定理 Partition-tolerance = ネットワーク分断耐性 よく「分散できること」と思っている人がいますがこれ は誤り。ネットワークに障害が起こっても、出来る範囲 で正しく応答しようとする能力、の事です。 14 12年9月27日木曜日
  • 15. RDBはACID特性を満たす トランザクションを提供する 故に高い一貫性を持ちますが、一般にネットワーク分断 耐性は低い = CA型。 (勿論、お金をたっぷりかければ可能です) 15 12年9月27日木曜日
  • 16. じゃあ、どっち取る? それによって、各プロダクトの特色が出てきます。 • Google BigTable • Amazon DynamoDB • Apache Cassandra • Apache HBase MongoDBは? まじめに使ったこと無いっす。。。 &一応BigDataがテーマなので。。。 16 12年9月27日木曜日
  • 17. Google BigTable Webのクロールとインデックシング(ページランク作成 のMapReduceなど)に利用されてい[る|た]。 (未公開ゆえ2006年公開の論文などから推測ですが) 今ではGoogleAppEngineから利用可能。 GAEから利用できるBigTableは、一貫性を担保する範囲 を「限定的」とし、高い可用性と分断耐性を持つAP型 17 12年9月27日木曜日
  • 18. Amazon DynamoDB 自社のコマースサイト向けに作られたと言われている実装 で、2007年に論文が公開。 そのノウハウをつぎ込み、2012年1月にAmazon DynamoDBとしてサービス提供開始。 一貫性を利用するユーザが選択可能(強一貫性も指定で きるが料金が2倍!)とし、高い可用性とネットワーク分 断耐性を保つAP型 18 12年9月27日木曜日
  • 19. Amazon DynamoDB 秒間あたりの読み込み/書き込みのスループットを 指定するだけで、あとは勝手にスケールしていく! •容量無制限 •サービスなのでメンテ不要 •アトミックカウンタもサポート(コスト2倍/速度低下を許容すれば) •しかもEMR経由で外部テーブルとしてマウントできる というわけで一般に利用できる範囲では 現代最強のNoSQLサービス!? 19 12年9月27日木曜日
  • 20. Apache 元々Facebookのメッセージボックス検索のために開発さ れたものを、2008年にオープンソース化。 マスタノードが必要なく、例えネットワークが分断されて も動作し続け読み書きが可能 (勿論場合によっては読み込み不可の場合もある)。 合言葉は「eventually consistency」=結果整合性! 一貫性を利用するユーザが選択可能とし、高い可用性と ネットワーク分断耐性を保つAP型 20 12年9月27日木曜日
  • 21. Apache GoogleのBigTableをモデルに実装された 列指向分散データベース。 現在はHadoopプロジェクトの一部だが、色々あるらしい。。。 最近(6月から)Amazon EMRがサポートしだしました。 高い一貫性とネットワーク分断耐性を持つが、SPoFが存 在するため可用性には劣るCP型 21 12年9月27日木曜日
  • 22. そして世の中はさらに進む Spanner: Google's Globally-Distributed Database http://research.google.com/archive/spanner.html 2012年6月に突如資料が出現し、世の分散システム研究者 をあっと驚かせた のデータベース。 日本語では@ kazunori_279さんのブログが詳しいです。 最新の論文↑が今月16日に公開されました。 22 12年9月27日木曜日
  • 23. Spanner: Google's Globally- Distributed Database 「世界中に分散する全サーバに、GPSと原子時計を使っ て正確なタイムスタンプを供給し、惑星規模で整合性の 取れる分散データベース作ったよ」 ⇛ 分散システムは正確な時間が取れないよねっていう 前提を完全にちゃぶ台返しする斜め上な発想! (それだけじゃないけど:詳細は論文を熟読のこと) 23 12年9月27日木曜日
  • 24. 最近のトレンドは Consistency = 一貫性をどう扱うか、にフォーカスが 当たってるような気がしますね。 他にも • どうやってデータを分散させるの? = Consistent Hashingとか • そもそもキーとバリューでどうやってデータ取り出すの? = じゃあsecondery index使おうか、とか • データモデリングはどうするの? などなど、話のネタは付きませんが以下次号。。。 24 12年9月27日木曜日
  • 25. まとめ アマゾンのクラウド(AWS)に移行したいよとか、 (当方 solutionProviderOnTheBeach.com です) BigDataに興味のある人、MapReduceってなに?とか、 Amazon Elastic MapReduce(EMR)でハマってるよ!など ありましたら @k_nishijima までコンタクトください。 ありがとうございました。 25 12年9月27日木曜日