官术网_书友最值得收藏!

1.2.2 NoSQL相關的基本概念

NoSQL得到廣泛的普及主要有3個驅動力。

首先是需求。在過去的幾年間,互聯網與移動的流量呈現出了爆發性的增長,現在很多大公司所處理的數據規模是幾年前幾乎不曾想到的。傳統的關系型數據庫在設計時從未考慮過能夠比較容易地實現跨節點可伸縮這一特性,因此NoSQL在那些需要能夠實現快速、輕松且低成本、可伸縮的公司中開始流行起來。

其次是可用性。在過去幾年間,開源軟件開始成熟起來,現在已經出現了很多成熟的開源NoSQL存儲,這樣公司就可以輕松找到滿足其需求的數據存儲方案。

最后是新興性。現在一定存在使用NoSQL構建,但關系型數據庫卻更加適合的應用。然而,隨著NoSQL逐漸從新生事物變成主流,技術人員在選擇適合其應用場景的解決方案時,會變得更理性一些。

下面介紹一些與NoSQL相關的基本概念。

1. 分布式數據庫

分布式數據庫的基本思想,是將原來集中式數據庫中的數據分散地存放至多個通過網絡連接的數據存儲節點之上,從而獲得更大的存儲空間和更高的并發量。

分布式數據庫系統可以通過多個異構、位置分布、跨網絡的計算機節點組成。每臺計算機節點中,都可以包含有數據庫管理系統的一份完整或部分拷貝副本,并且具有自己局部的數據庫。多臺計算機節點利用高速計算機網絡,將物理上分散的多個數據存儲單元相互連接起來,共同構建一個完整的、全局的、邏輯上集中的和物理上分布的大型數據庫系統。

適用于大數據存儲的分布式數據庫具有以下三大特征,簡稱“三高”,具體含義如下:

(1)高可擴展性:指分布式數據庫具有高可擴展性,能夠動態地增添存儲節點,以實現存儲容量的線性擴展。

(2)高并發性:指分布式數據庫能及時響應大規模用戶的讀與寫請求,能夠對海量數據進行隨機的讀與寫操作。

(3)高可用性:指分布式數據庫提供容錯機制,能夠實現數據庫數據冗余備份,保證數據和服務的高度可靠性。

2. 數據庫與數據倉庫

數據庫(比如:Oracle、MySQL、PostgreSQL)主要用于事務處理,數據倉庫(Datawarehouse,比如HBase、Amazon Redshift、Hive)主要用于數據分析。

數據庫和數據倉庫在概念上有很多相似之處,但在本質上有聯系也有差別:

· 數據倉庫:是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化的(Time Variant)數據集合,用于支持管理決策。

· 數據庫:是按照一定數據結構來組織、存儲和管理數據的數據集合。

數據倉庫所在層面比數據庫更高,換句話說,就是一個數據倉庫可以通過不同類型的數據庫實現。圖1-4從結構設計、存儲內容、冗余程度和使用目的四個方面展示了數據庫與數據倉庫的差異。

圖1-4 數據庫與數據倉庫的差異

3. 云計算與虛擬化

在一個大的服務器中,往往有著十幾個核心,幾千個TB的內存,而如果只將數據和計算都直接分配給主機,那么將造成資源的浪費。虛擬化則能夠解決此問題,實際的使用也證實了虛擬化對資源利用率有較大的提升。

· 云計算(Cloud Computing):是基于互聯網的相關服務的增加、使用和交付模式,通常涉及通過互聯網來提供動態、易擴展且虛擬化的資源,其中云只是網絡、互聯網的一種比喻說法。目前廣為接受的是美國國家標準與技術研究院(NIST)給出的定義:“云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問,進入可配置的計算資源(網絡、服務器、存儲、應用軟件、服務等)共享池,這些資源能夠被快速地提供,只需要投入非常少的管理工作,或者與服務供應商進行很少的交互”。

· KVM(Kernel-based Virtual Machine)虛擬機:是開源Linux原生的全虛擬化解決方案,它基于X硬件的虛擬化擴展(Intel VT或者AMD-V技術)。KVM是基于CPU輔助的全虛擬化方案,需要CPU虛擬特性的支持。一個KVM虛擬機,即一個Linux QEMU-KVM進程,與其他Linux進程一樣被Linux進程調度器調度;KVM虛擬機包括虛擬內存、虛擬CPU和虛擬I/O設備,其中內存和CPU的虛擬化由KVM內核模塊負責實現,I/O設備的虛擬化由QEMU負責實現;KVM客戶機系統的內存是QEMU-KVM進程的地址空間的一部分;KVM虛擬機的vCPU作為線程運行在QEMU-KVM進程的上下文中。

· 云計算和虛擬化的關系:云計算僅僅是一個概念,而不是一種具體技術,但虛擬化卻是一種具體技術。虛擬化是指把硬件資源虛擬化,實現隔離性、可擴展性、安全性、資源可充分利用等。兩者看似不相關,背后卻有著千絲萬縷的關系。虛擬化一般是將物理的實體,通過軟件模式,形成若干虛擬存在的系統,其真實運作還是在實體上,只是劃分了若干區域或者時域;而云計算的基礎是虛擬化,但虛擬化僅僅是云計算的一部分,云計算是在虛擬化出若干資源池以后的應用。

主站蜘蛛池模板: 宣城市| 寻乌县| 黎平县| 怀安县| 江西省| 富蕴县| 东阿县| 门头沟区| 义马市| 清镇市| 万荣县| 樟树市| 仙游县| 钟祥市| 崇仁县| 芜湖县| 日土县| 马尔康县| 毕节市| 尼木县| 普兰县| 昌都县| 蓬溪县| 新蔡县| 万山特区| 宣恩县| 吉安市| 云霄县| 虞城县| 诸城市| 贵溪市| 毕节市| 沂源县| 吉木萨尔县| 康保县| 沁阳市| 江川县| 西乌| 东阿县| 定安县| 个旧市|