什麼是NoSQL資料庫?
什麼是NoSQL?
- 開發人員正在使用一些建立大量的、快速變化的資料型別的應用程式,資料型別有結構化的,半結構化的,非結構話的和多型的樣式
- 12到18個月的瀑布發展週期已經過去了。現在,小團隊在沒日沒夜地工作著,軟體快速更新換代,每週或兩週推送程式碼,甚至會有每天多次的推送程式碼,以更新軟體
- 曾經服務於有限受眾的應用程式,現在必須一直處於開放狀態提供服務,可從不同的裝置訪問並且來自世界各地的訪問者多達百萬級別
- 現在,各個組織都在使用開源軟體、商品伺服器和雲端計算,而不是大型微控制器伺服器和儲存基礎設施的橫向擴充套件架構
NoSQL資料庫的型別
- document databases :每一組key/value,其中value可以是複雜的資料結構,可以稱之為文件。文件可以包括不同的鍵值對,或者鍵陣列,甚至是巢狀關係的文件 例如MongoDB
- Graph stores 是被用來儲存資料網路的資訊,例如社交連線。Graph stores包括Neo4J和Girapha
- key-vaule stores是最簡單的NoSQL資料庫。每一個單獨的項以key和value的形式儲存在資料庫裡。典型的這種資料庫有:Riak和BerkeleyDB。有些key-value stores,例如Redis, 允許value有特定的資料型別
- wide-column stores,例如 Cassandra和Hbase, 優化了大型資料庫的查詢, 將資料以列的形式儲存而不是傳統的以行形式儲存。
NoSQL的優勢
- 大量快速變化的結構化,半結構化與非結構化的資料
- 表結構的快速變化,需求的不斷更新
- 易於使用和靈活的物件導向程式設計
- 地理位置分散的橫向擴充套件架構,而不是昂貴的單片架構
Dynamic schema 動態的模式
Auto-sharding 自動分片
Replication 複製
Integrated caching 整合快取
NoSQL與SQL的對比
NoSQL和SQL對比 |
||
|
SQL databases |
NoSQL databases |
型別 |
只有一種形式(SQL database) |
許多種不同的型別,包括鍵值對儲存,文件儲存,圖形儲存 |
發展歷史 |
開發於1970s |
開發於2000年代末,以處理SQL資料庫的侷限性,特別是可擴充套件性,多結構化資料,地理位置分佈,以及應用程式的快速更新換代 |
舉例 |
MySQL,Oracle,Postgres |
MongoDB,Hbase,Neo4j,Redis,Memcached |
資料儲存模式 |
每個記錄(例如“僱員”)以表的形式儲存為行,每列儲存有關該記錄的特定資料(例如“年齡”,“聘用日期”),非常像電子表格。相關資料儲存在單獨的表中,然後在執行更復雜的查詢時連線在一起。例如,“辦公室”可能儲存在一個表中,“員工”可以儲存在另一個表中。當使用者想要查詢員工的工作地址時,資料庫引擎將“員工”和“辦公室”表連線在一起,以獲取所需的所有資訊。 |
基於資料庫型別的不同。例如,鍵值對儲存和SQL資料庫類似,但只有兩列(key,value),更復雜的資訊有時會以blob在value列儲存。文件資料庫完全取消了表和行的模型,將所有相關的資料儲存在一起,以json或其他格式的儲存在單個文件中。 |
表模式 |
結構和資料型別需要提前確定。如果要儲存資料的新的資訊,整個表必須要修改,在此期間資料庫必須offline |
通常是動態的,具有一些執行資料驗證規則。應用程式可以隨時新增新的欄位,與SQL錶行不同,可根據需要將不同的資料儲存在一起,對某些資料庫(寬列儲存),動態地新增新欄位更具有挑戰性 |
擴充套件 |
垂直新增伺服器。 |
水平新增伺服器 |
是否開源? |
開源(MySQL)與非開源(Oracle)混合 |
開源 |
是否支援事務? |
當然 |
有的情況是支援的(文件資料庫) |
資料的操作 |
專門的語言,select,insert,update |
通過物件導向的api |
資料一致性 |
當然 |
依賴於具體的產品。MongoDB具有可讀性的一致性,其他的提供最終的一致性 |
相關文章
- 為什麼NoSQL資料庫這麼受歡迎?SQL資料庫
- 什麼是NoSQLSQL
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- NoSql資料庫SQL資料庫
- 什麼是皇帝資料庫?資料庫
- Chronicles 是什麼資料庫資料庫
- 什麼是Cassandra資料庫資料庫
- 【資料庫】雲資料庫rds是什麼意思?有什麼優勢?資料庫
- 什麼是資料庫檢視?資料庫
- MySQL資料庫是什麼?linux資料庫運維MySql資料庫Linux運維
- NoSQL資料庫興起SQL資料庫
- 四類NoSQL資料庫SQL資料庫
- 雲資料庫RDS是什麼?雲資料庫RDS有什麼優勢?資料庫
- 什麼是真正的自治資料庫?資料庫
- 到底什麼是雲原生資料庫?資料庫
- 資料庫:外來鍵是什麼資料庫
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 【TcaplusDB知識庫】什麼是TcaplusDB資料庫?資料庫
- MySQL、NoSQL分別是什麼?有什麼區別?MySql
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 初識Redis之NoSQL+RDBMS演化史+什麼是NoSQLRedisSQL
- 帝國cms配置資料庫是什麼資料庫
- MySQL資料庫的優勢是什麼?MySql資料庫
- flask資料庫遷移是什麼意思Flask資料庫
- redis(1)NoSQL資料庫簡介RedisSQL資料庫
- SnappyDB—Android上的NoSQL資料庫APPAndroidSQL資料庫
- 四大類NOSQL資料庫SQL資料庫
- 什麼是NoSQL?這裡給你整明白SQL
- 資料庫是什麼意思?有什麼用?有哪些型別?資料庫型別
- 帝國cms配置資料庫命令是什麼資料庫
- 為什麼PostgreSQL是最成功的資料庫?SQL資料庫
- 前端技術分享:什麼是MongoDB資料庫?前端MongoDB資料庫
- 什麼是大資料?大資料能做什麼?大資料
- 什麼是騰訊雲資料庫 CynosDB?雲資料庫 TencentDB for CynosDB 的特性資料庫
- mysql資料庫連線失敗是什麼原因MySql資料庫
- 什麼是單主資料庫複製? -Vlad Mihalcea資料庫
- 資料庫事務四大特性是什麼?資料庫
- 是什麼影響了資料庫索引選型?資料庫索引