notonly nosql

43
Not only NoSQL

Upload: kensuke-shimokawa

Post on 17-Jun-2015

951 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Notonly NoSQL

Not only NoSQL

Page 2: Notonly NoSQL

JIT

Page 3: Notonly NoSQL

NoSQL

SQL RDB

TODAY

Page 4: Notonly NoSQL

purpose

• SQL is not RDB

• SQL is not well defined

• RDB can be better than SQL

(potential)

• RDB is truly mathematics

(SQL product)

Page 5: Notonly NoSQL

Talk about SQL

• 制定された年ごとに SQL86, SQL89, SQL92, SQL1999, SQL2003, SQL2008 などの規格がある。

• SQL は、 RDBMS ( SQLMS )において、データの操作や定義を行うための問い合わせ言語である

• 主な製品として、 Oracle 、 DB2 、 MySQL など。

by wikipedia

Page 6: Notonly NoSQL

Talk about NoSQL

• NoSQL とは、 SQL の長い歴史を打破するものとして、広い意味での非 SQL な理論、製品、プログラムの総称である。

• 主な製品として、 CouchDB 、 HBase 、Memcachedb 、 MongoDB など

by wikipedia

Page 7: Notonly NoSQL

Happy?

Page 8: Notonly NoSQL

tuning

• 「 WEB 応答が遅い」• 「バッチ処理が遅い」

  ⇒  NoSQL?

• 実装に惑わされるな、理論に従え

Page 9: Notonly NoSQL

NoSQL  &  REST

• アーキテクチャ指向( scale out )• ソフトウエア( cash, kvs, bigtable )• ステートレス(冪等、独立)• bigdata(Object)• 複雑性( XML 、 JSON 、 YAML )確かに素晴らしい。これがなくては現在の世の中は成り立たな

い。しかし本当に RDB と直交する概念か!?

Page 10: Notonly NoSQL

mathematics

theory

architecture

programming

ideal

Page 11: Notonly NoSQL

もっと光を!

ヨハン・ヴォルフガング・フォン・ゲーテ詩劇『ファウスト』

& リレーショナル理論

Page 12: Notonly NoSQL

SQL vs  RDB

• SQL はリレーショナル理論の部分実装• SQL はリレーショナル理論の直交拡張  こうではない。    Class SQL extends RDB{

}

• SQL は混乱する。 ( 私だけ? )

Page 13: Notonly NoSQL

fantasy • SQL は第一正規形• SQL は NOT   NULL 制約を持つ• SQL はトリガー(型強制)を持つ• SQL は関数型言語• SQL は数学に基礎を置く• SQL は ACID 、トランザクションを持つ• SQL は統計情報から最適化される

Page 14: Notonly NoSQL

atom

Page 15: Notonly NoSQL

• atom は非分解、つまり原子

• SQL で認められている atom は string,integer,boolean,decimal,date など

• SQL では論外

ID Name Hobby

1001 Jhon tennis piano  

1002 May book movie poem

1003 Bob girl boy  

Page 16: Notonly NoSQL

Is atom undividable?

Page 17: Notonly NoSQL

helium

Page 18: Notonly NoSQL

Check your atom• 文字列型「少年易老學難成」 ⇒ 「少」、「年」、、、、

• 日付型「 2011/11/28 」 ⇒年 2011 、月 11 、日 28

• 真理値型「イルカは魚または動物」⇒命題として分解

• 数値型「 100 」⇒素因数分解 (2^2×5^2)

Page 19: Notonly NoSQL

context

• 原子性は context に依存する• 時間、人、物、空間、によって妥当な原

子性の深さが異なる。

• SQL は様々な context を無視し、ある、独断で原子性を定義

 (そんな乱暴な第一正規形に従うな!)

Page 20: Notonly NoSQL

complexity

• 複雑さの復権  bigtable 、 Object 、 XML 、 JSON だけ

が複雑性の拠り所ではない。

• リレーショナル理論こそ、複雑性の代名詞といえる。( e.g  表現力)

Page 21: Notonly NoSQL

Who?

Edgar Frank Codd 1923 ・ 8 ・ 23 - 2003 ・ 4 ・ 18

Mathematician

In Set theory

Page 22: Notonly NoSQL

Set theory

Page 23: Notonly NoSQL

Set theory• 集合は任意の対象(要素)の集まり• 集合は任意の型を包含可• 集合は集合を包含可• 集合は要素の重複を許さない• 集合は要素数が 0 を認める• 集合は対象が未定( NULL) を許さない• 集合には集合命題がある  ⊂、∈など• 集合には集合演算がある  ∪、∩など

Page 24: Notonly NoSQL

dimension

• SQL のテーブルは、 2 次元(項、列)• 集合の次元は多次元に拡張可能 自然数  N={1,2,3,4,5,……} 整数    Z= -N {0} N∪ ∪ 有理数  Q= Z × Z デカルト座標  D= Q× Q ※実際には実数 ※ Q×Q を Q^2 と書く

Page 25: Notonly NoSQL

relation

• 関係の項とは、組み合わせの一つの要素• 関係とは、集合の内積に他ならない

