從關係型資料庫到非關係型資料庫

2021-06-22 11:26:53 字數 2113 閱讀 3291

自2023年,埃德加

·科德提出關係模型之後,關聯式資料庫便開始出現,經過了40

多年的演化,如今的關係型資料庫具備了強大的儲存、維護、查詢資料的能力。但在關聯式資料庫日益強大的時候,人們發現,在這個資訊**的「大資料」時代,關係型資料庫遇到了效能方面的瓶頸,面對乙個表中上億條的資料,

sql語句在大資料的查詢方面效率欠佳。我們應該知道,往往新增了越多的約束的技術,在一定程度上定會拖延其效率。 在

1998

年,carlo strozzi提出

nosql

的概念,指的是他開發的乙個沒有sql

功能,輕量級的,開源

的關係型資料庫

。注意,這個定義跟我們現在對

nosql

的定義有很大的區別,它確確實實字如其名,指的就是「沒有

sql」

的資料庫。但是

nosql

的發展慢慢偏離了初衷,

carlostrozzi

也發覺,其實我們要的不是

"nosql"

,而應該是

"norelational"

,也就是我們現在常說的非關係型資料庫了。

在關係型資料庫中,導致效能欠佳的最主要因素是多表的關聯查詢,

以及複雜的資料分析型別的複雜

sql報表查詢。為了保證資料庫的acid

特性,我們必須盡量按照其要求的正規化進行設計,

關係型資料庫中的表都是儲存一些格式化的資料結構,每個元組欄位的組成都一樣,即使不是每個元組都需要所有的字段,但資料庫會為每個元組分配所有的字段,這樣的結構可以便於表與表之間進行連線等操作,但從另乙個角度來說它也是關係型資料庫效能瓶頸的乙個因素。

非關係型資料庫提出另一種理念,他以鍵值對儲存,且結構不固定,每乙個元組可以有不一樣的字段,每個元組可以根據需要增加一些自己的鍵值對,這樣就不會侷限於固定的結構,可以減少一些時間和空間的開銷。使用這種方式,使用者可以根據需要去新增自己需要的字段,這樣,為了獲取使用者的不同資訊,不需要像關係型資料庫中,要對多表進行關聯查詢。僅需要根據id

取出相應的

value

就可以完成查詢。但非關係型資料庫由於很少的約束,他也不能夠提供想

sql所提供的

where

這種對於字段屬性值情況的查詢。並且難以體現設計的完整性。他只適合儲存一些較為簡單的資料,對於需要進行較複雜查詢的資料,

sql資料庫顯得更為合適。

目前出現的nosql(not only sql,非關係型資料庫)有不下於25種,除了dynamo、bigtable以外還有很多,比如amazon的******db、微軟公司的azuretable、facebook使用的cassandra、類bigtable的hypertable、hadoop的hbase、mongodb、couchdb、redis以及yahoo!的pnuts等等。這些nosql各有特色,是基於不同應用場景而開發的,而其中以mongodb和redis最為被大家追捧。

以下是mongodb

的一些情況:

mongodb

是基於文件的儲存的(而非表),是乙個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似

json

的bjson

格式,因此可以儲存比較複雜的資料型別。

模式自由

(schema-free)

,意味著對於儲存在

mongodb

資料庫中的檔案,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的檔案儲存在同乙個資料庫裡。

mongo

最大的特點是他支援的查詢語言非常強大,其語法有點類似於物件導向的查詢語言,幾乎可以實現類似關聯式資料庫單錶查詢的絕大部分功能,而且還支援對資料建立索引。

mongo

主要解決的是海量資料的訪問效率問題。因為mongo

主要是支援海量資料儲存的,所以

mongo

還自帶了乙個出色的分布式檔案系統

gridfs

,可以支援海量的資料儲存。由於mongo

可以支援複雜的資料結構,而且帶有強大的資料查詢功能,因此非常受到歡迎。

參考:nosql 

初探難以抗衡關係型資料庫 nosql革命仍要等待

簡單分析靈活的非關係型資料庫nosql

從關係型資料庫到非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

從關係型資料庫到非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

從關係型資料庫到非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...