Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Not only NoSQL
JIT
NoSQL SQL RDB TODAY
purpose <ul><li>SQL is not RDB </li></ul><ul><li>SQL is not well defined </li></ul><ul><li>RDB can be better than SQL </li...
Talk about SQL <ul><li>制定された年ごとに SQL86, SQL89, SQL92, SQL1999, SQL2003, SQL2008  などの規格がある。 </li></ul><ul><li>SQL は、 RDBMS ...
Talk about NoSQL <ul><li>NoSQL とは、 SQL の長い歴史を打破するものとして、広い意味での非 SQL な理論、製品、プログラムの総称である。 </li></ul><ul><li>主な製品として、 CouchDB ...
Happy?
tuning <ul><li>「 WEB 応答が遅い」 </li></ul><ul><li>「バッチ処理が遅い」 </li></ul><ul><li>  ⇒  NoSQL? </li></ul><ul><li>実装に惑わされるな、理論に従え <...
NoSQL  &  REST <ul><li>アーキテクチャ指向( scale out ) </li></ul><ul><li>ソフトウエア( cash, kvs, bigtable ) </li></ul><ul><li>ステートレス(冪等、...
mathematics theory architecture programming ideal
<ul><li>もっと光を! </li></ul><ul><li>ヨハン・ヴォルフガング・フォン・ゲーテ </li></ul><ul><li>詩劇『ファウスト』 </li></ul><ul><li>& リレーショナル理論 </li></ul>
SQL vs RDB <ul><li>SQLはリレーショナル理論の部分実装 </li></ul><ul><li>SQLはリレーショナル理論の直交拡張 </li></ul><ul><li>  こうではない。 </li></ul><ul><li> ...
fantasy  <ul><li>SQLは第一正規形 </li></ul><ul><li>SQLはNOT NULL制約を持つ </li></ul><ul><li>SQLはトリガー(型強制)を持つ </li></ul><ul><li>SQLは関数...
atom
<ul><li>atom は非分解、つまり原子 </li></ul><ul><li>SQL で認められている atom は string,integer,boolean,decimal,date など </li></ul><ul><li>SQL...
Is atom undividable?
helium
Check your atom <ul><li>文字列型 </li></ul><ul><li>「 少年易老學難成 」 ⇒ 「少」、「年」、、、、 </li></ul><ul><li>日付型 </li></ul><ul><li>「 2011/11...
context <ul><li>原子性はcontextに依存する </li></ul><ul><li>時間、人、物、空間、によって妥当な原子性の深さが異なる。 </li></ul><ul><li>SQLは様々なcontextを無視し、ある、独断...
complexity <ul><li>複雑さの復権 </li></ul><ul><li>  bigtable 、 Object 、 XML 、 JSON だけが複雑性の拠り所ではない。 </li></ul><ul><li>リレーショナル理論こそ...
Who? Edgar Frank Codd 1923 ・ 8 ・ 23 - 2003 ・ 4 ・ 18 Mathematician In Set theory
Set theory
Set theory <ul><li>集合は任意の対象(要素)の集まり </li></ul><ul><li>集合は任意の型を包含可 </li></ul><ul><li>集合は集合を包含可 </li></ul><ul><li>集合は要素の重複を許...
dimension <ul><li>SQL のテーブルは、 2 次元(項、列) </li></ul><ul><li>集合の次元は多次元に拡張可能 </li></ul><ul><li> 自然数  N={1,2,3,4,5,……} </li></u...
relation <ul><li>関係の項とは、組み合わせの一つの要素 </li></ul><ul><li>関係とは、集合の内積に他ならない </li></ul><ul><li>(1001,Jhon,tennis)∈ID×NAME×HOBBY ...
Cartesian coordinate system  N 次元の座標系の一点として定義 ※ 重複を許さない根拠 ( 1001,Null,tennis ) が何処をポイントするかわからない! Null を許容しない根拠
depth <ul><li>集合は集合間の包含において、任意の深さを取れる。 </li></ul><ul><li>A:集合 </li></ul><ul><li>A∈B:集合  つまり {A, A’, A’’,….} </li></ul><ul>...
Again, complexity <ul><li>Hobby∈Hobbies </li></ul><ul><li>※  Hobbies ≠ Hobby ^3 </li></ul>・ Object ・ XML ・ JSON ・ Bigdata ...
<ul><li>Select  </li></ul><ul><li>ID, </li></ul><ul><li>Name </li></ul><ul><li>From Person </li></ul><ul><li>WHERE </li></...
logic
<ul><li>Nullが怖い </li></ul><ul><li>Nullは嫌い </li></ul><ul><li>⇒ 正解です。 </li></ul>
NULL <ul><li>Null を扱った命題では、結果として True 、 False のいずれかが返される保証がない。 </li></ul><ul><li>例) </li></ul><ul><li>Where  </li></ul><ul...
three valued logic <ul><li>SQL は UNKNOWN 、 TRUE 、 FALSE の 3 値論理。 </li></ul><ul><li>リレーショナル理論(集合論など古典数学)では 2 値論理 </li></ul>...
Type
Type(SQL) <ul><li>型の有益は、言及するまでもない。 </li></ul><ul><li>SQLに型は備わっているか? </li></ul><ul><li> YES:しかしユーザ定義型が弱い </li></ul><ul><li>...
literal <ul><li>リテラルとはコンストラクタである。 </li></ul><ul><li>例)文字列型:「hello world」 </li></ul><ul><li>複雑な型表現は? </li></ul><ul><li> 例)デ...
Type(relational) <ul><li>コンストラクタの候補表現(オーバーロード) </li></ul><ul><li>強力な型制約をつけられる。 </li></ul><ul><li>  Constraint R15 { </li><...
Constraint <ul><li>関係にも制約をつけれる。 </li></ul><ul><li> Constraint R25 { </li></ul><ul><li>age <= 25 AND ID%2==0: Exception </l...
Domain <ul><li>二つのリレーションが合った場合、両方に共通したDomainが現れることがある。 </li></ul><ul><li>これらのドメイン(ID)を、同じ型で表現する。 </li></ul><ul><li>豊かな型表現に...
semantics
optimization  <ul><li>SQL:統計情報による。(コストベース) </li></ul><ul><li>等価SQL:SQLA⇒SQLB </li></ul><ul><li>簡単な(コストの低い)SQLに変換し結果を出す。 </...
Semantics optimization <ul><li>もし、 R15 指定があったとしたら、、、 </li></ul><ul><li>「 movie を趣味に持つ人を取得」にクエリ変換できる。 </li></ul><ul><li>これが...
finally <ul><li>SQLは、リレーショナル理論の完全な実装ではなかった。 </li></ul><ul><li>SQLベンダーは高速化に挑んでいるが、数学的根拠なきベースからは厳しい戦いになっているようだ。 </li></ul><u...
Upcoming SlideShare
Loading in …5
×

Notonly NoSQL

1,155 views

Published on

Introducing the beggining of Rerational theory with a little math words.
This presentation paper was written for Zansa in 18th December 2011

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Notonly NoSQL

  1. 1. Not only NoSQL
  2. 2. JIT
  3. 3. NoSQL SQL RDB TODAY
  4. 4. purpose <ul><li>SQL is not RDB </li></ul><ul><li>SQL is not well defined </li></ul><ul><li>RDB can be better than SQL </li></ul><ul><li>(potential) </li></ul><ul><li>RDB is truly mathematics </li></ul><ul><li>(SQL product) </li></ul>
  5. 5. Talk about SQL <ul><li>制定された年ごとに SQL86, SQL89, SQL92, SQL1999, SQL2003, SQL2008 などの規格がある。 </li></ul><ul><li>SQL は、 RDBMS ( SQLMS )において、データの操作や定義を行うための問い合わせ言語である </li></ul><ul><li>主な製品として、 Oracle 、 DB2 、 MySQL など。 </li></ul><ul><li>by wikipedia </li></ul>
  6. 6. Talk about NoSQL <ul><li>NoSQL とは、 SQL の長い歴史を打破するものとして、広い意味での非 SQL な理論、製品、プログラムの総称である。 </li></ul><ul><li>主な製品として、 CouchDB 、 HBase 、 Memcachedb 、 MongoDB など </li></ul><ul><li>by wikipedia </li></ul>
  7. 7. Happy?
  8. 8. tuning <ul><li>「 WEB 応答が遅い」 </li></ul><ul><li>「バッチ処理が遅い」 </li></ul><ul><li>  ⇒  NoSQL? </li></ul><ul><li>実装に惑わされるな、理論に従え </li></ul>
  9. 9. NoSQL  &  REST <ul><li>アーキテクチャ指向( scale out ) </li></ul><ul><li>ソフトウエア( cash, kvs, bigtable ) </li></ul><ul><li>ステートレス(冪等、独立) </li></ul><ul><li>bigdata(Object) </li></ul><ul><li>複雑性( XML 、 JSON 、 YAML ) </li></ul><ul><li>確かに素晴らしい。 </li></ul><ul><li>これがなくては現在の世の中は成り立たない。 </li></ul><ul><li>しかし本当に RDB と直交する概念か!? </li></ul>
  10. 10. mathematics theory architecture programming ideal
  11. 11. <ul><li>もっと光を! </li></ul><ul><li>ヨハン・ヴォルフガング・フォン・ゲーテ </li></ul><ul><li>詩劇『ファウスト』 </li></ul><ul><li>& リレーショナル理論 </li></ul>
  12. 12. SQL vs RDB <ul><li>SQLはリレーショナル理論の部分実装 </li></ul><ul><li>SQLはリレーショナル理論の直交拡張 </li></ul><ul><li>  こうではない。 </li></ul><ul><li>   Class SQL extends RDB{ </li></ul><ul><li>} </li></ul><ul><li>SQLは混乱する。(私だけ?) </li></ul>
  13. 13. fantasy <ul><li>SQLは第一正規形 </li></ul><ul><li>SQLはNOT NULL制約を持つ </li></ul><ul><li>SQLはトリガー(型強制)を持つ </li></ul><ul><li>SQLは関数型言語 </li></ul><ul><li>SQLは数学に基礎を置く </li></ul><ul><li>SQLはACID、トランザクションを持つ </li></ul><ul><li>SQLは統計情報から最適化される </li></ul>
  14. 14. atom
  15. 15. <ul><li>atom は非分解、つまり原子 </li></ul><ul><li>SQL で認められている atom は string,integer,boolean,decimal,date など </li></ul><ul><li>SQL では論外 </li></ul>  boy girl Bob 1003 poem movie book May 1002   piano tennis Jhon 1001 Hobby Name ID
  16. 16. Is atom undividable?
  17. 17. helium
  18. 18. Check your atom <ul><li>文字列型 </li></ul><ul><li>「 少年易老學難成 」 ⇒ 「少」、「年」、、、、 </li></ul><ul><li>日付型 </li></ul><ul><li>「 2011/11/28 」 ⇒年 2011 、月 11 、日 28 </li></ul><ul><li>真理値型 </li></ul><ul><li>「イルカは魚または動物」⇒命題として分解 </li></ul><ul><li>数値型 </li></ul><ul><li>「 100 」⇒素因数分解 (2^2×5^2) </li></ul>
  19. 19. context <ul><li>原子性はcontextに依存する </li></ul><ul><li>時間、人、物、空間、によって妥当な原子性の深さが異なる。 </li></ul><ul><li>SQLは様々なcontextを無視し、ある、独断で原子性を定義 </li></ul><ul><li> (そんな乱暴な第一正規形に従うな!) </li></ul>
  20. 20. complexity <ul><li>複雑さの復権 </li></ul><ul><li>  bigtable 、 Object 、 XML 、 JSON だけが複雑性の拠り所ではない。 </li></ul><ul><li>リレーショナル理論こそ、複雑性の代名詞といえる。( e.g  表現力) </li></ul>
  21. 21. Who? Edgar Frank Codd 1923 ・ 8 ・ 23 - 2003 ・ 4 ・ 18 Mathematician In Set theory
  22. 22. Set theory
  23. 23. Set theory <ul><li>集合は任意の対象(要素)の集まり </li></ul><ul><li>集合は任意の型を包含可 </li></ul><ul><li>集合は集合を包含可 </li></ul><ul><li>集合は要素の重複を許さない </li></ul><ul><li>集合は要素数が 0 を認める </li></ul><ul><li>集合は対象が未定( NULL) を許さない </li></ul><ul><li>集合には集合命題がある </li></ul><ul><li>  ⊂、∈など </li></ul><ul><li>集合には集合演算がある </li></ul><ul><li>  ∪、∩など </li></ul>
  24. 24. dimension <ul><li>SQL のテーブルは、 2 次元(項、列) </li></ul><ul><li>集合の次元は多次元に拡張可能 </li></ul><ul><li> 自然数  N={1,2,3,4,5,……} </li></ul><ul><li> 整数    Z= -N∪{0} ∪N </li></ul><ul><li>有理数  Q= Z × Z </li></ul><ul><li>デカルト座標  D= Q× Q </li></ul><ul><li> ※実際には実数 </li></ul><ul><li> ※ Q×Q を Q^2 と書く </li></ul>
  25. 25. relation <ul><li>関係の項とは、組み合わせの一つの要素 </li></ul><ul><li>関係とは、集合の内積に他ならない </li></ul><ul><li>(1001,Jhon,tennis)∈ID×NAME×HOBBY </li></ul>
  26. 26. Cartesian coordinate system N 次元の座標系の一点として定義 ※ 重複を許さない根拠 ( 1001,Null,tennis ) が何処をポイントするかわからない! Null を許容しない根拠
  27. 27. depth <ul><li>集合は集合間の包含において、任意の深さを取れる。 </li></ul><ul><li>A:集合 </li></ul><ul><li>A∈B:集合  つまり {A, A’, A’’,….} </li></ul><ul><li>B∈C:集合 </li></ul><ul><li>・・・・・・ </li></ul>
  28. 28. Again, complexity <ul><li>Hobby∈Hobbies </li></ul><ul><li>※ Hobbies ≠ Hobby ^3 </li></ul>・ Object ・ XML ・ JSON ・ Bigdata に表現力は遜色ない。 ※ すごい似てる!
  29. 29. <ul><li>Select </li></ul><ul><li>ID, </li></ul><ul><li>Name </li></ul><ul><li>From Person </li></ul><ul><li>WHERE </li></ul><ul><li>‘ tennis’∈Hobbies.Hobby </li></ul>Sample Person ※ SQL で無理やり書くとこんな感じかな、、、、
  30. 30. logic
  31. 31. <ul><li>Nullが怖い </li></ul><ul><li>Nullは嫌い </li></ul><ul><li>⇒ 正解です。 </li></ul>
  32. 32. NULL <ul><li>Null を扱った命題では、結果として True 、 False のいずれかが返される保証がない。 </li></ul><ul><li>例) </li></ul><ul><li>Where </li></ul><ul><li>  NULL > 100 </li></ul><ul><li>AND NULL = NULL </li></ul><ul><li>この Where 句は真に評価される?偽に評価される? </li></ul><ul><li>⇒ UNKNOWN </li></ul>
  33. 33. three valued logic <ul><li>SQL は UNKNOWN 、 TRUE 、 FALSE の 3 値論理。 </li></ul><ul><li>リレーショナル理論(集合論など古典数学)では 2 値論理 </li></ul><ul><li>3 値論理は非常に危険!既存の数学的な論拠が使えない。 </li></ul><ul><li>  例)背理法が使えない。俳中律の崩壊。 </li></ul><ul><li>⇒ 数学を基盤にしているとはとても言えない、、、 </li></ul><ul><li>現世界のコンピュータは 2 値論理で稼動している。( 2 値に抑えればクエリ高速化に繋がる可能性) </li></ul>
  34. 34. Type
  35. 35. Type(SQL) <ul><li>型の有益は、言及するまでもない。 </li></ul><ul><li>SQLに型は備わっているか? </li></ul><ul><li> YES:しかしユーザ定義型が弱い </li></ul><ul><li> (トリガーでごまかされている気がする。) </li></ul><ul><li>強力な型が欲しい! </li></ul><ul><li>リレーショナル理論では型の表現が自由 </li></ul>
  36. 36. literal <ul><li>リテラルとはコンストラクタである。 </li></ul><ul><li>例)文字列型:「hello world」 </li></ul><ul><li>複雑な型表現は? </li></ul><ul><li> 例)デカルト座標        </li></ul>コンストラクタのオーバーロードが欲しい。 極座標
  37. 37. Type(relational) <ul><li>コンストラクタの候補表現(オーバーロード) </li></ul><ul><li>強力な型制約をつけられる。 </li></ul><ul><li>  Constraint R15 { </li></ul><ul><li>age <= 15 : Exception </li></ul><ul><li>  } on Person.Age </li></ul>Age には年齢制限があるため、このタプルを含む集合を Person に代入しようとした時点で例外発生
  38. 38. Constraint <ul><li>関係にも制約をつけれる。 </li></ul><ul><li> Constraint R25 { </li></ul><ul><li>age <= 25 AND ID%2==0: Exception </li></ul><ul><li>} on Person </li></ul>
  39. 39. Domain <ul><li>二つのリレーションが合った場合、両方に共通したDomainが現れることがある。 </li></ul><ul><li>これらのドメイン(ID)を、同じ型で表現する。 </li></ul><ul><li>豊かな型表現により、プリミティブでない項目表現が可能 </li></ul>
  40. 40. semantics
  41. 41. optimization <ul><li>SQL:統計情報による。(コストベース) </li></ul><ul><li>等価SQL:SQLA⇒SQLB </li></ul><ul><li>簡単な(コストの低い)SQLに変換し結果を出す。 </li></ul><ul><li>関係(relational)では、型制約、関係制約を持っていることから、意味論(semantics)的な最適化が出来る。 </li></ul>
  42. 42. Semantics optimization <ul><li>もし、 R15 指定があったとしたら、、、 </li></ul><ul><li>「 movie を趣味に持つ人を取得」にクエリ変換できる。 </li></ul><ul><li>これが意味論的最適化 </li></ul><ul><li>⇒  高速化の期待! </li></ul><ul><li>「 movie を趣味に持つ 16 歳以上の人を取得」 </li></ul>
  43. 43. finally <ul><li>SQLは、リレーショナル理論の完全な実装ではなかった。 </li></ul><ul><li>SQLベンダーは高速化に挑んでいるが、数学的根拠なきベースからは厳しい戦いになっているようだ。 </li></ul><ul><li>理論、とっても大切!つねに頭に数学を! </li></ul>

×