Skip to content

Instantly share code, notes, and snippets.

@kuenishi
Last active January 2, 2016 11:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kuenishi/8296883 to your computer and use it in GitHub Desktop.
Save kuenishi/8296883 to your computer and use it in GitHub Desktop.

Keyword : Riak, NoSQL, general

Riak / NoSQL

NoSQL <= Not only SQL <= No, I don't like SQL

今日覚えてもらうこと

  • NoSQLというかデータストアの業界とその分類、使い分けのコツ
  • Riakというデータベースを理解して使ってもらう!!!

目次案

  • SQLとはなにか?(データベースの歴史から?)
  • NoSQLの分類軸(インターフェース、CAP、保存/キャッシュ/分析)
  • スケールアウト型おおまかにいって2通り: 構造化しゃーでぃんぐ、P2P型シャーディング
  • レプリケーションと整合性(Quorum, 分散合意、アトミックブロードキャスト、Vector Clocks etc)
  • Riakの特徴: P2P型シャーディング、Soft State, Siblings 「とりあえず書きこむ」
  • データベースが動く処理系(ネイティブコード、JVM, Erlang VM)による特徴の違い
  • 永続化のアプローチも(WAL, mmap, etc?)

SQLとはなにか?(データベースの歴史から?)

データとは何か?

 0100010101110001111 <- これはデータか? { "foo" : "bar", "baz":[] } <- これはデータか? ....

データベースとは何か?  データを出し入れできる  データを安全に出し入れできる(Constraintをこわさない)  データを高速に出し入れできる  データをなくさない  データをデータ構造を保ったまま保存できる

SQL history

関係モデル 70年代 SQLデータベース 80年代 NoSQL 00年代

コンピュータの登場は1940年台、その前は?

階層型DB, CodaSYL (COBOL)

