關系型數(shù)據(jù)庫為什么能活這么久制跟?

轉載:碼農翻身


我就是你們常用的關系型數(shù)據(jù)庫舅桩, IBM的研究員E.F.Codd 于1970年把我的理論帶到這個世界上,我已經快50歲了雨膨。

我的家族成員居住在世界各地性能強悍的服務器中擂涛, 保存著你們人類的大量珍貴的數(shù)據(jù),從你的銀行余額聊记,到你的購物清單撒妈,幾乎每一筆網上交易都有我們負責保存。

我是如此重要排监,幾乎每一位軟件從業(yè)者都需要認真學習狰右,很多時候我都是存儲大量數(shù)據(jù)的首選,你要做的舆床,就是選擇一個我的家族成員而已棋蚌,比如:Oracle, MySQL, Db2,SQL Server這些家伙挨队。

對了谷暮,還有一個小巧玲瓏的SQLite,做手機端開發(fā)的離不開它瞒瘸。

在日新月異的IT界坷备, 一門技術居然能存活這么久熄浓,實在是不可思議情臭。

也許會有人想到這個問題: 你為什么能活這么久省撑?

簡單地拍腦袋想一想,也許是我能夠大規(guī)模地保存和檢索數(shù)據(jù)俯在? ?但是直接使用文件系統(tǒng)也可以熬癸?

為什么要數(shù)據(jù)庫跷乐? 還“關系”肥败?

不,我能活這么久愕提,是有一些獨門秘籍的馒稍。

1我有著堅實的數(shù)學基礎

這可真不是我吹牛,我的身上處處顯示著高貴的數(shù)學身影:

域浅侨,關系纽谒,笛卡爾積

關系代數(shù):選擇,投影如输,連接

......

對了鼓黔,你知道啥叫“關系”嗎? 面試官如果問你的話你該如何回答不见?

其實所謂關系澳化,在數(shù)學上的定義就是笛卡爾積的一個子集。

例如有兩個集合:

s1 ={a,b}

s2 = {1,2}

那s1和s2的笛卡爾積就是 :

s1 × s2 = {(a,1),(a,2),(b,1),(b,2)}

那么S 的任意一個子集都是關系:

{(a,1),(a,2)} 是一個“關系”

{(a,2), (b,1),(b,2)} 是另外一個“關系”

{(b,2)} 也是關系

......

如果你把s1和s2豎起來看稳吮,把s1看做列x能取值的集合缎谷, s2看做列y 能取值的集合, 那(x, y)它不就是一張表嗎?

我還有個很漂亮的性質

關系(表)經過運算以后,如select联喘,join除嘹,where,交瘸彤、并、差,結果還是一個關系(表)!

你看我的數(shù)學基礎是不是很牢靠润梯?

2我很直觀

至少表面上看起來是這樣的,如果你想給一個非計算機專業(yè)的人講解數(shù)據(jù)庫甥厦,可以和Excel類比下纺铭, 看看他能不能聽懂: 瞧, 這不就是個表格嗎刀疙,有行有列的舶赔。

3使用簡單

這里不得不說說SQL這個優(yōu)秀的抽象層,它完全屏蔽了底層的實現(xiàn)細節(jié)谦秧,你完全不用考慮底層的文件是怎么存放的竟纳,只要發(fā)出SQL : SELECT ...... FROM ...... WHERE ...... 就好撵溃。

相比于早期復雜的層次狀,網狀數(shù)據(jù)庫锥累, SQL實在是太簡單了缘挑。

不僅僅是開發(fā)人員,你們的業(yè)務人員稍加培訓就可以寫SQL, ?我清晰地記得有個業(yè)務分析師經常去數(shù)據(jù)庫查數(shù)據(jù)桶略,然后告訴程序員說數(shù)據(jù)不對语淘,有Bug, 讓程序員非常頭疼际歼。

4對數(shù)據(jù)完整性的支持很好

我的每個字段都有確定的類型惶翻,還可以檢查數(shù)據(jù)的長度,取值范圍鹅心。

我的主鍵和外鍵维贺,共同保證了數(shù)據(jù)的精確性和一致性, 防止數(shù)據(jù)的缺失巴帮。

5我支持事務溯泣!

這可能是我能成功的一大關鍵了,?ACID對于核心系統(tǒng)的數(shù)據(jù)(如銀行賬號)無比重要榕茧,不難想象一個轉賬操作沒有完成會帶來什么樣的影響垃沦。

6范式

想要使用我們關系型數(shù)據(jù)庫,必須得遵守一定的規(guī)則用押,這些規(guī)則就是“范式”肢簿。

第一范式是基本要求,即每個列都是不分割的數(shù)據(jù)項蜻拨, 如果連這個都滿足不了池充,還是洗洗睡吧。

