觀念1:NoSQL是Not Only SQL將NoSQL視為「Not Only SQL」,不只是SQL的意思,也就是說混用關聯式資料庫和NoSQL資料庫來達成最佳的儲存效果,例如前面舉的力可科技就是用NoSQL資料庫來儲存資料量大的用戶狀態資料,但其他資料仍然使用關聯式資料庫,以便善用SQL語法的好處
觀念2:增加機器就能自動擴充資料庫容量
NoSQL資料庫的另一個重要特性是具有水平擴充能力,只要增加新的伺服器節點,就可以不斷擴充資料庫系統的容量。而且可以利用低價的一般等級電腦就能進行水平擴充,不像關聯式資料庫的叢集系統往往需要效能和容量較大的伺服器才能勝任。NoSQL資料庫可以用更低的成本打造出TB等級或PB等級的大型資料庫系統。
水平擴充能力的意思就是只要增加新的伺服器設備,就能自動增加資料庫的容量,從管理角度來看,這也可以減少長期維護資料庫的人力。
觀念3:打破Schema欄位架構的限制
關聯式資料庫必須透過資料庫的Schema欄位架構來確立資料表之間的關聯,Schema通常是事先設計好的架構,上線以後要進行欄位變更非常麻煩,尤其資料量龐大時要變更Schema的難度很高;
NoSQL資料庫則是改用Key-Value資料模式來解決龐大資料的異動困難。Key-Value模式是將一筆資料的結構簡化到只有一個Key值對應到一個Value值,每一筆資料之間沒有關連性,所以,可以任意切割或調整,也可以分散到不同的伺服器中建立副本。
NoSQL資料庫通常是透過簡單的API來新增、更新或刪除資料庫中的內容,有些資料庫則會提供類似SQL語法中的Select查詢機制,不過通常也無法執行複雜的Join指令
觀念4:資料遲早會一致
為了確保資料的完整性,關聯式資料庫採用的交易(Transaction)的設計,特性就是ACID,在SQL執行過程中,確保有交易作為最小運作單位(Atomicity)、異動過程確保整體資料庫的一致性(Consistency)、執行多筆交易時能隔離交易中的資料不受其他交易影響(Isolation)以及交易過程不會變動原始資料的持久性(Durability)。
NoSQL資料庫大多沒有交易的設計,而是採用了另外一個不同的CAP資料庫理論。
CAP理論有三個關鍵,包括資料一致性(Consistent)、可用性(Availability)和中斷容忍性(Partition Tolerance)。理論上無法同時兼顧CAP這三種特性,所以,NoSQL資料庫通常會選擇其中兩種特性來設計,通常是選擇CP或AP。多數NoSQL資料庫選擇的是CP的設計。NoSQL資料庫會採取Eventually Consistency(資料遲早會一致)的作法,因為NoSQL的分散式設計會將資料分散複製到不同節點中,每個節點各自也能異動資料,然後再彼此同步。同步過程就會有時間落差,若同時讀取不同節點上的資料,會發生資料不一致的情況。