【數據挖掘】國科大蘇桂平老師數據庫新技術課程作業 —— 第四次作業

云數據庫研究

云計算與云數據庫背景

云計算(cloud computing)是 IT 技術發展的最新趨勢,正受到業界和學術界的廣泛關注。云計算是在分布式處理、并行處理和網格計算等技術的基礎上發展起來的,是一種新興的共享基礎架構的方法。它可以自我維護和管理龐大的虛擬計算資源(包括計算服務器、存儲服務器、寬帶資源等等),從而提供各種 IT 服務。用戶在使用云計算提供的服務時按需付費,這不僅降低了使用門檻,也極大地節省了開銷。

隨著云計算技術的不斷升溫,它對各個技術領域的影響開始顯現,其中比較典型的包括數據庫領域。截止到 2011 年 6 月,傳統的數據庫廠商,比如 Oracle、Teradata、IBM、Microsoft 等,都已經推出了基于云計算環境的相關數據庫產品。原來沒有從事數據庫產品開發的知名大公司,比如 Amazon 和 Google 等,也發布了 SimpleDB 和 BigTable 等產品。

云數據庫概述

云數據庫是在 SaaS(software-as-a-service:軟件即服務)成為應用趨勢的大背景下發展起來的云計算技術,它極大地增強了數據庫的存儲能力,消除了人員、硬件、軟件的重復配置,讓軟、硬件升級變得更加容易,同時也虛擬化了許多后端功能。云數據庫具有高可擴展性、高可用性、采用多租形式和支持資源有效分發等特點。

如圖 1 1 1 所示,在云數據庫應用中,客戶端不需要了解云數據庫的底層細節,所有的底層硬件都已經被虛擬化,對客戶端而言是透明的。它就像在使用一個運行在單一服務器上的數據庫一樣,非常方便、容易,同時又可以獲得理論上近乎無限的存儲和處理能力。

在這里插入圖片描述

圖 1????云數據庫應用示意圖

云數據庫與傳統分布式數據庫

分布式數據庫是計算機網絡環境中各場地或節點上的數據庫的邏輯集合。邏輯上它們屬于同一系統,而物理上它們分散在用計算機網絡連接的多個節點,并統一由一個分布式數據庫管理系統管理。

分布式數據庫已經存在很多年,它可以用來管理大量的分布存儲的數據,并且通常采用非共享的體系架構。云數據庫和傳統的分布式數據庫具有相似之處,比如,都把數據存放到不同的節點上。但是,分布式數據庫在可擴展性方面是無法與云數據庫相比的。由于需要考慮數據同步和分區失敗等開銷,前者隨著節點的增加會導致性能快速下降。而后者則具有很好的可擴展性,因為后者在設計時就已經避免了許多會影響到可擴展性的因素,比如采用更加簡單的數據模型、對元數據和應用數據進行分離以及放松對一致性的要求等等。另外,在使用方式上,云數據庫也不同于傳統的分布式數據庫。云數據庫通常采用多租戶模式,即多個租戶共用一個實例,租戶的數據既有隔離又有共享,從而解決數據存儲的問題,同時也降低了用戶使用數據庫的成本。

云數據庫產品

云數據庫供應商主要分為 3 類:

  • 傳統的數據庫廠商:Teradata,Oracle,IBM DB2 和 Microsoft SQL Server
  • 涉足數據庫市場的云供應商:Amazon,Google 和 Yahoo
  • 新興小公司:Vertica,LongJump 和 EnterpriseDB

常見的云數據庫產品如表 1 1 1 所示。

企業產品
AmazonDynamo, SimpleDB, RDS
GoogleBigTable, FusionTable
MicrosoftMicrosoft SQL Server Data Services 或 SQL Azure
OracleOracle Cloud
Yahoo!PNUTS
VerticaAnalysis Database v3.0 for the Cloud
EnerprieseDBPostgres Plus in the Cloud
開源項目Hbase, Hypertable
其它EnerpriseDB,FathomDB, ScaleDB, Objectivity/DB, M/DB:X

表 1????云數據庫產品

