一、為什么新的分布式數(shù)據(jù)庫又開始支持關(guān)系模型
旗幟鮮明地先說結(jié)論:之所以新的分布式數(shù)據(jù)庫又開始支持關(guān)系模型了,是因為大部分程序員的數(shù)據(jù)庫水平太糟糕。數(shù)據(jù)庫說得復(fù)雜特別復(fù)雜,但說得簡單,它就解決了兩個問題:數(shù)據(jù)怎么存放和數(shù)據(jù)怎么查詢。
而且這兩個問題互相關(guān)聯(lián)。舉個程序員都能明白的例子:如果你把數(shù)據(jù)存成了數(shù)組,那搜索查詢就只能是O(n)的效率了,如果你存成了二叉樹,那么查詢效率就變成了O(logn)。
業(yè)務(wù)查詢可不像搜索一個key值這么簡單,常常復(fù)雜得要死,本來查詢就很難寫了,現(xiàn)在還得考慮數(shù)據(jù)物理存放方式來決定怎么執(zhí)行查詢更高效,這不是要逼死人嘛?所以早期的數(shù)據(jù)庫開發(fā)人員苦啊,什么層級數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫寫完查詢都得自己定義access path啊。
然后就有了關(guān)系模型。
關(guān)系模型徹底改變了數(shù)據(jù)庫程序員的生活:不用管數(shù)據(jù)怎么存了,你只要用SQL寫好查詢,然后查詢優(yōu)化器會幫你把面向業(yè)務(wù)的查詢邏輯轉(zhuǎn)換成可以高效在數(shù)據(jù)的物理結(jié)構(gòu)上執(zhí)行的物理查詢。這簡直就像一下從匯編時代跨越到了高級語言的時代啊。早期的數(shù)據(jù)庫還需要大家自己思考怎么建索引,相當(dāng)于告訴查詢優(yōu)化器哪些列是在查詢中有用,后來數(shù)據(jù)庫已經(jīng)可以自動提示你該加什么索引了,大部分程序員終于可以歡樂地徹底扔掉數(shù)據(jù)庫存儲引擎的知識了。
當(dāng)然仍然有一小挫掌握了超能力的人,是可以手寫執(zhí)行計劃,用Plan Guide強制執(zhí)行的,他們說:查詢優(yōu)化器是什么?可以吃嗎?若干年后他們拯救了世界也打開了黑暗的大門(大誤…
四
好日子一直持續(xù)到數(shù)據(jù)庫負載大到不得不開始走向分布為止。分布式最大的問題是網(wǎng)絡(luò)延遲問題,而網(wǎng)絡(luò)延遲是物理問題,沒這么容易解決。跨機事務(wù)做不了啊,查詢優(yōu)化器再牛逼也優(yōu)化不了跨網(wǎng)絡(luò)的join啊。
但業(yè)務(wù)還是得做啊,于是解決方案只有一個了:回到手工根據(jù)查詢來決定數(shù)據(jù)物理分布(這樣可以最大程度上避免跨網(wǎng)絡(luò)的join),手工決定查詢的物理執(zhí)行計劃,手工保證事務(wù)性的老路。
既然都已經(jīng)全手工了,那還要原來的RDBMS干嘛,于是NoSQL產(chǎn)品誕生了。搭配一些會手寫執(zhí)行計劃手寫事務(wù)的超能力者使用,戰(zhàn)斗力簡直有105這么高。
大家很快就忘記了NoSQL其實是一個對現(xiàn)實妥協(xié)的產(chǎn)物,只有搭配一些精通數(shù)據(jù)存儲引擎知識的人才能用好。
推廣開來之后,廣大吃瓜群眾表示NoSQL一點也不好用啊,自己要管的東西太多啦,我怎么知道要怎么設(shè)計數(shù)據(jù)的物理分布啊,瞎設(shè)計一下查詢起來就效率感人了啊,最終一致又是一個什么鬼啦,想象一下討論怎么嚴(yán)格保證一個“改動了3個entity且有不少if-else分支的方法”的最終一致性,感覺結(jié)論必然只有“呵呵”啊。
于是為了讓廣大吃瓜群眾用得開心,NoSQL的開發(fā)者不得不又開始走上了關(guān)系模型的老路。
延伸閱讀:
二、Access的優(yōu)點
(1)存儲方式簡單,易于維護管理,Access的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb或.accdb)的數(shù)據(jù)庫文件中,便于用戶的操作和管理。
(2)面向?qū)ο?Access是一個面向?qū)ο蟮拈_發(fā)工具,這種基于面向?qū)ο蟮拈_發(fā)方式,使得開發(fā)應(yīng)用程序更為簡便。
(3)界面友好、易操作,Access是一個可視化工具,是風(fēng)格與Windows完全一樣,用戶想要生成對象并應(yīng)用,只要使用鼠標(biāo)進行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設(shè)計器以及數(shù)據(jù)庫向?qū)А⒈硐驅(qū)А⒉樵兿驅(qū)А⒋绑w向?qū)А蟊硐驅(qū)У裙ぞ撸沟貌僮骱啽悖菀资褂煤驼莆铡?br>(4)集成環(huán)境、處理多種數(shù)據(jù)信息,Access基于Windows操作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ撸瑯O大地提高了開發(fā)人員的工作效率,使得建立數(shù)據(jù)庫、創(chuàng)建表、設(shè)計用戶界面、設(shè)計數(shù)據(jù)查詢、報表打印等可以方便有序地進行。
(5)Access支持ODBC(開發(fā)數(shù)據(jù)庫互連,Open Data Base Connectivity),利用Access強大的DDE(動態(tài)數(shù)據(jù)交換)和OLE(對象的聯(lián)接和嵌入)特性,可以在一個數(shù)據(jù)表中嵌入位圖、聲音、Excel表格、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。Access還可以將程序應(yīng)用于網(wǎng)絡(luò),并與網(wǎng)絡(luò)上的動態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫訪問頁對象生成HTML文件,輕松構(gòu)建Internet/Intranet的應(yīng)用。