nosql是什麼
一、nosql的簡介
NoSQL,指的是非關聯式的資料庫。 NoSQL有時也稱為Not Only SQL的縮寫,是對不同於傳統的關聯式資料庫的資料庫管理系統的統稱。 NoSQL用於超大規模資料的儲存。這些類型的資料儲存不需要固定的模式,無需多餘操作即可橫向擴展。
二、Nosql與關聯式資料庫的差異
#1.儲存方式
關係型資料庫是表格式的,因此儲存在表格的行和列中。他們之間很容易關聯協作存儲,通常存儲在資料集中,就像文件、鍵值對或圖結構。
2.儲存結構
關係型資料庫對應的是結構化數據,資料表都預先定義了結構(列的定義),結構描述了資料的形式和內容。這一點對資料建模至關重要,雖然預定義結構帶來了可靠性和穩定性,但是修改這些資料比較困難。而Nosql資料庫基於動態結構,使用與非結構化資料。因為Nosql資料庫是動態結構,可以很容易地適應資料類型和結構的變化。
3.儲存規範
關係型資料庫的資料儲存為了更高的規範性,把資料分割成最小的關係表以避免重複,獲得精簡的空間利用。雖然管理起來很清晰,但是單一操作設計到多張表的時候,資料管理就顯得有點麻煩。而Nosql資料儲存在平面資料集中,資料經常可能會重複。單一資料庫很少被分隔開,而是儲存成了一個整體,這樣整塊資料更方便讀寫。
4.儲存擴展
這可能是兩者之間最大的區別,關係型資料庫是縱向擴展,也就是說想要提高處理能力,要使用速度更快的計算機。因為資料儲存在關係表中,操作的效能瓶頸可能涉及多個表,需要透過提升電腦效能來克服。雖然有很大的擴展空間,但最終會達到縱向擴展的上限。而Nosql資料庫是橫向擴展的,它的儲存天然就是分散式的,可以透過為資源池添加更多的普通資料庫伺服器來分擔負載。
5.查詢方式
關係型資料庫透過結構化查詢語言來操作資料庫(就是我們通常說的SQL)。 SQL支援資料庫CURD操作的功能非常強大,是業界的標準用法。而Nosql查詢以區塊為單元操作數據,使用的是非結構化查詢語言(UnQl),它是沒有標準的。關係型資料庫表中主鍵的概念對應Nosql中儲存文件的ID。關係型資料庫使用預先定義最佳化方式(例如索引)來加快查詢操作,而Nosql則更簡單更精確的資料存取模式。
6.事務
關係型資料庫遵循ACID規則(原子性(Atomicity)、一致性(Consistency)、(基本上可用(Basically Availble)、軟/柔性事務(Soft-state )、最終一致性(Eventual Consistency))。由於關係型資料庫的資料強一致性,因此對事務的支援很好。關係型資料庫支援對事務原子性細粒度控制,並且易於回滾事務。而Nosql資料庫是在CAP(一致性、可用性、分區容忍度)中任選兩項,因為基於節點的分散式系統中,很難全部滿足,所以對事務的支援不是很好,雖然也可以使用事務,但是並不是Nosql的閃光點。
7.效能
關係型資料庫為了維護資料的一致性付出了巨大的代價,讀寫性能比較差。
而Nosql存儲的格式都是key-value類型的,並且存儲在內存中,非常容易存儲,
而且對於數據的一致性是弱要求。Nosql無需sql的解析,提高了讀寫性能。
8.授權方式
關係型資料庫通常有SQL Server,Mysql,Oracle。主流的Nosql資料庫有redis,成本較大,而Nosql資料庫通常都是開源的。
三、為什麼使用NoSQL ?
今天我們可以透過第三方平台(如:Google ,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日誌已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL資料庫已經不適合這些應用了,NoSQL資料庫的發展也卻能很好的處理這些大的資料。
以上是nosql是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!