對關係型資料庫侷限性的重新思考

2021-09-01 22:47:11 字數 1975 閱讀 9602

在nosql的歷史上有很多曲折反覆,所有曲折程序和定義不明確算所帶來的最不幸的一部分,就是失去了一些很有價值的東西。這篇帖子不是關於nosql定義的不同,而是表明所有被歸類為專屬於無模式的的

資料庫世界中的巨大好處,也可以輕鬆應用到關聯式資料庫世界中。

忘掉遷移

也許關於提到無模式資料庫最大好處就是你只要一提交**就它可以很好的

工作。大約五年前heroku發布 git push heroku master部署平台讓你可以輕鬆的在git上面提交**並讓他工作,couchdb 和 mongodb在資料庫方面做了樣的事情。在你在資料庫上工作時你沒有必要執行 create table 或 alter table進行遷移。你只要構建和發布你的程式而不用擔心資料遷移是多麼棒的事情啊。

# assuming a column thats referenced doesn』t exist

# automatically execute relevant bits in your orm

# this isn』t code meant for you to run

alter table foo add column bar varchar(255); # this is near instant

# set your default value in your orm

update table foo set bar = 』default value』 where bar is null;

alter table foo alter column bar not null;

這經常被看做是關聯式資料庫的乙個侷限,然而其實沒有必要。你可以看到即使在無模式的資料庫中關係依然存在,只是你在應用層操作管理它。說在更高的框架層次或使用orms無法處理資料遷移過程是沒有道理的。在今天,在沒有引入當機時間和可以讓開發者更快的遷移沒有自動拷貝的資料的意義上,給關聯式資料庫新增乙個欄位的過程還是很簡單的。

rails/django(你選用的框架)已經注意到讓資料列存在的需求,適當的修改後你可以在你**中像管理文件關係一樣的方式使用它,當然這是乙個共同的讓人懊惱的的過程,但是說它不能被postgresql完全處理和在orm中不能直接處理它是沒有道理的。

文件

其他乙個強有力的說明例子是針對與mongodb/couchdb陣營的文件儲存,在這個例子中我將給出文件直接轉換為json物件的替代方案。json在移植性方面是一種很棒而又簡單的資料模型,但在應用層你必須要轉換它卻也是一件很痛苦的事情。是的你看到的沒錯,postgres現在有個json資料型別,而且json資料型別也不斷的被一些其他的關係型資料庫所採用。當我沒有奢望她在json上的改進時, db2對json的支援有點令我吃驚

在資料列中存在json 格式是很有意義的,在你想把所有的結果當做整體json物件的時候,作為完全的json儲存還是有點限制。postgres 的一大買點就是你只用乙個儲存過程row_to_json就可以把一整行轉換為json物件。

還有就是你有一些高層框架可以利用,在它們的支援下,你可以一邊讓那些強型別的資料表存在,但一邊你可以靈活地將他們對映到json物件,這樣是很有意義的。

出箱即用的介面

這不是無模式資料庫的專屬特性,無模式的資料庫中一些比如couch 開箱即用特性多一點,另一些少一點。曝露一些rest 風格的介面的概念並不是新創的,不久前已經在關聯式資料庫上實驗過了。一些事情顯然需要重申一下,這個例子清楚的表明,在重新構建操作介面和降低新手的入職門檻方面,確實降低了時間。

不幸地是,現在對於postgres 或其他關聯式資料庫,並沒有十足的進展。相反地其他資料庫從一開始就提供這些介面。

何去何從

在無模式資料庫或其他更廣泛的資料庫中,這種轉變並不是很大,它們沒有納入更多的選擇。然而同時這種轉變有很多益處,最顯著的乙個就是,對傳達怎麼擴充套件所謂的」關係型資料庫」產生了積極的影響。

關係型資料庫與非關係型資料庫的區別?

當前主流的關係型資料庫有oracle db2 microsoft sql server microsoft access mysql等。非關係型資料庫有 nosql cloudant。nosql和關係型資料庫比較?優點 1 成本 nosql資料庫簡單易部署,基本都是開源軟體,不需要像使用oracle...

關係型資料庫與非關係型資料庫的區別?

當前主流的關係型資料庫有oracle db2 microsoft sql server microsoft access mysql等。非關係型資料庫有 nosql cloudant。nosql和關係型資料庫比較?優點 1 成本 nosql資料庫簡單易部署,基本都是開源軟體,不需要像使用oracle...

關係型資料庫和非關係型資料庫的區

關係型資料庫只是資料庫的乙個特例,型別有嚴格的限制。科學家們用形式化定義了關係以及各種運算,讓它們看起來高大上,但是沒什麼卵用。然後又製造出各種正規化包括白痴nf來簡化資料庫,殊不知不用關係型即可提高效率。然後就有了所謂的nosql,其實這是一種復古。或許人們以後就會發現純粹的kv儲存也有不能滿足的...