NoSQLの歴史はSQLよりも古い(えっ

NoSQLの分類軸(インターフェース、CAP、保存/キャッシュ/分析)

データベース的な

1, 2, 3, 4 どこまでがデータベース? どこからがNoSQL?

SQL \ ACID | + | - | -----------+-----+-----+ + | 1 | 2 | -----------+-----+-----+ - | 3 | 4 |

1 - 狭い範囲でのデータベース *SQL 2 - CassandraとかHiveとか ... 3 - InnoDB etc 4 - "No"SQL, Riak

SQLかそうでないか≒JOINがあるかどうか(JOINは難しい)

歴史的には、 1->4 への移行 4->2 へいこうとしていなくはない (4 -> 3 -> 1 -> 4 -> 2) <= Qをはさむ

"Web Scale" の時代

「実態は、NoSQLではなくNoACID」

この講義ではNoACIDのはなしをします。SQLはデータモデリングやアプリ構造の話なので、もうひとつ実はレイヤーが上

NoACIDにして解きたい問題はスケーリング(Write, Read, Size)、可用性(Read, Write)。

スケールアウト型おおまかにいって2通り: 構造化しゃーでぃんぐ、P2P型シャーディング

東工大のスライドを流用

BigTable, HBase vs Dynamo, Cassie, Riak

その他のデータベースはいっぱいありすぎてわからん

レプリケーションと整合性(Quorum, 分散合意、アトミックブロードキャスト、Vector Clocks etc)

Q. 整合性(Consistency) って何だとおもう?

整合性のふたつの文脈 ・RDBMSの整合性は、concurrent update というか、同じデータを別のスレッドが見に行くとかそういう話 ・NoSQLでいう整合性は、「レプリカ間」の整合性のはなし

→前者は他の講義で話したはず…こんかいは後者

CAP定理→スケールアウトではなくレプリケーションに関するもの。BASEもそっち。

CAP定理とBASEの概念

CAP定理の概念をよく覚えて「高可用かつトランザクション」とかいってる製品を信用してはいけない。

  • Quorum
  • 分散合意の問題は難しい
  • アトミックブロードキャスト
  • ベクタークロック(Lamport Clockによる)←これがBASEというものを体現している
  • CRDT (Commutative Replicated Datatypes) 可換データ型

ACIDするための技術  アトミックブロードキャストプロトコル  WAL BASEするための技術  AAE  CRDT

Riakの特徴: P2P型シャーディング、Soft State, Siblings 「とりあえず書きこむ」

データベースが動く処理系(ネイティブコード、JVM, Erlang VM)による特徴の違い

永続化のアプローチも(WAL, mmap, etc?)

Refs

  • System R: Astrahan, M. M.; Blasgen, M. W.; Chamberlin, D. D.; Eswaran, K. P.; Gray, J. N.; Griffiths, P. P.; King, W. F.; Lorie, R. A.; McJones, P. R.; Mehl, J. W.; Putzolu, G. R.; Traiger, I. L.; Wade, B. W. & Watson, V. (1976), 'System R: Relational Approach to Database Management', ACM Trans. Database Syst. 1 , 97--137 .
  • GFS: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, "The Google File System," SOSP 2003.
  • BigTable: Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. 2006. Bigtable: a distributed storage system for structured data. In Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7 (OSDI '06), Vol. 7. USENIX Association, Berkeley, CA, USA, 15-15.
  • Dynamo: Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall, and Werner Vogels. 2007. Dynamo: amazon's highly available key-value store. In Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles (SOSP '07). ACM, New York, NY, USA, 205-220. DOI=10.1145/1294261.1294281 http://doi.acm.org/10.1145/1294261.1294281
  • Cassandra: Avinash Lakshman and Prashant Malik. 2010. Cassandra: a decentralized structured storage system. SIGOPS Oper. Syst. Rev. 44, 2 (April 2010), 35-40. DOI=10.1145/1773912.1773922 http://doi.acm.org/10.1145/1773912.1773922
  • Paxos: Leslie Lamport, Paxos Made Simple ACM SIGACT News (Distributed Computing Column) 32, 4 (Whole Number 121, December 2001) 51-58.
  • Paxos: Tushar D. Chandra, Robert Griesemer, and Joshua Redstone. 2007. Paxos made live: an engineering perspective. In Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing (PODC '07). ACM, New York, NY, USA, 398-407. DOI=10.1145/1281100.1281103 http://doi.acm.org/10.1145/1281100.1281103
  • Raft: Diego Ongaro and John Ousterhout, In Search of an Understandable Consensus Algorithm, Draft 2013.
  • ZAB: Benjamin Reed and Flavio P. Junqueira, A simple totally ordered broadcast protocol, LADIS 2008.
  • ZAB: Flavio Junqueira, Benjamin Reed, and Marco Serafini, "DISSECTING ZAB", Yahoo! Labs Technical Report, YL2007-2010.
  • ZAB: Flavio Junqueira, Benjamin Reed, and Marco Serafini, Zab: High-performance broadcast for primary-backup systems, DSN 2011.
  • Vector Clocks: Mattern, F. (October 1988), "Virtual Time and Global States of Distributed Systems", in Cosnard, M., Proc. Workshop on Parallel and Distributed Algorithms, Chateau de Bonas, France: Elsevier, pp. 215–226
  • CRDT: Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. 2011. Conflict-free replicated data types. In Proceedings of the 13th international conference on Stabilization, safety, and security of distributed systems (SSS'11), Xavier Défago, Franck Petit, and Vincent Villain (Eds.). Springer-Verlag, Berlin, Heidelberg, 386-400.
  • Other Readings in Distributed Systems

Riak Refs

  • Rusty Klophaus. 2010. Riak Core: building distributed applications without shared state. In ACM SIGPLAN Commercial Users of Functional Programming (CUFP '10). ACM, New York, NY, USA, , Article 14 , 1 pages. DOI=10.1145/1900160.1900176 http://doi.acm.org/10.1145/1900160.1900176
  • Christopher Meiklejohn. 2013. Riak PG: distributed process groups on dynamo-style distributed storage. In Proceedings of the twelfth ACM SIGPLAN workshop on Erlang (Erlang '13). ACM, New York, NY, USA, 27-32. DOI=10.1145/2505305.2505309 http://doi.acm.org/10.1145/2505305.2505309
  • Bryan Fink. 2012. Distributed computation on dynamo-style distributed storage: riak pipe. In Proceedings of the eleventh ACM SIGPLAN workshop on Erlang workshop (Erlang '12). ACM, New York, NY, USA, 43-50. DOI=10.1145/2364489.2364497 http://doi.acm.org/10.1145/2364489.2364497

おまけ(maybe)

  • 分散トランザクション、Soft State(BASE / ACID)
  • データベースでのリカバリの話はしない

今日覚えてもらうこと

  • NoSQLというかデータストアの業界とその分類、使い分けのコツ
  • Riakというデータベースを理解して使ってもらう!!!

目次案

  • SQLとはなにか?(データベースの歴史から?)
  • NoSQLの分類軸(インターフェース、CAP、保存/キャッシュ/分析)
  • スケールアウト型おおまかにいって2通り: 構造化しゃーでぃんぐ、P2P型シャーディング
  • レプリケーションと整合性(Quorum, 分散合意、アトミックブロードキャスト、Vector Clocks etc)
  • Riakの特徴: P2P型シャーディング、Soft State, Siblings 「とりあえず書きこむ」
  • データベースが動く処理系(ネイティブコード、JVM, Erlang VM)による特徴の違い
  • 永続化のアプローチも(WAL, mmap, etc?)

おまけ(maybe)

  • 分散トランザクション、Soft State(BASE / ACID)
  • データベースでのリカバリの話はしない

memo

いろんなタイプがあり、軸がある

  • 1台で動くタイプ、ライブラリタイプ
  • N台で動くタイプ、スケールアウト型/単なる冗長構成型
  • CAP定理でいうCA, AP

最近はSQL(っぽいインターフェース)を持ったものも増えている

故障モデルはまあ、実際にあった怖い話をちょっとしようかと思います
。ビザンチン故障は遭遇したことがないのであまり触れないと思います(批判はするかも)。
合意のあたりで,その難しさについて御解説頂けたら嬉しく思います.
停止故障,ビザンチン故障の細かい分類がもしもあれば嬉しく思います.
また,NOSQLのデータモデルとして,graph, document, kvsについてざざっと触れて頂け
たら幸いです.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment