在vue中引入版本為"echarts": "^5.1.2"圖表
參考網址:https://www.jianshu.com/p/fd7b422d5f93
當前資料庫分為關係型資料庫和非關係型資料庫
關係型資料庫
關係型資料庫:指採用了關係模型來組織資料的資料庫。
關係模型指的就是二維表格模型,而一個關係型資料庫就是由二維表及其之間的聯絡所組成的一個數據組織。
關係模型中常用的概念:
關係:一張二維表,每個關係都具有一個關係名,也就是表名
元組:二維表中的一行,在資料庫中被稱為記錄
屬性:二維表中的一列,在資料庫中被稱為欄位
域:屬性的取值範圍,也就是資料庫中某一列的取值限制
關鍵字:一組可以唯一標識元組的屬性,資料庫中常稱為主鍵,由一個或多個列組成
關係模式:指對關係的描述。其格式為:關係名(屬性1,屬性2, ... ... ,屬性N),在資料庫中成為表結構
關係型資料庫的優點:
1.容易理解:二維表結構是非常貼近邏輯世界的一個概念,關係模型相對網狀、層次等其他模型來說更容易理解
2.使用方便:通用的SQL語言使得操作關係型資料庫非常方便
3.易於維護:豐富的完整性(實體完整性、參照完整性和使用者定義的完整性)大大減低了資料冗餘和資料不一致的概率
關係型資料庫存在的問題
1.網站的使用者併發性非常高,往往達到每秒上萬次讀寫請求,對於傳統關係型資料庫來說,硬碟I/O
是一個很大的瓶頸
2.網站每天產生的資料量是巨大的,對於關係型資料庫來說,在一張包含海量資料的表中查詢,效率是非常低的
3.在基於web的結構當中,資料庫是最難進行橫向擴充套件的,當一個應用系統的使用者量和訪問量與日俱增的時候,資料庫卻沒有辦法像web server
app server
那樣簡單的通過新增更多的硬體和服務節點來擴充套件效能和負載能力。當需要對資料庫系統進行升級和擴充套件時,往往需要停機維護和資料遷移。
4.效能欠佳:在關係型資料庫中,導致效能欠佳的最主要原因是多表的關聯查詢,以及複雜的資料分析型別的複雜SQL報表查詢。為了保證資料庫的ACID特性,必須儘量按照其要求的正規化進行設計,關係型資料庫中的表都是儲存一個格式化的資料結構。
資料庫事務必須具備ACID
特性,ACID
分別是Atomic
原子性,Consistency
一致性,Isolation
隔離性,Durability
永續性。
當今十大主流的關係型資料庫
Oracle,Microsoft SQL Server
Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一個分支),SAP
非關係型資料庫
非關係型資料庫:指非關係型的,分散式的,且一般不保證遵循ACID
原則的資料儲存系統。
非關係型資料庫結構
非關係型資料庫以鍵值對儲存,且結構不固定,每一個元組可以有不一樣的欄位,每個元組可以根據需要增加一些自己的鍵值對,不侷限於固定的結構,可以減少一些時間和空間的開銷。
優點
1.使用者可以根據需要去新增自己需要的欄位,為了獲取使用者的不同資訊,不像關係型資料庫中,要對多表進行關聯查詢。僅需要根據id
取出相應的value
就可以完成查詢。
2.適用於SNS(Social Networking Services)
中,例如facebook,微博。系統的升級,功能的增加,往往意味著資料結構巨大變動,這一點關係型資料庫難以應付,需要新的結構化資料儲存。由於不可能用一種資料結構化儲存應付所有的新的需求,因此,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。
不足:
只適合儲存一些較為簡單的資料,對於需要進行較複雜查詢的資料,關係型資料庫顯的更為合適。不適合持久儲存海量資料
非關係型資料庫的分類
非關係型資料庫都是針對某些特定的應用需求出現的,因此,對於該類應用,具有極高的效能。依據結構化方法以及應用場合的不同,主要分為以下幾類:
面向高效能併發讀寫的key-value資料庫:
key-value
資料庫的主要特點是具有極高的併發讀寫效能Key-value
資料庫是一種以鍵值對儲存資料的一種資料庫,類似Java
中的map
。可以將整個資料庫理解為一個大的map
,每個鍵都會對應一個唯一的值。
主流代表為Redis, Amazon DynamoDB, Memcached,
Microsoft Azure Cosmos DB和Hazelcast
面向海量資料訪問的面向文件資料庫:
這類資料庫的主要特點是在海量的資料中可以快速的查詢資料
文件儲存通常使用內部表示法,可以直接在應用程式中處理,主要是JSON
。JSON
文件也可以作為純文字儲存在鍵值儲存或關係資料庫系統中。
主流代表為MongoDB,Amazon DynamoDB,Couchbase,
Microsoft Azure Cosmos DB和CouchDB
面向搜尋資料內容的搜尋引擎:
搜尋引擎是專門用於搜尋資料內容的NoSQL資料庫管理系統。
主要是用於對海量資料進行近實時的處理和分析處理,可用於機器學習和資料探勘
主流代表為Elasticsearch,Splunk,Solr,MarkLogic和Sphinx
面向可擴充套件性的分散式資料庫:
這類資料庫的主要特點是具有很強的可拓展性
普通的關係型資料庫都是以行為單位來儲存資料的,擅長以行為單位的讀入處理,比如特定條件資料的獲取。因此,關係型資料庫也被成為面向行的資料庫。相反,面向列的資料庫是以列為單位來儲存資料的,擅長以列為單位讀入資料。
這類資料庫想解決的問題就是傳統資料庫存在可擴充套件性上的缺陷,這類資料庫可以適應資料量的增加以及資料結構的變化,將資料儲存在記錄中,能夠容納大量動態列。由於列名和記錄鍵不是固定的,並且由於記錄可能有數十億列,因此可擴充套件性儲存可以看作是二維鍵值儲存。
主流代表為Cassandra,HBase,Microsoft Azure Cosmos DB,
Datastax Enterprise和Accumulo
CAP理論
NoSQL的基本需求就是支援分散式儲存,嚴格一致性與可用性需要互相取捨
CAP理論:一個分散式系統不可能同時滿足C(一致性)、A(可用性)、P(分割槽容錯性)三個基本需求,並且最多隻能滿足其中的兩項。對於一個分散式系統來說,分割槽容錯是基本需求,否則不能稱之為分散式系統,因此需要在C和A之間尋求平衡C(Consistency)
一致性
一致性是指更新操作成功並返回客戶端完成後,所有節點在同一時間的資料完全一致。與ACID的C完全不同A(Availability)
可用性
可用性是指服務一直可用,而且是正常響應時間。P(Partition tolerance)
分割槽容錯性
分割槽容錯性是指分散式系統在遇到某節點或網路分割槽故障的時候,仍然能夠對外提供滿足一致性和可用性的服務。
關係型與非關係型資料庫的比較
1.成本:Nosql
資料庫簡單易部署,基本都是開源軟體,不需要像使用Oracle
那樣花費大量成本購買使用,相比關係型資料庫價格便宜。
2.查詢速度:Nosql
資料庫將資料儲存於快取之中,而且不需要經過SQL
層的解析,關係型資料庫將資料儲存在硬碟中,自然查詢速度遠不及Nosql
資料庫。
3.儲存資料的格式:Nosql
的儲存格式是key,value
形式、文件形式、圖片形式等等,所以可以儲存基礎型別以及物件或者是集合等各種格式,而資料庫則只支援基礎型別。
4.擴充套件性:關係型資料庫有類似join這樣的多表查詢機制的限制導致擴充套件很艱難。Nosql
基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。
5.持久儲存:Nosql
不使用於持久儲存,海量資料的持久儲存,還是需要關係型資料庫
6.資料一致性:非關係型資料庫一般強調的是資料最終一致性,不像關係型資料庫一樣強調資料的強一致性,從非關係型資料庫中讀到的有可能還是處於一箇中間態的資料,Nosql
不提供對事務的處理。
最近的資料庫排名
網站地址:https://db-engines.com/en/ranking
image.png可以發現現在主流的還是關係型資料庫,非關係型資料庫中Redis和MongoDB最受歡迎
後端開發筆記作者:意識流丶
連結:https://www.jianshu.com/p/fd7b422d5f93
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。