Amazon 是云數據庫市場的先行者。Amazon 除了提供著名的 S3 存儲服務和 EC2 計算服務以外,還提供基于云的數據庫服務Dynamo。Dynamo 采用“鍵/值”存儲,其所存儲的數據是非結構化數據,不識別任何結構化數據,需要用戶自己完成對值的解析。Dynamo 系統中的鍵(key)不是以字符串的方式進行存儲,而是采用 mds_key(通過 md5 算法轉換后得到)的方式進行存儲,因此,它只能根據 key 去訪問,不支持查詢。SimpleDB 是 Amazon 公司開發的一個可供查詢的分布數據存儲系統,它是 Dynamo “鍵/值”存儲的補充和豐富。顧名思義,SimpleDB 的目的是作為一個簡單的數據庫來使用,它的存儲元素(屬性和值)是由一個 id 字段來確定行的位置。

Google BigTable 是一種滿足弱一致性要求的大規模數據庫系統。Google 設計 BigTable 的目的,是為了處理 Google 內部大量的格式化及半格式化數據。目前,許多 Google 應用都是建立在 BigTable 上的,比如 Web 索引、Google Earth、Google Finance、Google Maps 和 Search History。BigTable 是構建在其他幾個 Google 基礎設施之上的:首先,BigTable 使用了分布式 Google 文件系統 GFS(Google file system)來存儲日志和數據文件;其次,BigTable 依賴一個高可用的、持久性的分布式鎖服務 Chubby;再次,BigTable 依賴一個簇管理系統來調度作業、在共享機器上調度資源、處理機器失敗和監督機器狀態。

云數據庫領域的研究問題

對于學術界而言,要想在云數據庫中提供類似于現有 DBMS 的豐富功能,比如查詢、索引和事務處理,仍然有許多亟待解決的問題。云數據庫領域中的研究問題主要包括:云數據庫中數據模型設計、編程模型、服務器體系架構設計、事務一致性、基于云數據庫的容災和 SLA(service level agreement)監控、云數據的訪問控制和授權管理、云應用數據訪問體系的調優、云數據生命周期管理、云數據庫與本地數據庫的協同和聯邦設計、測試基準等。

云數據庫的設計可以采用不同的數據模型,不同的數據模型可以滿足不用應用類型的需求,主要包括:鍵/值模型和關系模型。

BigTable 和它的同類開源產品 HBase,提供了一個不同于以往的簡單的、動態的、非關系型的數據模型。BigTable 采用了鍵/值數據模型。在 BigTable 中,包括行列以及相應的時間戳在內的所有數據都存放在表格的單元里。BigTable 的內容按照行來劃分,多個行組成一個小表(Tablet),保存到某一個服務器節點中。這就意味著,每個 Tablet 包含了位于某個區間內的所有數據。對于 BigTable 而言,一個數據簇中存儲了許多表,其中每個表都是一個 Tablet 集合。在最初階段,每個表只包含 1 個 Tablet。隨著表的增長,它會被自動分解成許多 Tablet,每個 Tablet 默認尺寸大約是 100MB ~ 200MB。BigTable 使用一個類似于 B+ 樹的 3 層架構來存儲 Tablet 位置信息。由于 BigTable 采用了鍵/值數據模型,因此不存在表間的聯接操作,這也使得數據分區操作相對簡單,只需要根據鍵的區間來劃分即可。

微軟的 SQL Azure 云數據庫采用了關系模型,它的數據分區方式和 BigTable 有些不同。關系型云數據庫的數據模型涉及行組和表組等相關概。一個表是一個邏輯關系,它包含一個分區鍵,用來對表進行分區。具有相同分區鍵的多個表的集合稱為表組。在表組中,具有相同分區鍵值的多個行的集合稱為行組。一個行組中包含的行總是被分配到同一個數據節點上。每個表組會包含多個行組,這些行組會被分配到不同的數據節點上。一個數據分區包含了多個行組.因此,每個數據節點都存儲了位于某個分區鍵值區間內的所有行。

