A. 本人想更加深入的了解資料庫~~想問下在機子上什麼資料庫對學習最好~~
學習資料庫不應該針對品牌來學習,應該針對資料庫技術的分帶學習,
從現在主流的關系型資料庫,到oracle 面向對象資料庫,你要學習的包括操作系統基礎知識,數據結構,關系型資料庫理論,sql結構化查詢語言,T-SQL,pl/sql,網路知識等等一系列技術。以下附上一張資料庫工程師考試的大綱供你作個參考:
-----------------------
2004資料庫系統工程師級大綱
一、考試說明
1.考試要求
(1)掌握計算機體系結構以及各主要部件的性能和基本工作原理;
<廣告>
(2)掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(3)熟練掌握常用數據結構和常用演算法;
(4)熟悉軟體工程和軟體開發項目管理的基礎知識;
(5)熟悉計算機網路的原理和技術;
(6)掌握資料庫原理及基本理論;
(7)掌握常用的大型資料庫管理系統的應用技術;
(8)掌握資料庫應用系統的設計方法和開發過程;
(9)熟悉資料庫系統的管理和維護方法,了解相關的安全技術;
(10)了解資料庫發展趨勢與新技術;
(11)掌握常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(12)了解信息化、計算機應用的基礎知識;
(13)正確閱讀和理解計算機領域的英文資料。
2. 通過本考試的合格人員能參與應用信息系統的規劃、設計、構建、運行和管理,能按照用戶需求,設計、建立、運行、維護高質量的資料庫和數據倉庫;作為數據管理員管理信息系統中的數據資源,作為資料庫管理員建立和維護核心資料庫;擔任資料庫系統有關的技術支持,同時具備一定的網路結構設計及組網能力;具有工程師的實際工作能力和業務水平,能指導計算機技術與軟體專業助理工程師(或技術員)工作。
3. 本考試設置的科目包括
(1)信息系統知識,考試時間為150分鍾,筆試;
(2)資料庫系統設計與管理,考試時間為150分鍾,筆試。
二、考試范圍
考試科目1:信息系統知識
1. 計算機系統知識
1.1 硬體知識
1.1.1 計算機體系結構和主要部件的基本工作原理
?CPU和存儲器的組成、性能、基本工作原理
?常用I/O設備、通信設備的性能,以及基本工作原理
?I/O介面的功能、類型和特點
?CISC/RISC,流水線操作,多處理機,並行處理
1.1.2 存儲系統
?虛擬存儲器基本工作原理,多級存儲體系
?RAID類型和特性
1.1.3 安全性、可靠性與系統性能評測基礎知識
?診斷與容錯
?系統可靠性分析評價
? 計算機系統性能評測方法
1.2 數據結構與演算法
1.2.1 常用數據結構
?數組(靜態數組、動態數組)
?線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)
?棧和隊列
?樹(二叉樹、查找樹、平衡樹、遍歷樹、堆)、圖、集合的定義、存儲和操作
?Hash(存儲位置計算、碰撞處理)
1.2.2 常用演算法
?排序演算法、查找演算法、數值計算、字元串處理、數據壓縮演算法、遞歸演算法、圖的相關演算法
?演算法與數據結構的關系,演算法效率,演算法設計,演算法描述(流程圖、偽代碼、決策表),演算法的復雜性
1.3 軟體知識
1.3.1 操作系統知識
?操作系統的類型、特徵、地位、內核(中斷控制)、進程、線程概念
?處理機管理(狀態轉換、同步與互斥、信號燈、分時輪轉、搶占、死鎖)
?存儲管理(主存保護、動態連接分配、分段、分頁、虛存)
?設備管理(I/O控制、假離線、磁碟調度)
?文件管理(文件目錄、文件的結構和組織、存取方法、存取控制、恢復處理、共享和安全)
?作業管理(作業調度、作業控制語言(JCL)、多道程序設計)
?漢字處理,多媒體處理,人機界面
?網路操作系統和嵌入式操作系統基礎知識
?操作系統的配置
1.3.2 程序設計語言和語言處理程序的知識
? 匯編、編譯、解釋系統的基礎知識和基本工作原理
? 程序設計語言的基本成分:數據、運算、控制和傳輸,程序調用的實現機制
? 各類程序設計語言的主要特點和適用情況
1.4 計算機網路知識
?網路體系結構(網路拓撲、OSI/RM、基本的網路協議)
?傳輸介質,傳輸技術,傳輸方法,傳輸控制
?常用網路設備和各類通信設備
?Client/Server結構、Browser/Server結構、Browser/Web/Datebase結構
?LAN拓撲,存取控制,LAN的組網,LAN間連接,LAN-WAN連接
?網際網路基礎知識及應用
?網路軟體
?網路管理
?網路性能分析
?網路有關的法律、法規
2. 資料庫技術
2.1 資料庫技術基礎
2.1.1 資料庫模型
?資料庫系統的三級模式(概念模式、外模式、內模式),兩級映像(概念模式/外模式、外模式/內模式)
?資料庫模型:數據模型的組成要素,概念數據模型ER圖(實體、屬性、關系),邏輯數據模型(關系模型、層次模型、網路模型)
2.1.2 資料庫管理系統的功能和特徵
?主要功能(資料庫定義、資料庫操作、資料庫控制、事務管理、用戶視圖)
?特徵(確保數據獨立性、資料庫存取、同時執行過程、排它控制、故障恢復、安全性、完整性)
?RDB(關系資料庫),OODB(面向對象資料庫),ORDB(對象關系資料庫),NDB(網狀資料庫)
?幾種常用Web資料庫的特點
2.1.3 資料庫系統體系結構
? 集中式資料庫系統
? Client/Server資料庫系統
? 並行資料庫系統
? 分布式資料庫系統
? 對象關系資料庫系統
2.2 數據操作
2.2.1 關系運算
?關系代數運算(並、交、差、笛卡兒積、選擇、投影、連接、除)
?元組演算
?完整性約束
2.2.2 關系資料庫標准語言(SQL)
?SQL的功能與特點
?用SQL進行數據定義(表、視圖、索引、約束)
?用SQL進行數據操作(數據檢索、數據插入/刪除/更新、觸發控制)
?安全性和授權
?程序中的API,嵌入SQL
2.3 資料庫的控制功能
?資料庫事務管理(ACID屬性)
?資料庫備份與恢復技術(UNDO、REDO)
?並發控制
2.4 資料庫設計基礎理論
2.4.1 關系資料庫設計
?函數依賴
?規范化(第一範式、第二範式、第三範式、BC範式、第四範式、第五範式)
?模式分解及分解應遵循的原則
2.4.2 對象關系資料庫設計
?嵌套關系、 復雜類型,繼承與引用類型
?與復雜類型有關的查詢
?SQL中的函數與過程
?對象關系
2.5 數據挖掘和數據倉庫基礎知識
?數據挖掘應用和分類
?關聯規則、聚類
?數據倉庫的成分
?數據倉庫的模式
2.6 多媒體基本知識
2.6.1 多媒體技術基本概念
?多媒體系統基礎知識
?常用多媒體文件格式
2.6.2 多媒體壓縮編碼技術
?多媒體壓縮編碼技術
?統計編碼
?預測編碼
?編碼的國際標准
2.6.3多媒體技術應用
?簡單圖形的繪制,圖像文件的處理方法
?音頻和視頻信息的應用
?多媒體應用開發過程
2.7 系統性能知識
?性能計算(響應時間、吞吐量、周轉時間)
?性能指標和性能設計
?性能測試和性能評估
2.8 計算機應用基礎知識
?信息管理、數據處理、輔助設計、科學計算,人工智慧等基礎知識
?遠程通信服務及相關通信協議基礎知識
3. 系統開發和運行維護知識
3.1 軟體工程、軟體過程改進和軟體開發項目管理知識
?軟體工程知識
?軟體開發生命周期階段目標和任務
?軟體開發項目基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)及其常用管理工具
?主要的軟體開發方法(生命周期法、原型法、面向對象法、CASE)
?軟體開發工具與環境知識
?軟體質量管理基礎知識
?軟體過程改進基礎知識
?軟體開發過程評估、軟體能力成熟度評估的基礎知識
3.2 系統分析基礎知識
?系統分析的目的和任務
?結構化分析方法(數據流圖(DFD)和數據字典(DD),實體關系圖(ERD),描述加工處理的結構化語言)
?統一建模語言(UML)
?系統規格說明書
3.3 系統設計知識
?系統設計的目的和任務
?結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖)
?系統總體結構設計(總體布局,設計原則,模塊結構設計,數據存取設計,系統配置方案)
?系統詳細設計(代碼設計、資料庫設計、用戶界面設計、處理過程設計)
?系統設計說明書
3.4 系統實施知識
?系統實施的主要任務
?結構化程序設計、面向對象程序設計、可視化程序設計
?程序設計語言的選擇、程序設計風格
?系統測試的目的、類型,系統測試方法(黑盒測試、白盒測試、灰盒測試)
?測試設計和管理(錯誤曲線、錯誤排除、收斂、注入故障、測試試用例設計、系統測試報告)
?系統轉換基礎知識
3.5 系統運行和維護知識
?系統運行管理知識
?系統維護知識
?系統評價知識
4. 安全性知識
?安全性基本概念(網路安全、操作系統安全、資料庫安全)
?計算機病毒的防治,計算機犯罪的防範,容災
?訪問控制、防闖入、安全管理措施
?加密與解密機制
?風險分析、風險類型、抗風險措施和內部控制
5.標准化知識
?標准化意識,標准化的發展,標准出台過程
?國際標准、國家標准、行業標准、企業標准基本知識
?代碼標准、文件格式標准、安全標准軟體開發規范和文檔標准
?標准化機構
6.信息化基礎知識
?信息化意識
?全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略
?有關的法律、法規
?遠程教育、電子商務、電子政務等基礎知識
?企業信息資源管理基礎知識
7.計算機專業英語
?掌握計算機技術的基本詞彙
?能正確閱讀和理解計算機領域的英文資料
考試科目2:資料庫系統設計與管理
1.資料庫設計
1.1理解系統需求說明
?了解用戶需求、確定系統范圍
?確定應用系統資料庫的各種關系
?現有環境與新系統環境的關系
?新系統中的數據項、數據字典、數據流
1.2 系統開發的准備
?選擇開發方法,准備開發環境,制訂開發計劃
1.3 設計系統功能
?選擇系統機構,設計各子系統的功能和介面,設計安全性策略、需求和實現方法,制定詳細的工作流和數據流
1.4 資料庫設計
1.4.1 設計數據模型
?概念結構設計(設計ER模型)
?邏輯結構設計(轉換成DBMS所能接收的數據模型)
?評審設計
1.4.2 物理結構設計
?設計方法與內容
?存取方法的選擇
?評審設計與性能預測
1.4.3 資料庫實施與維護
?數據載入與應用程序調試
?資料庫試運行
?資料庫運行與維護
1.4.4 資料庫的保護
?資料庫的備份與恢復
?資料庫的安全性
?資料庫的完整性
?資料庫的並發控制
1.5 編寫外部設計文檔
?編寫系統說明書(系統配置圖、各子系統關系圖、系統流程圖,系統功能說明、輸入輸出規格說明、數據規格說明、用戶手冊框架)
?設計系統測試要求
1.6 設計評審
2. 資料庫應用系統設計
2.1 設計資料庫應用系統結構
?信息系統的架構(如Client/Server)與DBMS
?多用戶資料庫環境(文件伺服器體系結構、Client/Server體系結構)
?大規模資料庫和並行計算機體系結構(SMP、MPP)
?中間件角色和相關工具
?按構件分解,確定構件功能規格以及構件之間的介面
2.2 設計輸入輸出
?屏幕界面設計,設計輸入輸出檢查方法和檢查信息
?資料庫交互與連接(掌握C程序設計語言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一種開發工具與資料庫互連的方法(如何與資料庫伺服器溝通))
2.3 設計物理數據
?分析事務在資料庫上運行的頻率和性能要求,確定邏輯數據組織方式、存儲介質,設計索引結構和處理方式
?將邏輯數據結構變換成物理數據結構,計算容量(空間代價),確定存取方法(時間效率)、系統配置(維護代價)並進行優化
2.4 設計安全體系
?明確安全等級
?資料庫的登錄方式
?資料庫訪問
?許可(對象許可、命令許可、授權許可的方法)
2.5 應用程序開發
2.5.1 應用程序開發
?選擇應用程序開發平台
?系統實施順序
?框架開發
?基礎小組的程序開發
?源代碼控制
?版本控制
2.5.2 模塊劃分(原則、方法、標准)
2.5.3 編寫程序設計文檔
?模塊規格說明書(功能和介面說明、程序處理邏輯的描述、輸入輸出數據格式的描述)
?測試要求說明書(測試類型和目標,測試用例,測試方法)
2.5.4 程序設計評審
2.6 編寫應用系統設計文檔
?系統配置說明、構件劃分圖、構件間的介面、構件處理說明、屏幕設計文檔、報表設計文檔、程序設計文檔、文件設計文檔、資料庫設計文檔
2.7 設計評審
3. 資料庫應用系統實施
3.1 整個系統的配置與管理
3.2 常用資料庫管理系統的應用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
?創建資料庫
?創建表、創建索引、創建視圖、創建約束、創建UDDT(用戶自定義類型)
?創建和管理觸發器
?建立安全體系
3.3 資料庫應用系統安裝
?擬定系統安裝計劃(考慮費用、客戶關系、雇員關系、後勤關系和風險等因素)
?擬定人力資源使用計劃(組織機構安排的合理性)
?直接安裝(安裝新系統並使系統快速進入運行狀態)
?並行安裝(新舊系統並行運行一段時間)
?階段安裝(經過一系列的步驟和階段使新系統各部分逐步投入運行)
3.4 資料庫應用系統測試
?擬定測試目標、計劃、方法與步驟
?數據載入,准備測試數據
?指導應用程序員進行模塊測試進行驗收
?准備系統集成測試環境測試工具
?寫出資料庫運行測試報告
3.5 培訓與用戶支持
4.資料庫系統的運行和管理
4.1 資料庫系統的運行計劃
?運行策略的確定
<廣告>
?確定資料庫系統報警對象和報警方式
?資料庫系統的管理計劃(執行,故障/恢復,安全性,完整性,用戶培訓和維護)
4.2 資料庫系統的運行和維護
?新舊系統的轉換
?收集和分析報警數據(執行報警、故障報警、安全報警)
?連續穩定的運行
?資料庫維護(資料庫重構、安全視圖的評價和驗證、文檔維護)
?資料庫系統的運行統計(收集、分析、提出改進措施)
?關於運行標准和標准改進一致性的建議
?資料庫系統的審計
4.3 資料庫管理
?數據字典和數據倉庫的管理
?數據完整性維護和管理(實體完整性、參照完整性)
?資料庫物理結構的管理(保證數據不推遲訪問)
?資料庫空間及碎片管理
?備份和恢復(順序、日誌(審計痕跡)、檢查點)
?死鎖管理(集中式、分布式)
?並發控制(可串列性、鎖機制、時間戳、優化)
?數據安全性管理(加密、安全、訪問控制、視圖、有效性確認規則)
?資料庫管理員(DBA)職責
4.4 性能調整
?SQL語句的編碼檢驗
?表設計的評價
?索引的改進
?物理分配的改進
?設備增強
?資料庫性能優化
4.5 用戶支持
?用戶培訓
?售後服務
5. SQL
5.1 資料庫語言
?資料庫語言的要素
?資料庫語言的使用方式(互動式和嵌入式)
5.2 SQL概述
?SQL語句的特徵
?SQL語句的基本成分
5.3 資料庫定義
?創建資料庫(Create Datebase)、創建表(Create Table)
?定義數據完整性
?修改表(Alter Table)、刪除表(Drop Table)
?定義索引(Create Index)、刪除索引(Drop Index)
?定義視圖(Create View)、刪除視圖(Drop View)、更新視圖
5.4 數據操作
?Select語句的基本機構
?簡單查詢
?SQL中的選擇、投影
?字元串比較,涉及空值的比較
?日期時間,布爾值,輸出排序
?多表查詢
?避免屬性歧義
?SQL中的連接、並、交、差
?SQL中的元組變數
?子查詢
5.5 完整性控制與安全機制
?主鍵(Primary Key)約束
?外鍵(Foreign Key)約束
?屬性值上的約束(Null、Check、Create Domain)
?全局約束(Create Assertions)
?許可權、授權(Grant)、銷權(Revoke)
5.6 創建觸發器(Create Trigger)
5.7 SQL使用方式
?互動式SQL
?嵌入式SQL
?SQL與宿主語言介面(Declare、共享變數、游標、卷游標)
?動態SQL
?API
5.8 SQL 標准化
6. 網路環境下的資料庫
6.1 分布式資料庫
6.1.1 分布式資料庫的概念
?分布式資料庫的特點與目標
6.1.2 分布式資料庫的體系結構
?分布式資料庫的模式結構
?數據分布的策略(數據分片、分布透明性)
?分布式資料庫管理系統
6.1.3 分布式查詢處理和優化
6.1.4 分布式事務管理
?分布式資料庫的恢復(故障、恢復、2段提交、3段提交)
?分布式資料庫的透明性(局部、分裂、復制、處理、並發、執行)
6.1.5 分布式資料庫系統的應用
6.2 網路環境下資料庫系統的設計與實施
?數據的分布設計
?負載均衡設計
?資料庫互連技術
6.3 面向Web的DBMS技術
?三層體系結構
?動態Web網頁
?ASP、JSP、XML的應用
7.資料庫的安全性
7.1 安全性策略的理解
?資料庫視圖的安全性策略
?數據的安全級別(最重要的、重要的、注意、選擇)
7.2 資料庫安全測量
?用戶訪問控制(採用口令等)
?程序訪問控制(包含在程序中的SQL命令限制)
?表的訪問控制(視圖機制)
?控制訪問的函數和操作
?外部存儲數據的加密與解密
8. 資料庫發展趨勢與新技術
8.1 面向對象資料庫(OODBMS)
8.1.1 OODBMS的特徵
8.1.2 面向對象數據模型
?對象結構、對象類、繼承與多重繼承、對象標識、對象包含、對象嵌套
8.1.3 面向對象資料庫語言
8.1.4 對象關系資料庫系統(ORDBMS)
?嵌套關系
?復雜類型
?繼承、引用類型
?與復雜類型有關的查詢
?函數與過程
?面向對象與對象關系
?ORDBMS應用領域
8.2 企業資源計劃(ERP)和資料庫
8.2.1 ERP概述
?基本MRP(製造資源計劃)、閉環MRP、ERP
?基本原理、發展趨勢
?ERP設計的總體思路(一個中心、兩類業務、三條干線)
8.2.2 ERP與資料庫
?運行資料庫與ERP數據模型之間的關系
?運行資料庫與ERP資料庫之間的關系
8.2.3 案例分析
8.3 決策支持系統的建立
?決策支持系統的概念
?數據倉庫設計
?數據轉移技術
?聯機分析處理(OLAP)技術
?企業決策支持解決方案
?聯機事務處理(OLTP)
B. 資料庫是什麼Oracle又是啥玩意
經常會有人問我資料庫是幹啥的,其實一開始我是拒絕回答的,因為我也不能做到通俗易懂的表達出來,畢竟我接觸這個概念也沒有多長時間,但隨著問的人多了,我覺得是時候腦補一下我的第一堂課了,萬一哪天冒出來個貨跟你掰扯這事兒,你沒分分鍾給他說清,最後弄個丟里兒丟面兒,好尷尬呀。
資料庫,說白了就是按照數據結構來組織、存儲和管理數據的倉庫,這些數據是結構化的,並可為多種應用服務。也就是說,資料庫是使用計算機伺服器來存儲數據的,專門用來提供各種數據服務。可以這樣想像,過去一個公司的所有財務數據都是放在保險櫃裡面,而現在我們就可以針對這些財務數據搭建一個資料庫放在某台計算機或伺服器上面;再比如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。最常見的資料庫有:銀行儲蓄系統、手機話費系統、美容美發會員系統、超市會員積分系統、水電費系統、機票或火車票系統等,這些都需要後台資料庫基礎設施的支撐。舉了這么多例子,應該是把資料庫說明白了,至少能在大腦裡面有個概念,知道這個東西是幹啥的。
現在大數據被炒的紅得發紫,而大數據的基礎也是數據,由此可見,數據是一個企業的核心資源,說它是企業的立身之本、發展之基都不為過,因此,維護資料庫的資料庫管理員(DBA)是企業不可或缺的。
目前市面上的資料庫產品有很多,單從規模上分可分為大型、中型、小型幾種,典型的資料庫產品如下:
大型資料庫:Oracle、DB2、Sybase;
中型資料庫:MySQL、SQLServer、Infomix;
小型資料庫:Access、VisualFoxpro。在眾多的資料庫產品中,Oracle資料庫一直處於行業領導先地位,也是當今最流行的關系型資料庫。Oracle可翻譯成"甲骨文",它是一家以資料庫為主業的全球化公司,是全球第二大軟體公司(第一名是微軟公司),目前Oracle在資料庫軟體市場已經排名第一,資料庫軟體市場份額達到48.6%,遙遙領先於第二名佔有率僅為20.7%的IBM公司的DB2。在中國市場上的計算機專業系統後台所使用的資料庫尤以Oracle資料庫居多。但是購買Oracle資料庫需要很大一筆費用,一般的大型企業使用,需要有專業人員進行管理和維護,中小企業承擔不起。中小企業為了節省成本,一般使用MySQL、PostgreSQL這類免費開源的資料庫,所以Oracle資料庫相關的工作崗位一般是在大型企業中。
對於為什麼選擇Oracle資料庫,而不是其他的資料庫?
第一,是因為Oracle資料庫占據最大的市場份額,並且越來越大,市場需要很多Oracle資料庫方面的人才,中國有句老話說"做對事,選對人",是同樣的道理;第二,是很多非Oracle資料庫的老系統正往Oracle資料庫遷移,其他資料庫市場佔有率在減少,其他資料庫工作者有面臨失業的風險;第三,Oracle有大量的官方學習文檔,還有部分中文文檔,可以有效地進行學習;第四,Oracle有大量的從業人員,有共同方向的朋友可以互相幫助,不再是孤膽英雄;第五,是可以很容易地從Oracle官方網站下載功能齊全的資料庫最新版本進行學習,可以讓你了解資料庫方面的最新發展趨勢等。
在此說明,以後的所有內容都是基於Oracle11g資料庫產品的,下面我們就簡單介紹一下Oracle11g的系列產品:
企業版(EnterpriseEdition)此版本包含了資料庫的所有組件,並且能夠通過購買選項和程序包來進一步對其增強。
能支持例如大業務量的在線事務處理OLTP(On-LineTransactionProcessing聯機事務處理系統)環境、查詢密集的數據倉庫和要求苛刻的互聯網應用程序。
標准版1(StandardEditionOne)此版本為工作組、部門級和互聯網、內聯網應用程序提供了前所未有的易用性和性價比。從針對小型商務的單伺服器環境到大型的分布式部門環境,該版本包含了構建重要商務應用程序所必需的全部工具。它僅許可在最高容量為2個處理器的伺服器上使用,支持Windows/Linux/UNIX操作系統,並支持64位平台操作系統。
標准版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,並且利用真正的應用集群(RAC)提供了對更大型計算機和服務集群的支持。它可以在最高容量為4個處理器的單台伺服器上、或者在一個支持最多4個處理器的集群上使用,可支持Windows、Linux和UNIX操作系統,並支持64位平台操作系統。
簡化版此版本支持與標准版1、標准版和企業版完全兼容的單用戶開發和部署。通過將Oracle資料庫獲獎的功能引入到個人工作站中,該版本提供了結合世界上最流行的資料庫功能的資料庫,並且該資料庫具有桌面產品通常具有的易用性和簡單性,可支持Linux和Windows操作系統。
從存儲結構上來說,目前流行的資料庫主要包含以下兩種:
RDBMS:關系型資料庫,是指採用了關系模型來組織數據的資料庫;
NoSQL資料庫,是指那些非關系型的、分布式的資料庫。簡單來說,關系模型指的就是二維表格模型,而一個關系型資料庫就是由二維表及其之間的聯系所組成的一個數據組織。
關系型資料庫優點:
1、容易理解
二維表結構是非常貼近邏輯世界的一個概念,關系模型相對網狀、層次等其他模型來說更容易理解。
2、使用方便
通用的SQL語言使得操作關系型資料庫非常方便。
3、易於維護
豐富的完整性大大減低了數據冗餘和數據部移植的概率。
4、事務安全
所有關系型資料庫都不同程度的遵守事物的四個基本屬性,因此對於銀行、電信、證券等交易型業務是不可或缺的。
關系型資料庫的瓶頸:
1、高並發讀寫需求
網站的用戶並發性非常高,往往達到每秒上萬次讀寫請求,對於傳統型資料庫來說,硬碟I/O是一個很大的瓶頸。
2、海量數據的高效率讀寫
互聯網上每天產生的數據量是巨大的,對於關系型資料庫來說,在一張包含海量數據的表中查詢,效率是非常低的。
3、高擴展性和可用性
在基於WEB的結構中,資料庫是最難進行橫向擴展的,當一個應用系統的用戶量和訪問量與日俱增的時候,資料庫卻沒有辦法像WEBServer和APPLICATIONServer那樣簡單的通過添加更多的硬體和服務節點來擴展性能和負載能力。對於很多需要提供24小時不間斷服務的網站來說,對資料庫系統進行升級和擴展是非常痛苦的事情,往往需要停機維護和數據遷移。
NoSQL資料庫
NoSQL一詞首先是CarloStrozzi在1998年提出的。2009年再次提出了NoSQL一詞,用於指那些非關系型的、分布式的,且一般不保證遵循ACID原則的數據存儲系統。
NoSQL具有以下特點:
1、可以彌補關系型資料庫的不足
2、針對某些特定的需求而設計,可以具有極高的性能
3、大部分都是開源的,由於成熟度不夠,存在潛在的穩定性和維護性問題。
關系型資料庫適用於結構化數據,而非關系型資料庫適用於非結構化數據,二者優勢互補,相得益彰。
Oracle資料庫未來的發展方向是提供結構化、非結構化、半結構化的解決方案,實現關系型資料庫和NoSQL共存互補。值得強調的是,目前關系型資料庫仍是主流資料庫。
雖然NoSQL資料庫打破了關系型資料庫存儲的觀念,可以很好地滿足WEB2.0時代數據的存儲要求,但NoSQL資料庫也有自己的缺陷。在現階段的情況下,可以將關系型資料庫和NoSQL資料庫結合使用,相互彌補各自的不足。
關於資料庫及其代表產品Oracle今天就介紹這么多,有興趣的可以繼續深挖,希望我的介紹能讓你對資料庫有一個更深入的認識。如果有志於在這方面發展的話,就讓我們一起跟往事乾杯從頭再來。
C. 深入了解Redis操作五大數據類型常用命令
我們知道Redis默認有16個資料庫,默認是第0個資料庫,那麼如果在需要對資料庫進行切換的時候,我們就可以使用下面這個命令:
使用如下態臘命令進行切換
如果想要清除指定某一個資料庫的數據
清除所有資料庫的數據
接下來這個命令應該是最常用的了
平常在開發中,我們還需要經常對key進行判斷,判斷其是否存在
因為我們設置的緩存數據一般都不能是永久的,這個時候就需要我們在存儲數據的時候,就為其設置過期時間。
string類型是Redis中五大基本數據類型之一,這也是最常使用到的一個數據類型,所有很多小夥伴們對Redis的認識和操作就僅僅的停留在了對Redis的操作層面,但是你是否知道string類型中的相關命令,還是有非常多實用的
接下來先看一下對string類型進行基本存儲和獲取的命令。
如果我們存儲的string中的內容是數字的話,我們也可以對其進行增或減操作,Redis可以自動的對字元串進行相關的操作。實現的命令如下:胡螞
使用msetnx時,同時設置一個或多個 key-value 對,當且僅當所有給定 key都不存在時才成立。
getset命令從字面意思就可以看出來,他的作用是先get再set。
總結string類似的使用場景:
在使用list類型進行存取的時候,有兩個命令需要進行區分:
注意:只有pop和push才分左褲閉埋右,其他的l都是list的意思
總結:
總結set集合一般用於元素的不重復的場景,比如抽獎系統,輪播等場景下
在使用hash集合的時候,要注意,hash其實就是一個Map集合,key-map的時候,值是一個map集合的形式進行存儲的,也和Java中的hashmap有一個類似。
HVALS獲取所有的value,HKEYS獲取所有的key,HGETALL獲取所有的鍵值
總結:
hash可以用於存儲變更的數據,比如user,name,age等,尤其是用戶信息之類的,hash更加適合用於對象的存儲,string更加適合用於字元串的存儲。
在set集合的基礎上增加一個序列號,來進行排序
ZRANGEBYSCORE使用語法
總結
以上是在對五種數據類型進行存取時的一些常用命令操作。關於其他的命令使用,小夥伴們在用到的時候可以直接入官網查看就可以了。
D. 成為大數據工程師要學習哪些知識
1.大數據架構的工具與組件
數據工程師更關注分析基礎架構,因此所需的大部分技能都是以架構為中心的。
2.深入了解SQL和其它資料庫解決方案
數據工程師需要對資料庫管理系統有比較熟悉的了解,而且深入了解SQL非常重要。同樣其它資料庫解決方案,例如Cassandra或BigTable也須熟悉,因為不是每個資料庫都是由可識別的標准來構建。
3.數據倉庫和ETL工具
數據倉庫和ETL經驗對於數據工程師至關重要。像Redshift或Panoply這樣的數據倉庫解決方案,以及ETL工具,比如StitchData或Segment都非常有用。另外,數據存儲和數據檢索經驗同樣重要,因為處理的數據量是個天文數字。
4.基於Hadoop的分析(HBase,Hive,MapRece等)
對基於Apache Hadoop的分析有深刻理解是這個領域的一個非常必要的需求,一般情況下HBase,Hive和MapRece的知識存儲是必需的。
5.編碼
說到解決方案,編碼與開發能力是一個重要的優點(這也是許多職位的要求),你要熟悉Python,C/C++,Java,Perl,Golang或其它語言,這會非常有價值。
6.機器學習
雖然數據工程師主要關注的是數據科學,但對數據處理技術的理解會加分,比如一些統計分析知識和基礎數據建模。
E. 什麼是關系資料庫 帶你深入了解關系資料庫
1、關系資料庫,是建立在關系資料庫模型基礎上的資料庫,藉助於集合代數等概念和方法來處理資料庫中的數據,同時也是一個被組織成一組擁有正式描述性的表格,該形式的表格作用的實質是裝載著數據項的特殊收集體,這些表格中的數據能以許多不同的方式被存取或重新召集而不需要重新組織資料庫表格。
2、關系資料庫的定義造成元數據的一張表格或造成表格、列、范圍和約束的正式描述。每個表格(有時被稱為一個關系)包含用列表示的一個或更多的數據種類。 每行包含一個唯一的數據實體,這些數據是被列定義的種類。
3、當創造一個關系資料庫的時候,你能定義數據列的可能值的范圍和可能應用於那個數據值的進一步約束。而SQL語言是標准用戶和應用程序到關系資料庫的介面。其優勢是容易擴充,且在最初的資料庫創造之後,一個新的數據種類能被添加而不需要修改所有的現有應用軟體。主流的關系資料庫有oracle、db2、sqlserver、sybase、mysql等。