【云駐共創】華為云數據庫之數據庫基礎知識
前言

數據庫是數據庫系統的核心,數據庫存儲數據的方式決定了數據庫開發的工作方式和方法,以及數據庫涉及的方式方法,比如關系型數據庫和非關系型數據庫在工作中,直接影響到數據庫結構的涉及,以至于影響到業務的實現。
一、數據庫的種類
因為需求的多樣性,數據的不同狀態,數據庫的種類很多,當然分類的方式也有很多,分類方法不同就會有不同的數據庫,下面從兩個角度對數據庫進行分類。
從數據庫的組織方式可以分為:網狀數據庫,關系數據庫,關系數據庫等。
從數據庫管理的角度可以分為:集中式數據庫,分布式數據庫和云數據庫等。
下面分別介紹
1、集中式數據庫
在數據庫發展早期,數據庫系統都是集中式的,一般以主機-終端系統體系結構實現,操作系統,數據庫管理系統與數據庫緊密耦合,組成單一的數據庫系統,當我們進行數據庫設計,數據庫創建,以及數據庫應用系統開發時,用戶使用的是單一的數據庫模式
優點
由于所有數據僅存儲在單個位置,因此更易于訪問和協調數據。
集中式數據庫的數據冗余非常小,因為所有數據都存儲在單個位置。
與所有其他可用數據庫相比,它更便宜。
缺點
在集中式數據庫的情況下,數據流量更多。
如果集中式系統發生任何類型的系統故障,那么整個數據將被破壞。
2、分布式數據庫
隨著網絡技術的進步,特別是移動互聯網的興起,數據量爆炸式增長,數據存儲和管理的規模越來越龐大,致使采用單機數據庫的方式處理數據越來越難以滿足用戶需求,分布式數據庫應用而生了。
數據庫系統由“緊密耦合”變成“松散耦合”的組合方式。分布式數據庫系統將數據庫資源存放在不同的站點,這些站點不共享物理部件,運行在每個站點的數據庫系統擁有實質上的相互獨立性。
在同構分布式數據庫系統中,所有站點都是用相同的數據庫管理系統軟件,他們彼此了解,共同合作處理用戶請求。
在異構分布式數據庫系統中,不同的站點可以使用不同的模式和不同的數據庫管理系統軟件,站點之間可能彼此并不了解,在合作處理事務的過程中,他們可以僅提供有點的功能,模式的差異經常是查詢處理中的主要問題,而軟件的差異成為處理事務的一個障礙。
分布式數據庫存儲通常有如下存儲方式:
(1)復制:是將數據D復制幾個相同的副本,并把每個副本存在著不同的站點上,復制的替代方式是指存儲數據D的一個備份。
(2)分片:是把數據D劃分為若干片,并把每個片存儲在不同的站點上。分片進行數據存儲有兩個不同的方案,水平分片和垂直分片。水平分片通過將數據的每個元組分給一個或多個分片來劃分關系,垂直分片通過對數據屬性進行分離來劃分關系。
(3)分片和復制可以組合使用,對于一個關系,可以劃分幾個片,并且每個片可以有幾個副本。
分布式數據庫也存在一些問題
例如:
眾多節點之間通信會花費大量時間;
數據的安全性和保密性在眾多節點之間會受到威脅;
在集中式系統中能夠有效存取數據的技術,在分布式系統的復雜的存取結構中可能不再適用;
分布式的數據劃分、負載均衡、分布式事務處理和分布式執行技術都需要新的突破。
3、云數據庫
云計算的迅猛發展使得數據庫部署和虛擬化在“云端”成為可能。云數據庫即是部署和虛擬在云計算環境下,通過計算機網絡提供數據管理服務的數據庫。
因為云數據庫可以共享基礎架構,它極大地增強了數據庫的存儲能力,消除了人員、硬件、軟件的重復配置。數據庫作為基礎軟件之一,經過幾十年的發展,市場格局極為固定。但隨著云計算技術不斷走向成熟,以及云計算所帶來的使用模式與理念不斷深入人心,云數據庫近年來迅速崛起,給整個數據庫市場帶來了巨大的顛覆。
云數據庫是部署在“云端”的數據庫系統,將傳統的數據庫系統配置在“云上”。客戶可以與云計算供應商達成協議來獲得具有特定功能和特定數據存儲的特定數量的機器,機器數量和存儲數量都可以根據需要來增加和縮減。除了提供計算服務,很多供應商還可以提供其它的服務。不同于傳統數據庫,云數據庫通過計算存儲分離、存儲在線擴容、計算彈性伸縮來提升數據庫的可用性和可靠性。
優勢
云計算供應商通常運用規模較大的計算機集群,使其能夠容易地按需分配資源,為眾多供應商同時提供云服務。它可以達到從數百萬到數億存儲和檢索數據的能力,同時為成干上萬乃至億萬用戶提供更為復雜的數據服務,具有極強的可用性和可擴展性。基于云的數據庫,同時具備同構和異構系統的特點。在這種情況下,即便計算機客戶之間的位置距離很遠,也可以通過因特網訪問實現所需的數據處理。
在云上直接部署傳統數據庫的主要優點包括易于實現、無需更改和與現有軟件完全兼容等。
缺點
對于傳統數據庫,數據庫大小受到本地存儲大小的限制。使用云存儲可以增加數據庫的容量,但是存儲成本、網絡負載和數據庫更新成本仍然很高,并且與副本數量成正比。傳統數據庫系統與數據庫大小相關的操作(如備份)會限制數據庫大小,但云數據庫則因為容量過大會造成數據庫備份的時間過長。
解決方案
為了解決上述種種矛盾和限制,云數據庫系統將數據庫系統分為計算層和存儲層,讓每一層都承擔部分數據庫功能。計算節點只將日志記錄發給存儲層,存儲層知道如何用日志記錄來更新和生成頁面。
GaussDB(for MySQL)
GaussDB(for MySQL)就是部署在“華為云”上的一款數據庫管理系統軟件。它通過計算機網絡進行數據庫操縱,以及數據庫事務管理和支持數據庫應用系統開發,吸收了將數據庫的計算與存儲分離的設計理念,實現了更高的可用性,更低的存儲成本和更好的性能。
二、存儲引擎
數據庫存儲引擎是數據庫底層軟件組件。其功能作用就是最大程度地為了保障數據庫的操作安全和性能優化。數據庫的存儲引擎決定了表在計算機中的存儲方式,不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能。
數據庫操作是對數據庫中的數據所進行的一系列操作,包括讀取數據、寫數據、更新或修改數據、刪除數據等。數據庫存儲引擎保證了這些數據處理的順利進行,同時也提供了各種特定的技術支撐。
目前許多數據庫管理系統都支持多種不同的存儲引擎。
GaussDB(for MySQL)支持(InnoDB、MyISAM、MEMORY、Archive、MERGE、
EXAMPLE、CSV、BLACKHOLE、FEDERATE)9種存儲引擎。
一方面,保證存儲的數據具有原子性、一致性、隔離性和持久性;另一方面,能夠提高并發讀寫速度,提高數據庫管理系統的性能。
下面介紹常用的4種存儲引擎。
2.1、InnoDB存儲引擎
InnoDB給表提供了事務處理、回滾、崩潰修復能力和多版本并發控制的事務安全,支持外鍵引用完整性約束;支持提交、回滾和緊急恢復功能來保護數據,還支持行級鎖定。它將數據存儲在集群索引中,從而減少了基于主鍵的查詢的I/O。
2.2、MyISAM
MyISAM存儲引擎管理非事務性表,提供高速存儲和檢索,支持全文搜索。支持3種不同的存儲格式;包括靜態型、動態型和壓縮型;其中靜態型是MyISAM的默認存儲格式,它的字段是固定長度的;動態型包含變長字段,記錄的長度不是固定的;MyISAM的優勢在于占用空間小,處理速度快。缺點是不支持事務的完整性和并發性。
2.3、MEMORY存儲引擎
MEMORY是一類特殊的存儲引擎,提供內存中的表,可以比在磁盤上存儲數據更快地實現訪問。它用于快速查找引用和其他相同的數據,使用存儲在內存中的內容來創建表,且數據全部放在內存中。每個基于MEMORY存儲引擎的
表實際對應一個磁盤文件。該文件的文件名與表名相同,該文件中只存儲表的
結構;MEMORY默認使用哈希索引,速度比使用B型樹索引快,當然如果你
想用B型樹索引,可以在創建索引時指定。
2.4、Archive存儲引擎
Archive 存儲引擎只支持INSERT和SELECT操作;用于存儲大量數據,不支持索引,使用zlib算法可將數據行壓縮后存儲;Archive存儲引擎非常適合存
儲歸檔數據,比如日志信息。但是它本身并不是事務安全的存儲引擎,它的
設計目標是提供高速的插入和壓縮功能。
三、數據庫創建與維護
創建數據庫是數據庫操作的首要任務,通常是一次性完成,然后就是數據庫的維護工作,而數據庫維護的操作則是經常性的工作。在數據庫管理系統中,只有系統管理員能夠創建數據庫。對于數據庫創建和維護的操作而言,前期的數據庫設計工作一定要確認無誤,要設計好數據庫的模式,即設計好數據庫中所有表
的結構,以及表間的關聯。
以下我們以“新華大學學生信息管理系統”數據庫設計結果為例,介紹在GaussDB(forMySQL)中創建數據庫的一般方法。
1、創建數據庫
創建數據庫的過程,主要是定義數據庫的名稱、大小、所有者和存儲數據庫的文件。創建數據庫的方法很多,不同數據庫管理系統軟件操作有差異,GaussDB(for MySQL)常用的方法有使用SQL語句創建數據庫和使用“創建數據庫視圖”工具來完成。
1.使用SQL語句創建數據庫
CREATE DATABASE [IF NOT EXISTS]
[[DEFAULT] CHARACTER SET
[[DEFAULT] COLLATE
(1)IF NOT EXISTS:在創建數據庫前判斷,該數據庫尚不存在時才執行操作。
(2)[DEFAULT]CHARACTER SET:指定數據庫的字符集。
(3)[DEFAULT]COLLATE:指定字符集的默認校對規則;
(4)
(5)
(6)
舉個例子:
使用SQL語句創建數據庫(xinhua_gaussdb)。
(1)輸入如下命令:
CREATE DATABASE IF NOT EXISTS xinhua_gaussdb;
(2)在“新建數據庫”窗口中,輸入創建數據庫的名稱(xinhua_gaussdb),單擊“確定”按鈕,完成xinhua_gaussdb數據庫的創建。
2.使用前端工具創建數據庫(xinhua_gaussdb)。
(1)在“云數據庫GaussDB-數據管理服務-控制臺”窗口中,單擊“新建數據庫”按鈕,進入“新建數據庫”窗口,如圖所示。
(2)在GaussDB(for MySQL)管理控制平臺中,執行SQL命令,完成xinhua_gaussdb空數據庫的創建。
2、維護數據庫
數據庫一旦創建完成,在使用數據庫的同時,需要維護數據庫的正常運行。通過以下的數據庫操作,我們可以了解數據庫的相關信息,也可以更改數據庫的一些屬性。
2.1.打開數據庫
在GaussDB(for MySQL)中,使用數據庫之前,需要先打開要操作的數據庫。在命令行打開數據庫命令:
USE database name;
看例子:打開數據庫(xinhua_gaussdb)。
(1)輸入如下命令:USE xinhua_gaussdb;
(2)在GaussDB(for MySQL)管理控制平臺中,執行SQL命令,完成打開xinhua_gaussdb數據庫的操作。
2.2.查看數據庫信息
在命令行查看數據庫列表:SHOW DATABASES[LIKE'database_name'];
(1)LIKE從句是可選項,用于匹配指定的數據庫名稱:
(2)LIKE從句可以部分匹配,也可以完全匹配。
舉個例子:查看數據庫列表。
(1)輸入如下命令:
SHOW DATABASES LIKE 'xinhua%';
(2)在GaussDB(for MySQL)管理控制平臺中,執行SQL命令,如圖所示,給出了xinhua開頭的數據庫列表。
2.3.修改數據庫
在數據庫使用過程中,有時用戶會對原有的數據庫設置感到不能滿足需求,需要對數據庫進行修改;有時也會因原先創建數據庫時考慮不周而需要對數據庫進行修改。在 GaussDB(for MySQL)中,可以使用ALTER DATABASE 來修改已經被創建或者存在的數據庫的相關參數。
修改數據庫SQL語句:
ALTER DATABASE database_name {
[DEFAULT]CHARACTER SET character_set_name|
[ DEFAULT ] COLLATE collate_name}
幾點說明:
(1)ALTER DATABASE用于更改數據庫的全局
(2)需要獲得數據庫ALTER權限;
(3)數據庫名稱可以忽略,此時對應默認數據庫;
(4)CHARACTER SET子句用于更改默認的數據庫字符集。
舉個例子:修改數據庫信息。
(1)輸入如下命令:
ALTER DATABASE xinhua_gaussdb CHARACTER SET UTF8MB4;
(2)在GaussDB(for MySQL)管理控制平臺中,執行SQL命令,完成對
xinhua_gaussdb數據庫的參數設置。
2.4.刪除數據庫
數據庫若有損壞,或數據庫不再使用,或數據庫不能運行,這就需要對這些數據庫進行刪除操作。
刪除數據庫SQL語句:
DROP DATABASE [IF EXISTS ] database_name
功能:刪除數據庫。
舉個例子:刪除數據庫(xinhua_gaussdba)。
(1)輸入如下命令:
DROP DATABASE xinhua_gaussdba;
(2)在GaussDB(for MySQL)管理控制平臺中,
執行SQL命令,完成刪除xinhua_gaussdba數據庫。
四、總結
這一篇文章正如文章標題一樣,介紹了一些數據庫的基礎知識。從最早的集中式數據庫,到分布式數據庫,再到現在的云數據庫,講了常見的四種數據庫存儲引擎。最后重點講了一下華為云數據庫GaussDB(for MySQL)的使用,比如創建,修改,刪除等操作,基本上和Mysql的操作習慣是一樣的,我相信可以輕松學會。
本文整理自華為云社區【內容共創】活動第15期。
https://bbs.huaweicloud.com/blogs/345822
任務22:
華為云數據庫之數據庫基礎知識
云數據庫 GaussDB(for MySQL) 上云必讀
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。