2 2 2 所示為云數據庫的數據訪問方法。當客戶端請求數據時,它首先向管理器請求一份分區映射圖,管理器向客戶端發送分區映射圖;客戶端收到以后,在圖中進行搜尋,根據鍵值找到自己所需數據的存儲位置;然后,客戶端到指定的數據節點請求數據;最后,由該數據節點把數據返回給客戶端。實際上,為了改進性能,同時也為了避免管理器的性能瓶頸,通常會在客戶端緩存常用的分區映射圖。這樣,客戶端在很多情況下不必與管理器交互就可以直接訪問相應的數據節點。

在這里插入圖片描述

圖 2????云數據庫中的數據訪問方法

云數據庫的安全性也是影響其普及與應用的關鍵因素。云數據庫雖然提供了對海量數據的存儲,但同時也對數據的保密性和訪問控制等安全問題提出了新的挑戰:一方面,一些敏感的數據,比如企業財務數據、醫療機構的病例檔案、政府機構的文件等,必須經過加密才能放到云數據庫中;另一方面,針對眾多的用戶,必須設置不同的訪問控制級別,保證不同層次的用戶只能授權訪問限定范圍內的數據。

云數據管理的新數據模型

傳統關系型數據庫系統在處理超大規模數據的存儲 、高并發的數據訪問、半結構化和非結構化數據存儲等新型應用時已經出現瓶頸。而關系數據模型用關系表示實體及實體之間的聯系,以關系代數為基礎,數據獨立性強,并且其非過程化的數據存取方式大大降低了數據庫編程的難度。非關系數據模型有更好的可擴展性,很好地解決了多機并行處理的瓶頸,存儲容量也不再受限,并且能更好地存儲各種復雜的數據類型,查詢效率也更高。

基于以上的考慮,可以從數據的具體特性出發,結合關系數據模型與非關系數據模型,建立一種新的云數據模型,用新模型中的關系部分處理復雜的事務需求,非關系部分處理復雜的海量數據需求,具體來說就是對數據實體的切分。在傳統的關系數據模型中,實體根據范式要求而被劃分為不同的關系模式;然而在新模型中,可以根據實體的屬性類型對實體再次進行劃分,劃分后的一個實體型由很多子實體組成,并且每個子實體要么屬于關系型,要么屬于非關系型,各個子實體的物理儲存介質都是 shared-nothing 結構。此外,新模型在數據管理的對外接口上,保持已有的關系接口不變,新的功能封裝在已有的關系接口中。在處理新的復雜的數據類型時,首先在實體模式的定義中標記數據的對應屬性(用 Blob 做約束),然后系統模型就會自動轉換到對應的處理模塊,例如當用戶處理事務性較弱的大批量數據操作時,系統就會進行自動轉換。新模型數據實體有低耦合、高內聚的特性,因此有很好的可擴展性;并且不限于存儲基本的數據類型,做到了與結構化數據的關系模型的平滑過渡,有很好的可用性。圖 3 3 3 說明了一個實體型的劃分。

圖 3????實體劃分

由于新模型要同時管理了小字段的結構化數據和大字段的非結構化數據,并且擴展了數據庫管理系統中垂直分片的技術,所以總體上表現為層次結構的數據模型。新數據模型與傳統的層次模型主要有以下幾方面的不同:

  • 整個數據實體只有兩層,關系層和非關系層
  • 關系層和非關系層均由表結構表示數據
  • 關系表中的一個數據項和非關系表中的一個數據項是一一對應的
  • 關系表和非關系表是 n:1 的關系,并且組成倒立的樹形結構
  • 關系層和非關系層的劃分都是針對同一個實體型的數據,屬于同一實體型的橫向分層,不同與傳統的不同實體型之間的縱向分層
  • 由于橫向分層的原因,在處理實體間的無論一對多,還是多對多都很方便,不需要建立冗余結點和虛擬結點,均封裝在系統的關系層中,克服了縱向分層結構的弱點

