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