第二范式要求實體屬性要完全依賴主鍵缎讼,不能依賴部分主鍵收夸。

第三范式就是一個表中不能包含其它表中已包含的非主關鍵字信息。不嚴謹?shù)卣f就是這個表只包含其他表的ID血崭。

一般來說卧惜,你們都會遵循第一和第二范式, 但是為了性能夹纫,為了避免過多的join, 有時候會違反第三范式咽瓷,冗余一些字段的信息, 這我都可以理解舰讹。

7大家用我做“數(shù)據(jù)的集成”

這是大牛Martin Fowler 提出的觀點:

企業(yè)級應用程序居于一個豐富的生態(tài)系統(tǒng)中茅姜,它需要與其他應用程序協(xié)同工作,而那些程序是由不同的團隊合作開發(fā)出來的月匣。

不同的應用程序經常要使用同一份數(shù)據(jù)钻洒, 而且某個應用程序更新完數(shù)據(jù)以后奋姿,必須讓其他應用程序知道這份數(shù)據(jù)已經改變了。

采用”共享數(shù)據(jù)庫集成“ 航唆,多個應用程序都將數(shù)據(jù)保存在一個數(shù)據(jù)庫中,所有的應用很容易就能使用彼此的數(shù)據(jù)了院刁。

8遺留數(shù)據(jù)

幾十年來糯钙,我這里積累了大量的應用數(shù)據(jù),雖然說城頭變幻大王旗退腥,訪問關系數(shù)據(jù)庫的應用程序變了好幾茬任岸,編程語言也換了好幾波,但是關系數(shù)據(jù)庫中的數(shù)據(jù)巋然不動狡刘,他們的壽命遠遠超過應用程序的壽命享潜, 數(shù)據(jù)變成了一個企業(yè)寶貴的財富。

但是世界上沒有完美的東西嗅蔬, 我雖然有眾多優(yōu)點剑按, 但是也有不少缺點。

在互聯(lián)網時代澜术, 在高并發(fā)艺蝴,大流量的映襯下,這些缺點顯得格外刺眼:

對分布式系統(tǒng)支持不好, 難于組成集群鸟废,水平擴展比較難猜敢。

復雜的類型(XML、JSON等)不好表達盒延。

應對互聯(lián)網的海量請求力不從心缩擂。

......

為了應對這些問題,你們人類可以說是想了很多辦法添寺,比如什么NoSQL數(shù)據(jù)庫胯盯,什么分庫分表,在比如你們發(fā)展了BASE理論计露,不追求ACID中的強一致性陨闹,只要達到“基本可用”,最終一致性就可以了薄坏。

但是我不得不說趋厉,對于核心的數(shù)據(jù),交由我來保管才是正道胶坠。

我已經快50了君账,不知道能不能再活50年,但是再活20年我覺得是沒問題的沈善,所以乡数,我建議你還是好好學習一下吧椭蹄。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市净赴,隨后出現(xiàn)的幾起案子绳矩,更是在濱河造成了極大的恐慌,老刑警劉巖玖翅,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翼馆,死亡現(xiàn)場離奇詭異,居然都是意外死亡金度,警方通過查閱死者的電腦和手機应媚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猜极,“玉大人中姜,你說我怎么就攤上這事「” “怎么了丢胚?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長受扳。 經常有香客問我嗜桌,道長,這世上最難降的妖魔是什么辞色? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任骨宠,我火速辦了婚禮,結果婚禮上相满,老公的妹妹穿的比我還像新娘层亿。我一直安慰自己,他們只是感情好立美,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布匿又。 她就那樣靜靜地躺著,像睡著了一般建蹄。 火紅的嫁衣襯著肌膚如雪碌更。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天洞慎,我揣著相機與錄音痛单,去河邊找鬼。 笑死劲腿,一個胖子當著我的面吹牛旭绒,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挥吵,長吁一口氣:“原來是場噩夢啊……” “哼重父!你這毒婦竟也來了?” 一聲冷哼從身側響起忽匈,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤房午,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丹允,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郭厌,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年嫌松,在試婚紗的時候發(fā)現(xiàn)自己被綠了沪曙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕污。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡萎羔,死狀恐怖,靈堂內的尸體忽然破棺而出碳默,到底是詐尸還是另有隱情贾陷,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布嘱根,位于F島的核電站髓废,受9級特大地震影響,放射性物質發(fā)生泄漏该抒。R本人自食惡果不足惜慌洪,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凑保。 院中可真熱鬧冈爹,春花似錦、人聲如沸欧引。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芝此。三九已至憋肖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婚苹,已是汗流浹背岸更。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膊升,地道東北人坐慰。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親结胀。 傳聞我的和親對象是個殘疾皇子赞咙,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容