在非關系層中,只有數據表存儲了實際的大字段數據,包括其 key 及 value。其他都是索引表,二層索引表 Tablet 保存了數據表 Tablet 的地址信息以及其它元數據信息,二層索引表 Tablet 中每行記錄對應一個數據表 Tablet。根索引表 Tablet 保存了二層索引表 Tablet 的地址信息以及其他元數據信息,根索引表 Tablet 中每條記錄對應一個二層索引表 Tablet。數據尋址時,涉及到分散的多臺服務器的磁盤查詢,為了降低磁盤讀取次數,差用變形的 B+ 結構存儲索引表和數據表,每個結點即為一個 Tablet。變形 B+ 樹的很多操作與 3 階 B+ 樹一致,與傳統 B+ 樹有以下幾點不同:

  • 簡化了第一-層根索引結點和第二層索引結點的操作,根索引結點不分裂,永遠只有一個
  • 數據結點的合并和分裂不由B十樹的最小度數或者階數決定,而是根據可自定義的結點大小與其文件大小而定
  • 無論數據插入還是刪除,都在數據結點進行,樹永遠都由兩層索引結點和一層數據結點組成
  • 索引結點(包括根索引結點)的子樹個數等于索引結點的記錄項數目,不由 B+ 樹的最小度數或者階數決定
  • 索引結點的記錄項數目等于可自定義的節點大小除以每行記錄大小

通過與 HBase 作對比,對大字段的數據進行連續寫入和讀取,作者得出了如圖 4 4 4 試驗結果。

在這里插入圖片描述

圖 4????數據寫入(左)與數據讀取(右)對比

可以看出新模型與 HBase 相比,在大字段數據寫入時,效率相當。因為新模型的 Blob 數據寫入語法語義較簡單,與 HBase 相似,都是 key-value 操作,而 Blob 數據索引在關系層的寫人數據量與 Blob 本身相比較小。系統每寫入 1MB 的數據(一行)大概是 0.36 秒,吞吐量為 23Mb/s,當寫入 10000 行時,數據量達到 30GB,在寫入過程中會發生很多次的 tablet 的拆分與合并。在大字段數據讀取時,效率稍低。因為系統首先會分析查詢條件,而且有相當一部分 Blob 數據的復雜查詢都會涉及到關系層中索引的操作。系統每讀取 1MB 的數據(一行)大概是 0.1 秒,吞吐量為 80Mb/s。

從數據庫到云計算:亞馬遜的大數據

云計算有 SaaS、 PaaS、laaS 三層,亞馬遜著力的是 IaaS 的底層建設。亞馬遜云計算解決方案和網絡服務部高級經理在接受媒體采訪時表示,在網絡互聯的需求之上,直接就是亞馬遜的最底層的IT基礎架構 AWS,包括計算、存儲、內容分發等;在 AWS 基礎上,用戶才可以構建自己的應用層,這些應用層包括構建數據庫、應用服務器;最上層是應用軟件。亞馬遜已經不是一個云服務提供商,而是云基礎設施供應商。

亞馬遜的 IaaS 以彈性計算云 EC2、存儲云 S3 為主。分析師和投資者目前主要通過 AWS 提供的 S3 服務中存儲的數據量來了解 AWS 的發展情況,S3 主要銷售基于云計算系統的存儲空間。亞馬遜的數據顯示,2011 年亞馬遜云服務 S3 的對象量翻了 3 番,增加了 5000 億對象,相當于每個季度增加 1250 億對象。據美國調查公司 451 Group 的報告,AWS 已經占據了美國 59% 的基礎設施及服務(IaaS)市場份額,領先優勢相當明顯。

AWS 提供的另一個主要服務為 EC2,該服務提供基于云計算系統的額外計算能力。根據云計算專家蓋伊·羅森的調查,2011 年 1 月,全球排名前 50 萬的網站中有 3674 家網站使用該服務,較去年同期增長了近 50%。這使得亞馬遜超過 Rackspace Hosting,成為全球最大的云計算服務提供商。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django多對多ManyToManyField字段

Django是一個支持多對多關系的Web框架,可以在模型中定義多對多關系。多對多關系通常涉及兩個實體之間的復雜交互,例如用戶和組之間的關系,或者課程和學生之間的關系。在Django中,可以使用ManyToManyField字段來定義多對多關系。 …

