一.傳統數據庫技術回顧
數據庫就是存儲數據的,那麼存儲數據就用txt就行了啊,爲什麼要有數據庫?
理由之1: 數據庫有行、列的概念,數據有關係,數據不是散的。
老牌數據庫,比如MySQL、SQL Server、Oracle、Access。這些數據庫,我們管他們叫做結構型數據庫。爲什麼?因爲每個表中,都有明確的字段,每行記錄,都有這些字段。不能有的行有,有的行沒有。
理由二:數據庫能夠提供非常方便的接口,讓增刪改查操作變得簡單
我們的老牌數據庫,都無一例外的使用SQL語言,管理數據庫。
SQL就是structure query language。
比如,查詢所有女生: SELECT * FROM step1 WHERE xingbie = '女';
再比如,查詢所有女生,並且年齡20~24之間,且在北京:
1 SELECT * FROM step1 WHERE xingbie = '女' AND nianling < 24 AND nianling >= 20 AND xianzaisuozaidi = '北京'; |
理由之三:數據庫不能自己玩兒,要給向PHP、.net、jsp等語言提供接口。
用php這些語言,能夠向數據庫之中增刪改查。
老牌數據庫,都是結構型數據庫,現在出了什麼問題?
比如,我們現在想往一個已經有1000條數據的數據庫中增加一個字段“高中信息”。
之前已經存在的數據,實際上不需要增加這個字段。因爲這些用戶已經填寫完畢表單了,不需要再手機高中信息了。我們的意圖就是在今後註冊的用戶,需要填寫高中信息。但是,我們剛纔說了,所謂的字段,是表的一個結構。所有的行都必須擁有,不能有的行有這個字段,有的行沒有這個字段。
可想而知,大數據時代,數據庫中有100萬條數據都算少的。我們如果要動字段,時間太長。
所以,字段這個東西,太不靈活。
數據不靈活。一個字段,需要是同樣類型的數據。不能一行記錄是文本,一行記錄是數字。
非結構型數據庫NoSQL應運而生。
NoSQL是個怪胎,無法挑戰老牌數據庫,但是在大數據時代有自己的意義。
二.NoSQL
非結構型數據庫。沒有行、列的概念。用JSON來存儲數據。
集合就相當於“表”,文檔就相當於“行”。
文檔就是JSON,上下文語境中,也是JavaScript範疇,所以我們的數據庫也是JS範疇的東西,JS全棧。
因此,我們總結NoSQL數據庫在以下的這幾種情況下比較適用:1、數據模型比較簡單;2、需要靈活性更強的IT系統;3、對數據庫性能要求較高;4、不需要高度的數據一致性;5、對於給定key,比較容易映射覆雜值的環境。
我們看,有些系統,特別需要篩選。比如,篩選出所有女生大於20歲的。那麼SQL型數據庫,非常擅長!因爲它有行、列的概念。
但是,有些系統,真的不需要進行那麼多的篩選,比如站內信。站內信只需要存儲就好了。不需要篩選。那麼NoSQL的。
NoSQL不是銀彈,沒有資格挑戰老牌數據庫,還是特定情況下,是適合的。