SQL 与NoSQL
在絕大部分時候,我們都會首先考慮用關系型數據庫來存儲我們的數據,比如SQLServer,Oracle,MySQL 等等。
關系型數據庫的特點:
1、它以表格的形式,基于行存儲數據,是一個二維的模式。
2、它存儲的是結構化的數據,數據存儲有固定的模式(schema),數據需要適應表結構。
3、表與表之間存在關聯(Relationship)。
4、大部分關系型數據庫都支持SQL(結構化查詢語言)的操作,支持復雜的關聯查詢。
5、通過支持事務(ACID 酸)來提供嚴格或者實時的數據一致性。
但是使用關系型數據庫也存在一些限制,比如:
1、要實現擴容的話,只能向上(垂直)擴展,比如磁盤限制了數據的存儲,就要擴大磁盤容量,通過堆硬件的方式,不支持動態的擴縮容。水平擴容需要復雜的技術來實現,比如分庫分表。
2、表結構修改困難,因此存儲的數據格式也受到限制。
3、在高并發和高數據量的情況下,我們的關系型數據庫通常會把數據持久化到磁盤,基于磁盤的讀寫壓力比較大。
為了規避關系型數據庫的一系列問題,我們就有了非關系型的數據庫,我們一般把它叫做“non-relational”或者“Not Only SQL”。NoSQL 最開始是不提供SQL 的數據庫的意思,但是后來意思慢慢地發生了變化。
非關系型數據庫的特點:
1、存儲非結構化的數據,比如文本、圖片、音頻、視頻。
2、表與表之間沒有關聯,可擴展性強。
3、保證數據的最終一致性。遵循BASE(堿)理論。Basically Available(基本可用); Soft-state(軟狀態); Eventually Consistent(最終一致性)。
4、支持海量數據的存儲和高并發的高效讀寫。
5、支持分布式,能夠對數據進行分片存儲,擴縮容簡單。
?
對于不同的存儲類型,我們又有各種各樣的非關系型數據庫,比如有幾種常見的類型:
1 、KV 存儲, 用Key Value 的形式來存儲數據。比較常見的有Redis 和MemcacheDB。
2、文檔存儲,MongoDB。
3、列存儲,HBase。
4、圖存儲,這個圖(Graph)是數據結構,不是文件格式。Neo4j。
5、對象存儲。
6、XML 存儲等等等等。
這個網頁列舉了各種各樣的NoSQL 數據庫http://nosql-database.org/ 。
NewSQL 結合了SQL 和NoSQL 的特性(例如PingCAP 的TiDB)。
?
總結
以上是生活随笔為你收集整理的SQL 与NoSQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis的诞生历程
- 下一篇: Redis 特性