[足式機器人]Part4 南科大高等機器人控制課 Ch05 Instantaneous Velocity of Moving Frames

本文僅供學習使用 本文參考: B站:CLEAR_LAB 筆者帶更新-運動學 課程主講教師: Prof. Wei Zhang 南科大高等機器人控制課 Ch05 Instantaneous Velocity of Moving Frames 1.Instantanenous Velocity of Rotating Frames2.Instantanenous Veloc…

機器學習基礎入門

機器學習 引言 介紹機器學習的重要性和應用領域。簡要說明機器學習與人工智能的關系。 在當今迅速發展的技術世界中,機器學習已經成為一項不可或缺的技術,它正在改變我們解決問題和理解世界的方式。機器學習,作為人工智能(AI&a…

最新Redis7持久化(權威出版)

首先我們要知道什么是持久化:持久化是指將數據保存到磁盤上,以確保在Redis服務器重啟時數據不會丟失。 Redis支持兩種主要的持久化方式:RDB持久化和AOF持久化 下面讓我依次給你介紹一下: RDB持久化 作用 這是將Redis數據保存…

Java8新特性 - Stream

一、特性 Java 8引入的Stream API為集合&#xff08;Collections&#xff09;提供了一種聲明式的處理方式&#xff0c;支持豐富的操作&#xff0c;包括篩選、映射、歸約等。以下是一些Stream的主要功能和使用方式的案例&#xff1a; 創建Stream&#xff1a; List<String&…

Java語言概述及保姆級入門教程(JDK 17版本)

筆記來自尚硅谷老師-康老師 學習教程&#xff1a;https://www.bilibili.com/video/BV1PY411e7J6/?spm_id_from333.337.search-card.all.click 1、Java基礎全程脈絡圖 1.1 本章專題與脈絡 2. 抽絲剝繭話Java 2.1 當前大學生就業形勢 麥可思研究院發布了《2022年中國大學生就業…

TCP 和UDP 到底有啥區別

TCP&#xff08;傳輸控制協議&#xff09;和UDP&#xff08;用戶數據報協議&#xff09;是互聯網上常用的兩種傳輸層協議&#xff0c;它們在數據傳輸方式和特性上有顯著的區別。下面是TCP和UDP的主要區別&#xff1a; 連接性: TCP 是一種面向連接的協議。在數據傳輸前&#xf…

C#圖像處理OpenCV開發指南(CVStar,09)——邊緣識別之Scharr算法的實例代碼

1 邊緣識別之Scharr算法 算法文章很多&#xff0c;不再論述。 1.1 函數原型 void Cv2.Scharr(src,dst,ddepth,dx,dy,scale,delta,borderType&#xff09; 1.2 參數說明 src 代表原始圖像。dst 代表目標圖像。ddepth 代表輸出圖像的深度。CV_16Sdx 代表x方向上的求導階數…

uniApp應用軟件在運行時,不符合華為應用市場審核標準。解決方案合集!

&#xff08;暫時用不到的也建議收藏一下&#xff0c;因為文章持續更新中&#xff09; 最新更改時間&#xff1a;20023-12-10 第一次做App應用開發相信大家一定都遇到過華為應用市場審核的“駁回”&#xff01; 有些問題一看就明白可以立馬修改&#xff0c;而有一些問題修改意…

Dubbo入門直接上手,結合微服務詳解

Dubbo 高性能、輕量級的 Java RPC 框架 RPC&#xff1a; Remote Procedure Call 遠程過程調用&#xff0c;簡單來說就是它允許一個計算機程序通過網絡請求調用另一個計算機上的程序&#xff0c;就像本地調用一樣。有非常多的協議和技術來都實現了RPC的過程&#xff0c;比如&a…

Elasticsearch 8.9 refresh刷Es緩沖區的數據到Lucene,更新segemnt,使數據可見

一、相關API的handler1、接受HTTP請求的hander(RestRefreshAction)2、往數據節點發送刷新請求的action(TransportRefreshAction)3、數據節點接收主節點refresh傳輸的action(TransportShardRefreshAction) 二、在IndexShard執行refresh操作1、根據入參決定是使用lucene提供的阻塞…

【華為數據之道學習筆記】3-8以確保合規遵從為核心的外部數據管理

一、以確保合規遵從為核心的外部數據管理 外部數據是指華為公司引入的外部組織或者個人擁有處置權利的 數據&#xff0c;如供應商資質證明、消費者洞察報告等。外部數據治理的出發點是合規遵從優先&#xff0c;與內部數據治理的目的不同。 外部數據的治理主要遵循以下原則。 1&…

【設計模式--創建型--原型模式】

設計模式--創建型--原型模式 原型模式概述結構實現結果 案例代碼結果使用場景 擴展&#xff08;深\淺克隆&#xff09;淺克隆演示&#xff1a;結果&#xff1a;使用深克隆&#xff08;利用對象流&#xff09;結果 原型模式 概述 用一個已經創建的實例作為原型&#xff0c;通過…

Go簡單了解

0.一直很好奇,go是不是像傳說中的速度快,解決了多線程問題,快速進行了解了解,和java進行對比,他是怎么解決語言發展的問題的…,所有語言都是差不多的,只是熟練程度不同而已 1.go圖標是土撥鼠,2009發行 docker使用go,解決了并發問題 google facebook 騰訊 百度 七牛云 京東 小米…

Spring Cloud Gateway + Nacos + LoadBalancer實現企業級網關

1. Spring Cloud Gateway 整合Nacos、LoadBalancer 實現企業級網關 前置工作&#xff1a; 創建 SpringBoot 多模塊項目創建網關&#xff08;gateway-service&#xff09;、用戶&#xff08;user-service&#xff09;模塊用戶模塊添加 Nacos discovery 支持以及 Spring Web&am…

gitbash下載安裝

參考教程 零、下載 官網地址 2.43.0win64 鏈接&#xff1a;https://pan.baidu.com/s/16urs_nmky7j20-qNzUTTkg 提取碼&#xff1a;7jaq 一、安裝 圖標組件&#xff08;Additional icons&#xff09;&#xff1a;選擇是否創建桌面快捷方式&#xff1b;桌面瀏覽&#xff08;Win…

設計模式--命令模式的簡單例子

引入&#xff1a;以一個對數組的增刪改查為例。通過命令模式可以對數組進行增刪改查以及撤銷回滾。 一、基本概念 命令模式有多種分法&#xff0c;在本文中主要分為CommandMgr、Command、Receiver. CommandMgr主要用于控制命令執行等操作、Command為具體的命令、Receiver為命…

逸迅科技丁紅陽:三種能力幫助企業打造GBI “護城河”

大數據產業創新服務媒體 ——聚焦數據 改變商業 近日&#xff0c;由上海市經濟和信息化委員會、上海市科學技術委員會指導&#xff0c;數據猿與上海大數據聯盟聯合主辦的“2023企業數智化轉型升級發展論壇”在上海舉行。本次論壇以“釋放數字價值驅動智能升級”為主題&#xf…

piakachu越權漏洞

水平越權 首先打開這一關&#xff0c;在右側有一些提示&#xff0c;我們可以看到 然后我們隨便輸入一組信息即可&#xff0c;可以在url中看到這樣的字段 當我們嘗試在url中直接更換另一個用戶名時可以發現&#xff0c;直接切換到了另一個用戶的身份 垂直越權 這里可以看到右邊…

QML和C++交互中,實現C++中connect到qml的信號,再從qml發射信號傳遞數據給C++的一種方式

1.需求&#xff1a; 假設我們有一個需求&#xff0c;要求在用戶點擊列表中的項目時&#xff0c;不僅在控制臺上輸出項目的名稱&#xff0c;還要在C端進行一些處理。我們希望在C端能夠接收到用戶點擊的項目名稱&#xff0c;并進行相應的處理。 2.分析&#xff1a; 在這種情況…