( 1001,Jhon,tennis )∈ ID×NAME×HOBBY

ID Name Hobby1001 J hon tennis1002 May book1003 Bob girl

Page 26: Notonly NoSQL

Cartesian coordinate system ID

Name

Hobby

1001

J hon

tennis

1001,J hon,tennis( )

N 次元の座標系の一点として定義※ 重複を許さな

い根拠

( 1001,Null,tennis )が何処をポイントする

かわからない!Null を許容しない根拠

Page 27: Notonly NoSQL

depth

• 集合は集合間の包含において、任意の深さを取れる。

A: 集合A B∈ :集合  つまり {A, A’, A’’,….}

B C∈ :集合・・・・・・

Page 28: Notonly NoSQL

Again, complexity• Hobby Hobbies∈

※ Hobbies ≠ Hobby ^3

・ Object・ XML・ JSON・ Bigdata

に表現力は遜色ない。※ すごい似てる!

ID Name Hobbies

1001 J hon

1002 May

1003 Bob

Hobbytennispiano

Hobbybookmoviepoem

Hobbygirlboy

Page 29: Notonly NoSQL

Select

ID,

Name

From Person

WHERE

‘tennis’ Hobbies.Hobby∈

Person

ID Name Hobbies

1001 J hon

1002 May

1003 Bob

Hobbytennispiano

Hobbybookmoviepoem

Hobbygirlboy

Sample

※SQL で無理やり書くとこんな感じかな、、、、

Page 30: Notonly NoSQL

logic

Page 31: Notonly NoSQL

• Null が怖い• Null は嫌い

⇒  正解です。

Page 32: Notonly NoSQL

NULL• Null を扱った命題では、結果として True 、 Fal

se のいずれかが返される保証がない。

例)Where

  NULL > 100AND NULL = NULL

この Where 句は真に評価される?偽に評価される?

⇒UNKNOWN

Page 33: Notonly NoSQL

three valued logic• SQL は UNKNOWN 、 TRUE 、 FALSE の 3 値論理。• リレーショナル理論(集合論など古典数学)では 2 値論

理• 3 値論理は非常に危険!既存の数学的な論拠が使えない。  例)背理法が使えない。俳中律の崩壊。⇒ 数学を基盤にしているとはとても言えない、、、• 現世界のコンピュータは 2 値論理で稼動している。( 2

値に抑えればクエリ高速化に繋がる可能性)

Page 34: Notonly NoSQL

Type

Page 35: Notonly NoSQL

Type(SQL)

• 型の有益は、言及するまでもない。• SQL に型は備わっているか?  YES :しかしユーザ定義型が弱い (トリガーでごまかされている気がす

る。)• 強力な型が欲しい!• リレーショナル理論では型の表現が自由

Page 36: Notonly NoSQL

literal• リテラルとはコンストラクタである。例)文字列型:「 hello world 」• 複雑な型表現は? 例)デカルト座標       

θ

Y

X

コンストラクタのオーバーロードが欲し

い。極座標

Page 37: Notonly NoSQL

Type ( relational )• コンストラクタの候補表現(オーバーロード)• 強力な型制約をつけられる。  Constraint R15 {

age <= 15 : Exception

  } on Person.Age

ID Name Age1001 J hon 101002 May 221003 Bob 37

Age には年齢制限があるため、このタプルを含む集合を Personに代入しようとした時点で例外発生

Page 38: Notonly NoSQL

Constraint

• 関係にも制約をつけれる。  Constraint R25 {

age <= 25   AND   ID%2==0 : Exception

} on Person

Page 39: Notonly NoSQL

Domain

• 二つのリレーションが合った場合、両方に共通した Domain が現れることがある。

• これらのドメイン( ID) を、同じ型で表現する。

• 豊かな型表現により、プリミティブでない項目表現が可能

ID LessonID Lesson1001 A gym1001 B music1003 B music

ID Name1001 J hon1002 May1003 Bob

Page 40: Notonly NoSQL

semantics

Page 41: Notonly NoSQL

optimization

• SQL :統計情報による。(コストベース)

• 等価 SQL : SQLA SQLB⇒• 簡単な(コストの低い) SQL に変換し結果を出す。

• 関係( relational )では、型制約、関係制約を持っていることから、意味論( semantics )的な最適化が出来る。

Page 42: Notonly NoSQL

Semantics optimization

ID Name Hobbies

1001 J hon

1002 May

1003 Bob

Hobbytennispiano

Hobbybookmoviepoem

Hobbygirlboy

• もし、 R15 指定があったとしたら、、、

• 「 movie を趣味に持つ人を取得」にクエリ変換できる。

• これが意味論的最適化⇒  高速化の期待!

•「 movie を趣味に持つ 16歳以上の人を取得」

Page 43: Notonly NoSQL

finally

• SQL は、リレーショナル理論の完全な実装ではなかった。

• SQL ベンダーは高速化に挑んでいるが、数学的根拠なきベースからは厳しい戦いになっているようだ。

• 理論、とっても大切!つねに頭に数学を!