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

4,420 views

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,420
On SlideShare
0
From Embeds
0
Number of Embeds
2,617
Actions
Shares
0
Downloads
18
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

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

×