Contenu connexe
Similaire à NoSQLとビックデータ入門編Update版
Similaire à NoSQLとビックデータ入門編Update版 (20)
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日木曜日