秒懂?dāng)?shù)倉的前世:DBMS和OLTP到底是啥?(上篇)
編輯導(dǎo)語:關(guān)于數(shù)倉的前世今生,大家都了解嗎?在進(jìn)行數(shù)據(jù)庫系統(tǒng)管理的建設(shè)之前,我們需要對其相關(guān)概念了解透徹。本文這篇主要是把數(shù)倉的前世今生講清楚,包含其前世DBMS、今生數(shù)倉以及大家耳熟能詳?shù)腛LAP,希望對大家有幫助。
數(shù)倉的前世:DBMS 數(shù)據(jù)庫管理系統(tǒng)(OLTP)
1~3會從是啥、為啥、如何用三個角度去描述DBMS數(shù)據(jù)庫管理系統(tǒng)去描述,這三部分較為理論化,所以讀起來稍稍會有點枯燥,大家如果是實戰(zhàn)派可以直接閱讀4常見應(yīng)用(oracle、mysql、sql server)。
一、DBMS是啥:定義
在數(shù)倉出世前,DBMS是廣泛被使用的。DBMS即數(shù)據(jù)庫管理系統(tǒng)database mangement system。
DBMS是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。DBMS主要用于管理Database數(shù)據(jù)庫,我們一般稱這種處理為OLTP(on-line transaction processing),即聯(lián)機(jī)事務(wù)處理,OLTP是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的主要應(yīng)用,主要是基本的、日常的事務(wù)處理,例如銀行交易。
二、為啥需要DBMS:意義
- 數(shù)據(jù)定義:DBMS 提供數(shù)據(jù)定義語言(Data Definition Language, DDL),供用戶定義、創(chuàng)建和修改數(shù)據(jù)庫的結(jié)構(gòu)。DDL 所描述的數(shù)據(jù)庫結(jié)構(gòu)僅僅給出了數(shù)據(jù)庫的框架,數(shù)據(jù)庫的框架信息被存放在系統(tǒng)目錄中。
- 數(shù)據(jù)操縱:DBMS 提供數(shù)據(jù)操縱語言(Data Manipulation Language, DML),實現(xiàn)用戶對數(shù)據(jù)的操縱功能,包括對數(shù)據(jù)庫數(shù)據(jù)的插入、刪除、更新等操作。
- 數(shù)據(jù)庫運行管理:DBMS提供數(shù)據(jù)庫的運行控制和管理功能,包括多用戶環(huán)境下的事務(wù)的管理和自動恢復(fù)、并發(fā)控制和死鎖檢測、安全性檢查和存取控制、完整性檢查和執(zhí)行、運行日志的組織管理等。這些使得了數(shù)據(jù)庫系統(tǒng)可以正常運行。
- 數(shù)據(jù)庫維護(hù):數(shù)據(jù)庫的維護(hù)包括數(shù)據(jù)庫的數(shù)據(jù)載入、轉(zhuǎn)換、轉(zhuǎn)儲、恢復(fù),數(shù)據(jù)庫的重組織和重構(gòu),以及性能監(jiān)控分析等功能,這些功能分別由各個應(yīng)用程序來完成。
- 數(shù)據(jù)傳送:DBMS 有接口負(fù)責(zé)處理數(shù)據(jù)的傳送。這些接口與操作系統(tǒng)的聯(lián)機(jī)處理以及分時系統(tǒng)和遠(yuǎn)程作業(yè)輸入相關(guān)。網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)庫系統(tǒng)還應(yīng)該包括 DBMS 與網(wǎng)絡(luò)中其他軟件系統(tǒng)的通信功能以及數(shù)據(jù)庫之間的互操作功能。
三、如何用DBMS:具體操作
1. 數(shù)據(jù)定義:關(guān)于DDL
DDL,數(shù)據(jù)定義語言,用于定義和管理 SQL 數(shù)據(jù)庫中的所有對象的語言。
- CREATE – to create objects in the database 創(chuàng)建數(shù)據(jù)庫的語句
- ALTER – alters the structure of the database 修改數(shù)據(jù)庫的語句
- DROP – delete objects from the database 刪除數(shù)據(jù)庫的語句
- 其他:TRUNCATE徹底刪除、COMMENT注釋、GRANT授權(quán)、REVOKE收回已授權(quán)權(quán)限等等
2. 數(shù)據(jù)操縱:關(guān)于DML
DDL,數(shù)據(jù)操縱語言,用于對數(shù)據(jù)庫中數(shù)據(jù)的管理。
- SELECT – retrieve data from the a database 查詢數(shù)據(jù)庫中數(shù)據(jù)的語句
- INSERT – insert data into a table 添加數(shù)據(jù)庫中數(shù)據(jù)的語句
- UPDATE – updates existing data within a table 更新數(shù)據(jù)庫中數(shù)據(jù)的語句
- DELETE – deletes all records from a table, the space for the records remain 刪除數(shù)據(jù)庫中數(shù)據(jù)的語句
- 其他:LOCK TABLE鎖操作語句
3. 數(shù)據(jù)庫運行管理
數(shù)據(jù)庫安全性是指數(shù)據(jù)庫的任何數(shù)據(jù)都不允許受到惡意的侵害或未經(jīng)授權(quán)的存取或修改。
4. 數(shù)據(jù)庫安全管理
數(shù)據(jù)庫的任何數(shù)據(jù)都不允許受到惡意的侵害或未經(jīng)授權(quán)的存取或修改。
- 用戶標(biāo)識與鑒別:通過口令或者用戶標(biāo)識去進(jìn)行
- 存取控制:通過自主存取控制(dac)方法和強(qiáng)制存取控制(mac)方法去解決
- 數(shù)據(jù)審計和加密
- 角色和權(quán)限控制
- sql server的安全機(jī)制
5. 數(shù)據(jù)庫完整性:數(shù)據(jù)的正確性與相容性
- 實體完整性(entity integrity)指表中行的完整性,主要用于保證操作的記錄非空,唯一且不重復(fù)
- 參照完整性是指當(dāng)更新、刪除、插入,如一個表中的數(shù)據(jù)時,通過參照引用相互關(guān)聯(lián)的另一個表的數(shù)據(jù)來檢查對表的數(shù)據(jù)操作是否正確,一般通過外鍵實現(xiàn)
- 用戶自定義完整性:是使得用戶得以定義不屬于其他任何完整性分類的特定的業(yè)務(wù)規(guī)則
- sql server的完整性
6. 數(shù)據(jù)庫并發(fā)控制
事務(wù)(transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,一個事務(wù)內(nèi)所有語句被作為一個整體,這些操作是一個完整的工作單元,這些操作要么全做要么不做,是不可分割的工作單位。
事務(wù)在執(zhí)行的過程中需要不同的資源,例如:有時需要cpu,有時需要存取數(shù)據(jù),有時需要i/o,有時需要通信。如果事務(wù)串行執(zhí)行,則許多系統(tǒng)資源處于空閑狀態(tài)。
因此為了充分的利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享的特點。數(shù)據(jù)庫允許多個事務(wù)并發(fā)執(zhí)行。但事務(wù)在并發(fā)執(zhí)行時,彼此之間可能產(chǎn)生相互干擾。
7. 數(shù)據(jù)庫維護(hù)
數(shù)據(jù)庫的故障可以分為以下幾種從數(shù)據(jù)庫恢復(fù)角度,可以將數(shù)據(jù)庫故障分為4類:事務(wù)內(nèi)部的故障、系統(tǒng)故障、介質(zhì)故障、計算機(jī)病毒。
數(shù)據(jù)庫的恢復(fù)技術(shù)有:數(shù)據(jù)庫備份、數(shù)據(jù)庫還原、數(shù)據(jù)庫的分離和附加,
四、DBMS常見用法:具體應(yīng)用
結(jié)束了上面比較枯燥的理論,我們進(jìn)入到這一部分大家肯定就不太陌生了,關(guān)于DBMS的常見應(yīng)用,大概有以下幾類:
1. Oracle
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品??梢哉fOracle數(shù)據(jù)庫系統(tǒng)是世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小微機(jī)環(huán)境。它是一種高效率的、可靠性好的、適應(yīng)高吞吐量的數(shù)據(jù)庫方案。
阿里巴巴在2013年以前都在用oracle DBMS,尤其是在2005年-2009年,電商高速發(fā)展時期,阿里巴巴集團(tuán)擁有亞洲最大的Oracle集群,可以說阿里巴巴當(dāng)時是oracle最重要的用戶之一。
但是隨著阿里巴巴業(yè)務(wù)的不斷擴(kuò)張,購買oracle的節(jié)點也需要成倍增加,如果持續(xù)維持這樣的架構(gòu)下去,阿里巴巴購買服務(wù)器、數(shù)據(jù)庫產(chǎn)品的支出足夠讓阿里巴巴破產(chǎn)。也就是從2009年開始,阿里巴巴宣布去IOE(BM的小型機(jī)、Oracle數(shù)據(jù)庫、EMC存儲設(shè)備)計劃。
直到2013年7月10日,淘寶重中之重的廣告系統(tǒng)使用的Oracle數(shù)據(jù)庫下線,標(biāo)志著阿里巴巴中最后一個oracle下線。
其主要特性為:
- 處理速度非常快
- 安全級別高:支持快閃以及完美的恢復(fù),即使硬件壞了 也可以恢復(fù)到故障發(fā)前一秒
- 可以做到30s以內(nèi)故障轉(zhuǎn)移。
2. MS SQL Server
Microsoft SQL Server 是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能 (BI)工具提供了企業(yè)級的數(shù)據(jù)管理。Microsoft SQL Server數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。
這類DBMS被廣泛應(yīng)用于高校學(xué)生的教學(xué)工作和中小企業(yè)的日常管理工作,主要是因為以下特點:
- 有微軟強(qiáng)大的服務(wù)體系做配套支持,office辦公軟件等等
- 圖形化用戶界面,更加直觀簡單易用
- 具有很好的伸縮性,可跨界運行。從筆記本電腦到大型處理器可多臺使用
- 對web技術(shù)的支持,使用戶能夠容易的將數(shù)據(jù)庫中的數(shù)據(jù)發(fā)布到web上
3. MySQL
MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
如果你在互聯(lián)網(wǎng)公司工作,一定對MySQL不會很陌生,由于其開源的特性,大部分互聯(lián)網(wǎng)公司會選取DBMS進(jìn)行開發(fā)和創(chuàng)新。
其特點有:
- 開放源碼
- 高度非過程化
- 以一種語法結(jié)構(gòu)提供多種使用方式
- 語言簡潔,易學(xué)易用。
總結(jié)一下上面三種DBMS,可以得到以下結(jié)果:
這篇主要是把數(shù)倉的前世DBMS講清楚,對于現(xiàn)世數(shù)倉以及大家耳熟能詳?shù)腛LAP講解,敬請期待下一篇。
本文由 @業(yè)務(wù)數(shù)智化 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于CC0協(xié)議
????????????