主流的關(guān)系型數(shù)據(jù)庫(kù):
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為江門(mén)企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,江門(mén)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
1. MySQL:目前使用最廣泛的開(kāi)源、多平臺(tái)的關(guān)系型數(shù)據(jù)庫(kù),支持事務(wù)、符合ACID、支持多數(shù)SQL規(guī)范。
2. SQL Server:支持事務(wù)、符合ACID、支持多數(shù)SQL規(guī)范,屬于商業(yè)軟件,需要注意版權(quán)和licence授權(quán)費(fèi)用。
3. Oracle:支持事務(wù),符合關(guān)系型數(shù)據(jù)庫(kù)原理,符合ACID,支持多數(shù)SQL規(guī)范,功能最強(qiáng)大、最復(fù)雜、市場(chǎng)占比最高的商業(yè)數(shù)據(jù)庫(kù)。
4. Postgresql:開(kāi)源、多平臺(tái)、關(guān)系型數(shù)據(jù)庫(kù),功能最強(qiáng)大的開(kāi)源數(shù)據(jù)庫(kù),需要Python環(huán)境,基于postgresql的time
scaleDB,是目前比較火的時(shí)序數(shù)據(jù)庫(kù)之一。
非關(guān)系型數(shù)據(jù)庫(kù):
非關(guān)系型數(shù)據(jù)庫(kù)也被稱為nosql,作為關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)補(bǔ)充,能在特定場(chǎng)景和特點(diǎn)問(wèn)題下發(fā)揮高效率和高性能。
常見(jiàn)的非關(guān)系型數(shù)據(jù)庫(kù)類型有鍵值存儲(chǔ)數(shù)據(jù)庫(kù)和面向文檔數(shù)據(jù)庫(kù)。
鍵值存儲(chǔ)數(shù)據(jù)庫(kù)類似hash,通過(guò)key做添加、刪除、查詢、性能高,優(yōu)勢(shì)在于簡(jiǎn)單、易部署、高并發(fā),主要產(chǎn)品有:
Redis:開(kāi)源、Linux平臺(tái)、key-value鍵值型nosql數(shù)據(jù)庫(kù),簡(jiǎn)單穩(wěn)定,非常主流的、全數(shù)據(jù)in-momory,定位于快的鍵值型nosql數(shù)據(jù)庫(kù)。
Memcaced:一個(gè)開(kāi)源的、高性能的、具有分布式內(nèi)存對(duì)象的緩存系統(tǒng),通過(guò)它可以減輕數(shù)據(jù)庫(kù)負(fù)載,加速動(dòng)態(tài)的web應(yīng)用。
面向文檔數(shù)據(jù)庫(kù)以文檔的形式存儲(chǔ),每個(gè)文檔是一系列數(shù)據(jù)項(xiàng)的集合,每個(gè)數(shù)據(jù)項(xiàng)有名稱與對(duì)應(yīng)的值,主要產(chǎn)品有:
MongoDB:開(kāi)源、多平臺(tái)、文檔型nosql數(shù)據(jù)庫(kù),最像關(guān)系型數(shù)據(jù)庫(kù),定位于靈活的nosql數(shù)據(jù)庫(kù)。適用于網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù)、小文件系統(tǒng)、日志分析系統(tǒng)。
數(shù)據(jù)庫(kù)系統(tǒng)工程師級(jí)考試大綱
一、考試說(shuō)明
1.考試要求
(1)掌握計(jì)算機(jī)體系結(jié)構(gòu)以及各主要部件的性能和基本工作原理;
(2)掌握操作系統(tǒng)、程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)知識(shí),了解編譯程序的基本知識(shí);
(3)熟練掌握常用數(shù)據(jù)結(jié)構(gòu)和常用算法;
(4)熟悉軟件工程和軟件開(kāi)發(fā)項(xiàng)目管理的基礎(chǔ)知識(shí);
(5)熟悉計(jì)算機(jī)網(wǎng)絡(luò)的原理和技術(shù);
(6)掌握數(shù)據(jù)庫(kù)原理及基本理論;
(7)掌握常用的大型數(shù)據(jù)庫(kù)管理系統(tǒng)的應(yīng)用技術(shù);
(8)掌握數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)方法和開(kāi)發(fā)過(guò)程;
(9)熟悉數(shù)據(jù)庫(kù)系統(tǒng)的管理和維護(hù)方法,了解相關(guān)的安全技術(shù);
(10)了解數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)與新技術(shù);
(11)掌握常用信息技術(shù)標(biāo)準(zhǔn)、安全性,以及有關(guān)法律、法規(guī)的基本知識(shí);
(12)了解信息化、計(jì)算機(jī)應(yīng)用的基礎(chǔ)知識(shí);
(13)正確閱讀和理解計(jì)算機(jī)領(lǐng)域的英文資料。
2. 通過(guò)本考試的合格人員能參與應(yīng)用信息系統(tǒng)的規(guī)劃、設(shè)計(jì)、構(gòu)建、運(yùn)行和管理,能按照用戶需求,設(shè)計(jì)、建立、運(yùn)行、維護(hù)高質(zhì)量的數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù);作為數(shù)據(jù)管理員管理信息系統(tǒng)中的數(shù)據(jù)資源,作為數(shù)據(jù)庫(kù)管理員建立和維護(hù)核心數(shù)據(jù)庫(kù);擔(dān)任數(shù)據(jù)庫(kù)系統(tǒng)有關(guān)的技術(shù)支持,同時(shí)具備一定的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)及組網(wǎng)能力;具有工程師的實(shí)際工作能力和業(yè)務(wù)水平,能指導(dǎo)計(jì)算機(jī)技術(shù)與軟件專業(yè)助理工程師(或技術(shù)員)工作。
3. 本考試設(shè)置的科目包括
(1)信息系統(tǒng)知識(shí),考試時(shí)間為150分鐘,筆試;
(2)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與管理,考試時(shí)間為150分鐘,筆試。
二、考試范圍
考試科目1:信息系統(tǒng)知識(shí)
1. 計(jì)算機(jī)系統(tǒng)知識(shí)
1.1 硬件知識(shí)
1.1.1 計(jì)算機(jī)體系結(jié)構(gòu)和主要部件的基本工作原理
?CPU和存儲(chǔ)器的組成、性能、基本工作原理
?常用I/O設(shè)備、通信設(shè)備的性能,以及基本工作原理
?I/O接口的功能、類型和特點(diǎn)
?CISC/RISC,流水線操作,多處理機(jī),并行處理
1.1.2 存儲(chǔ)系統(tǒng)
?虛擬存儲(chǔ)器基本工作原理,多級(jí)存儲(chǔ)體系
?RAID類型和特性
1.1.3 安全性、可靠性與系統(tǒng)性能評(píng)測(cè)基礎(chǔ)知識(shí)
?診斷與容錯(cuò)
?系統(tǒng)可靠性分析評(píng)價(jià)
? 計(jì)算機(jī)系統(tǒng)性能評(píng)測(cè)方法
1.2 數(shù)據(jù)結(jié)構(gòu)與算法
1.2.1 常用數(shù)據(jù)結(jié)構(gòu)
?數(shù)組(靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組)
?線性表、鏈表(單向鏈表、雙向鏈表、循環(huán)鏈表)
?棧和隊(duì)列
?樹(shù)(二叉樹(shù)、查找樹(shù)、平衡樹(shù)、遍歷樹(shù)、堆)、圖、集合的定義、存儲(chǔ)和操作
?Hash(存儲(chǔ)位置計(jì)算、碰撞處理)
1.2.2 常用算法
?排序算法、查找算法、數(shù)值計(jì)算、字符串處理、數(shù)據(jù)壓縮算法、遞歸算法、圖的相關(guān)算法
?算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系,算法效率,算法設(shè)計(jì),算法描述(流程圖、偽代碼、決策表),算法的復(fù)雜性
1.3 軟件知識(shí)
1.3.1 操作系統(tǒng)知識(shí)
?操作系統(tǒng)的類型、特征、地位、內(nèi)核(中斷控制)、進(jìn)程、線程概念
?處理機(jī)管理(狀態(tài)轉(zhuǎn)換、同步與互斥、信號(hào)燈、分時(shí)輪轉(zhuǎn)、搶占、死鎖)
?存儲(chǔ)管理(主存保護(hù)、動(dòng)態(tài)連接分配、分段、分頁(yè)、虛存)
?設(shè)備管理(I/O控制、假脫機(jī)、磁盤(pán)調(diào)度)
?文件管理(文件目錄、文件的結(jié)構(gòu)和組織、存取方法、存取控制、恢復(fù)處理、共享和安全)
?作業(yè)管理(作業(yè)調(diào)度、作業(yè)控制語(yǔ)言(JCL)、多道程序設(shè)計(jì))
?漢字處理,多媒體處理,人機(jī)界面
?網(wǎng)絡(luò)操作系統(tǒng)和嵌入式操作系統(tǒng)基礎(chǔ)知識(shí)
?操作系統(tǒng)的配置
1.3.2 程序設(shè)計(jì)語(yǔ)言和語(yǔ)言處理程序的知識(shí)
? 匯編、編譯、解釋系統(tǒng)的基礎(chǔ)知識(shí)和基本工作原理
? 程序設(shè)計(jì)語(yǔ)言的基本成分:數(shù)據(jù)、運(yùn)算、控制和傳輸,程序調(diào)用的實(shí)現(xiàn)機(jī)制
? 各類程序設(shè)計(jì)語(yǔ)言的主要特點(diǎn)和適用情況
1.4 計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)
?網(wǎng)絡(luò)體系結(jié)構(gòu)(網(wǎng)絡(luò)拓?fù)?、OSI/RM、基本的網(wǎng)絡(luò)協(xié)議)
?傳輸介質(zhì),傳輸技術(shù),傳輸方法,傳輸控制
?常用網(wǎng)絡(luò)設(shè)備和各類通信設(shè)備
?Client/Server結(jié)構(gòu)、Browser/Server結(jié)構(gòu)、Browser/Web/Datebase結(jié)構(gòu)
?LAN拓?fù)洌嫒】刂?,LAN的組網(wǎng),LAN間連接,LAN-WAN連接
?因特網(wǎng)基礎(chǔ)知識(shí)及應(yīng)用
?網(wǎng)絡(luò)軟件
?網(wǎng)絡(luò)管理
?網(wǎng)絡(luò)性能分析
?網(wǎng)絡(luò)有關(guān)的法律、法規(guī)
2. 數(shù)據(jù)庫(kù)技術(shù)
2.1 數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)
2.1.1 數(shù)據(jù)庫(kù)模型
?數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式(概念模式、外模式、內(nèi)模式),兩級(jí)映像(概念模式/外模式、外模式/內(nèi)模式)
?數(shù)據(jù)庫(kù)模型:數(shù)據(jù)模型的組成要素,概念數(shù)據(jù)模型ER圖(實(shí)體、屬性、關(guān)系),邏輯數(shù)據(jù)模型(關(guān)系模型、層次模型、網(wǎng)絡(luò)模型)
2.1.2 數(shù)據(jù)庫(kù)管理系統(tǒng)的功能和特征
?主要功能(數(shù)據(jù)庫(kù)定義、數(shù)據(jù)庫(kù)操作、數(shù)據(jù)庫(kù)控制、事務(wù)管理、用戶視圖)
?特征(確保數(shù)據(jù)獨(dú)立性、數(shù)據(jù)庫(kù)存取、同時(shí)執(zhí)行過(guò)程、排它控制、故障恢復(fù)、安全性、完整性)
?RDB(關(guān)系數(shù)據(jù)庫(kù)),OODB(面向?qū)ο髷?shù)據(jù)庫(kù)),ORDB(對(duì)象關(guān)系數(shù)據(jù)庫(kù)),NDB(網(wǎng)狀數(shù)據(jù)庫(kù))
?幾種常用Web數(shù)據(jù)庫(kù)的特點(diǎn)
2.1.3 數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)
? 集中式數(shù)據(jù)庫(kù)系統(tǒng)
? Client/Server數(shù)據(jù)庫(kù)系統(tǒng)
? 并行數(shù)據(jù)庫(kù)系統(tǒng)
? 分布式數(shù)據(jù)庫(kù)系統(tǒng)
? 對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)
2.2 數(shù)據(jù)操作
2.2.1 關(guān)系運(yùn)算
?關(guān)系代數(shù)運(yùn)算(并、交、差、笛卡兒積、選擇、投影、連接、除)
?元組演算
?完整性約束
2.2.2 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言(SQL)
?SQL的功能與特點(diǎn)
?用SQL進(jìn)行數(shù)據(jù)定義(表、視圖、索引、約束)
?用SQL進(jìn)行數(shù)據(jù)操作(數(shù)據(jù)檢索、數(shù)據(jù)插入/刪除/更新、觸發(fā)控制)
?安全性和授權(quán)
?程序中的API,嵌入SQL
2.3 數(shù)據(jù)庫(kù)的控制功能
?數(shù)據(jù)庫(kù)事務(wù)管理(ACID屬性)
?數(shù)據(jù)庫(kù)備份與恢復(fù)技術(shù)(UNDO、REDO)
?并發(fā)控制
2.4 數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)理論
2.4.1 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)
?函數(shù)依賴
?規(guī)范化(第一范式、第二范式、第三范式、BC范式、第四范式、第五范式)
?模式分解及分解應(yīng)遵循的原則
2.4.2 對(duì)象關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)
?嵌套關(guān)系、 復(fù)雜類型,繼承與引用類型
?與復(fù)雜類型有關(guān)的查詢
?SQL中的函數(shù)與過(guò)程
?對(duì)象關(guān)系
2.5 數(shù)據(jù)挖掘和數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)知識(shí)
?數(shù)據(jù)挖掘應(yīng)用和分類
?關(guān)聯(lián)規(guī)則、聚類
?數(shù)據(jù)倉(cāng)庫(kù)的成分
?數(shù)據(jù)倉(cāng)庫(kù)的模式
2.6 多媒體基本知識(shí)
2.6.1 多媒體技術(shù)基本概念
?多媒體系統(tǒng)基礎(chǔ)知識(shí)
?常用多媒體文件格式
2.6.2 多媒體壓縮編碼技術(shù)
?多媒體壓縮編碼技術(shù)
?統(tǒng)計(jì)編碼
?預(yù)測(cè)編碼
?編碼的國(guó)際標(biāo)準(zhǔn)
2.6.3多媒體技術(shù)應(yīng)用
?簡(jiǎn)單圖形的繪制,圖像文件的處理方法
?音頻和視頻信息的應(yīng)用
?多媒體應(yīng)用開(kāi)發(fā)過(guò)程
2.7 系統(tǒng)性能知識(shí)
?性能計(jì)算(響應(yīng)時(shí)間、吞吐量、周轉(zhuǎn)時(shí)間)
?性能指標(biāo)和性能設(shè)計(jì)
?性能測(cè)試和性能評(píng)估
2.8 計(jì)算機(jī)應(yīng)用基礎(chǔ)知識(shí)
?信息管理、數(shù)據(jù)處理、輔助設(shè)計(jì)、科學(xué)計(jì)算,人工智能等基礎(chǔ)知識(shí)
?遠(yuǎn)程通信服務(wù)及相關(guān)通信協(xié)議基礎(chǔ)知識(shí)
3. 系統(tǒng)開(kāi)發(fā)和運(yùn)行維護(hù)知識(shí)
3.1 軟件工程、軟件過(guò)程改進(jìn)和軟件開(kāi)發(fā)項(xiàng)目管理知識(shí)
?軟件工程知識(shí)
?軟件開(kāi)發(fā)生命周期階段目標(biāo)和任務(wù)
?軟件開(kāi)發(fā)項(xiàng)目基礎(chǔ)知識(shí)(時(shí)間管理、成本管理、質(zhì)量管理、人力資源管理、風(fēng)險(xiǎn)管理等)及其常用管理工具
?主要的軟件開(kāi)發(fā)方法(生命周期法、原型法、面向?qū)ο蠓?、CASE)
?軟件開(kāi)發(fā)工具與環(huán)境知識(shí)
?軟件質(zhì)量管理基礎(chǔ)知識(shí)
?軟件過(guò)程改進(jìn)基礎(chǔ)知識(shí)
?軟件開(kāi)發(fā)過(guò)程評(píng)估、軟件能力成熟度評(píng)估的基礎(chǔ)知識(shí)
3.2 系統(tǒng)分析基礎(chǔ)知識(shí)
?系統(tǒng)分析的目的和任務(wù)
?結(jié)構(gòu)化分析方法(數(shù)據(jù)流圖(DFD)和數(shù)據(jù)字典(DD),實(shí)體關(guān)系圖(ERD),描述加工處理的結(jié)構(gòu)化語(yǔ)言)
?統(tǒng)一建模語(yǔ)言(UML)
?系統(tǒng)規(guī)格說(shuō)明書(shū)
3.3 系統(tǒng)設(shè)計(jì)知識(shí)
?系統(tǒng)設(shè)計(jì)的目的和任務(wù)
?結(jié)構(gòu)化設(shè)計(jì)方法和工具(系統(tǒng)流程圖、HIPO圖、控制流程圖)
?系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)(總體布局,設(shè)計(jì)原則,模塊結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)存取設(shè)計(jì),系統(tǒng)配置方案)
?系統(tǒng)詳細(xì)設(shè)計(jì)(代碼設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、用戶界面設(shè)計(jì)、處理過(guò)程設(shè)計(jì))
?系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)
3.4 系統(tǒng)實(shí)施知識(shí)
?系統(tǒng)實(shí)施的主要任務(wù)
?結(jié)構(gòu)化程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)、可視化程序設(shè)計(jì)
?程序設(shè)計(jì)語(yǔ)言的選擇、程序設(shè)計(jì)風(fēng)格
?系統(tǒng)測(cè)試的目的、類型,系統(tǒng)測(cè)試方法(黑盒測(cè)試、白盒測(cè)試、灰盒測(cè)試)
?測(cè)試設(shè)計(jì)和管理(錯(cuò)誤曲線、錯(cuò)誤排除、收斂、注入故障、測(cè)試試用例設(shè)計(jì)、系統(tǒng)測(cè)試報(bào)告)
?系統(tǒng)轉(zhuǎn)換基礎(chǔ)知識(shí)
3.5 系統(tǒng)運(yùn)行和維護(hù)知識(shí)
?系統(tǒng)運(yùn)行管理知識(shí)
?系統(tǒng)維護(hù)知識(shí)
?系統(tǒng)評(píng)價(jià)知識(shí)
4. 安全性知識(shí)
?安全性基本概念(網(wǎng)絡(luò)安全、操作系統(tǒng)安全、數(shù)據(jù)庫(kù)安全)
?計(jì)算機(jī)病毒的防治,計(jì)算機(jī)犯罪的防范,容災(zāi)
?訪問(wèn)控制、防闖入、安全管理措施
?加密與解密機(jī)制
?風(fēng)險(xiǎn)分析、風(fēng)險(xiǎn)類型、抗風(fēng)險(xiǎn)措施和內(nèi)部控制
5.標(biāo)準(zhǔn)化知識(shí)
?標(biāo)準(zhǔn)化意識(shí),標(biāo)準(zhǔn)化的發(fā)展,標(biāo)準(zhǔn)出臺(tái)過(guò)程
?國(guó)際標(biāo)準(zhǔn)、國(guó)家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)、企業(yè)標(biāo)準(zhǔn)基本知識(shí)
?代碼標(biāo)準(zhǔn)、文件格式標(biāo)準(zhǔn)、安全標(biāo)準(zhǔn)軟件開(kāi)發(fā)規(guī)范和文檔標(biāo)準(zhǔn)
?標(biāo)準(zhǔn)化機(jī)構(gòu)
6.信息化基礎(chǔ)知識(shí)
?信息化意識(shí)
?全球信息化趨勢(shì)、國(guó)家信息化戰(zhàn)略、企業(yè)信息化戰(zhàn)略和策略
?有關(guān)的法律、法規(guī)
?遠(yuǎn)程教育、電子商務(wù)、電子政務(wù)等基礎(chǔ)知識(shí)
?企業(yè)信息資源管理基礎(chǔ)知識(shí)
7.計(jì)算機(jī)專業(yè)英語(yǔ)
?掌握計(jì)算機(jī)技術(shù)的基本詞匯
?能正確閱讀和理解計(jì)算機(jī)領(lǐng)域的英文資料
考試科目2:數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與管理
1.數(shù)據(jù)庫(kù)設(shè)計(jì)
1.1理解系統(tǒng)需求說(shuō)明
?了解用戶需求、確定系統(tǒng)范圍
?確定應(yīng)用系統(tǒng)數(shù)據(jù)庫(kù)的各種關(guān)系
?現(xiàn)有環(huán)境與新系統(tǒng)環(huán)境的關(guān)系
?新系統(tǒng)中的數(shù)據(jù)項(xiàng)、數(shù)據(jù)字典、數(shù)據(jù)流
1.2 系統(tǒng)開(kāi)發(fā)的準(zhǔn)備
?選擇開(kāi)發(fā)方法,準(zhǔn)備開(kāi)發(fā)環(huán)境,制訂開(kāi)發(fā)計(jì)劃
1.3 設(shè)計(jì)系統(tǒng)功能
?選擇系統(tǒng)機(jī)構(gòu),設(shè)計(jì)各子系統(tǒng)的功能和接口,設(shè)計(jì)安全性策略、需求和實(shí)現(xiàn)方法,制定詳細(xì)的工作流和數(shù)據(jù)流
1.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
1.4.1 設(shè)計(jì)數(shù)據(jù)模型
?概念結(jié)構(gòu)設(shè)計(jì)(設(shè)計(jì)ER模型)
?邏輯結(jié)構(gòu)設(shè)計(jì)(轉(zhuǎn)換成DBMS所能接收的數(shù)據(jù)模型)
?評(píng)審設(shè)計(jì)
1.4.2 物理結(jié)構(gòu)設(shè)計(jì)
?設(shè)計(jì)方法與內(nèi)容
?存取方法的選擇
?評(píng)審設(shè)計(jì)與性能預(yù)測(cè)
1.4.3 數(shù)據(jù)庫(kù)實(shí)施與維護(hù)
?數(shù)據(jù)加載與應(yīng)用程序調(diào)試
?數(shù)據(jù)庫(kù)試運(yùn)行
?數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)
1.4.4 數(shù)據(jù)庫(kù)的保護(hù)
?數(shù)據(jù)庫(kù)的備份與恢復(fù)
?數(shù)據(jù)庫(kù)的安全性
?數(shù)據(jù)庫(kù)的完整性
?數(shù)據(jù)庫(kù)的并發(fā)控制
1.5 編寫(xiě)外部設(shè)計(jì)文檔
?編寫(xiě)系統(tǒng)說(shuō)明書(shū)(系統(tǒng)配置圖、各子系統(tǒng)關(guān)系圖、系統(tǒng)流程圖,系統(tǒng)功能說(shuō)明、輸入輸出規(guī)格說(shuō)明、數(shù)據(jù)規(guī)格說(shuō)明、用戶手冊(cè)框架)
?設(shè)計(jì)系統(tǒng)測(cè)試要求
1.6 設(shè)計(jì)評(píng)審
2. 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)
2.1 設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)結(jié)構(gòu)
?信息系統(tǒng)的架構(gòu)(如Client/Server)與DBMS
?多用戶數(shù)據(jù)庫(kù)環(huán)境(文件服務(wù)器體系結(jié)構(gòu)、Client/Server體系結(jié)構(gòu))
?大規(guī)模數(shù)據(jù)庫(kù)和并行計(jì)算機(jī)體系結(jié)構(gòu)(SMP、MPP)
?中間件角色和相關(guān)工具
?按構(gòu)件分解,確定構(gòu)件功能規(guī)格以及構(gòu)件之間的接口
2.2 設(shè)計(jì)輸入輸出
?屏幕界面設(shè)計(jì),設(shè)計(jì)輸入輸出檢查方法和檢查信息
?數(shù)據(jù)庫(kù)交互與連接(掌握C程序設(shè)計(jì)語(yǔ)言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一種開(kāi)發(fā)工具與數(shù)據(jù)庫(kù)互連的方法(如何與數(shù)據(jù)庫(kù)服務(wù)器溝通))
2.3 設(shè)計(jì)物理數(shù)據(jù)
?分析事務(wù)在數(shù)據(jù)庫(kù)上運(yùn)行的頻率和性能要求,確定邏輯數(shù)據(jù)組織方式、存儲(chǔ)介質(zhì),設(shè)計(jì)索引結(jié)構(gòu)和處理方式
?將邏輯數(shù)據(jù)結(jié)構(gòu)變換成物理數(shù)據(jù)結(jié)構(gòu),計(jì)算容量(空間代價(jià)),確定存取方法(時(shí)間效率)、系統(tǒng)配置(維護(hù)代價(jià))并進(jìn)行優(yōu)化
2.4 設(shè)計(jì)安全體系
?明確安全等級(jí)
?數(shù)據(jù)庫(kù)的登錄方式
?數(shù)據(jù)庫(kù)訪問(wèn)
?許可(對(duì)象許可、命令許可、授權(quán)許可的方法)
2.5 應(yīng)用程序開(kāi)發(fā)
2.5.1 應(yīng)用程序開(kāi)發(fā)
?選擇應(yīng)用程序開(kāi)發(fā)平臺(tái)
?系統(tǒng)實(shí)施順序
?框架開(kāi)發(fā)
?基礎(chǔ)小組的程序開(kāi)發(fā)
?源代碼控制
?版本控制
2.5.2 模塊劃分(原則、方法、標(biāo)準(zhǔn))
2.5.3 編寫(xiě)程序設(shè)計(jì)文檔
?模塊規(guī)格說(shuō)明書(shū)(功能和接口說(shuō)明、程序處理邏輯的描述、輸入輸出數(shù)據(jù)格式的描述)
?測(cè)試要求說(shuō)明書(shū)(測(cè)試類型和目標(biāo),測(cè)試用例,測(cè)試方法)
2.5.4 程序設(shè)計(jì)評(píng)審
2.6 編寫(xiě)應(yīng)用系統(tǒng)設(shè)計(jì)文檔
?系統(tǒng)配置說(shuō)明、構(gòu)件劃分圖、構(gòu)件間的接口、構(gòu)件處理說(shuō)明、屏幕設(shè)計(jì)文檔、報(bào)表設(shè)計(jì)文檔、程序設(shè)計(jì)文檔、文件設(shè)計(jì)文檔、數(shù)據(jù)庫(kù)設(shè)計(jì)文檔
2.7 設(shè)計(jì)評(píng)審
3. 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)實(shí)施
3.1 整個(gè)系統(tǒng)的配置與管理
3.2 常用數(shù)據(jù)庫(kù)管理系統(tǒng)的應(yīng)用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
?創(chuàng)建數(shù)據(jù)庫(kù)
?創(chuàng)建表、創(chuàng)建索引、創(chuàng)建視圖、創(chuàng)建約束、創(chuàng)建UDDT(用戶自定義類型)
?創(chuàng)建和管理觸發(fā)器
?建立安全體系
3.3 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)安裝
?擬定系統(tǒng)安裝計(jì)劃(考慮費(fèi)用、客戶關(guān)系、雇員關(guān)系、后勤關(guān)系和風(fēng)險(xiǎn)等因素)
?擬定人力資源使用計(jì)劃(組織機(jī)構(gòu)安排的合理性)
?直接安裝(安裝新系統(tǒng)并使系統(tǒng)快速進(jìn)入運(yùn)行狀態(tài))
?并行安裝(新舊系統(tǒng)并行運(yùn)行一段時(shí)間)
?階段安裝(經(jīng)過(guò)一系列的步驟和階段使新系統(tǒng)各部分逐步投入運(yùn)行)
3.4 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)測(cè)試
?擬定測(cè)試目標(biāo)、計(jì)劃、方法與步驟
?數(shù)據(jù)加載,準(zhǔn)備測(cè)試數(shù)據(jù)
?指導(dǎo)應(yīng)用程序員進(jìn)行模塊測(cè)試進(jìn)行驗(yàn)收
?準(zhǔn)備系統(tǒng)集成測(cè)試環(huán)境測(cè)試工具
?寫(xiě)出數(shù)據(jù)庫(kù)運(yùn)行測(cè)試報(bào)告
3.5 培訓(xùn)與用戶支持
4.數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行和管理
4.1 數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行計(jì)劃
?運(yùn)行策略的確定
?確定數(shù)據(jù)庫(kù)系統(tǒng)報(bào)警對(duì)象和報(bào)警方式
?數(shù)據(jù)庫(kù)系統(tǒng)的管理計(jì)劃(執(zhí)行,故障/恢復(fù),安全性,完整性,用戶培訓(xùn)和維護(hù))
4.2 數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行和維護(hù)
?新舊系統(tǒng)的轉(zhuǎn)換
?收集和分析報(bào)警數(shù)據(jù)(執(zhí)行報(bào)警、故障報(bào)警、安全報(bào)警)
?連續(xù)穩(wěn)定的運(yùn)行
?數(shù)據(jù)庫(kù)維護(hù)(數(shù)據(jù)庫(kù)重構(gòu)、安全視圖的評(píng)價(jià)和驗(yàn)證、文檔維護(hù))
?數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行統(tǒng)計(jì)(收集、分析、提出改進(jìn)措施)
?關(guān)于運(yùn)行標(biāo)準(zhǔn)和標(biāo)準(zhǔn)改進(jìn)一致性的建議
?數(shù)據(jù)庫(kù)系統(tǒng)的審計(jì)
4.3 數(shù)據(jù)庫(kù)管理
?數(shù)據(jù)字典和數(shù)據(jù)倉(cāng)庫(kù)的管理
?數(shù)據(jù)完整性維護(hù)和管理(實(shí)體完整性、參照完整性)
?數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的管理(保證數(shù)據(jù)不推遲訪問(wèn))
?數(shù)據(jù)庫(kù)空間及碎片管理
?備份和恢復(fù)(順序、日志(審計(jì)痕跡)、檢查點(diǎn))
?死鎖管理(集中式、分布式)
?并發(fā)控制(可串行性、鎖機(jī)制、時(shí)間戳、優(yōu)化)
?數(shù)據(jù)安全性管理(加密、安全、訪問(wèn)控制、視圖、有效性確認(rèn)規(guī)則)
?數(shù)據(jù)庫(kù)管理員(DBA)職責(zé)
4.4 性能調(diào)整
?SQL語(yǔ)句的編碼檢驗(yàn)
?表設(shè)計(jì)的評(píng)價(jià)
?索引的改進(jìn)
?物理分配的改進(jìn)
?設(shè)備增強(qiáng)
?數(shù)據(jù)庫(kù)性能優(yōu)化
4.5 用戶支持
?用戶培訓(xùn)
?售后服務(wù)
5. SQL
5.1 數(shù)據(jù)庫(kù)語(yǔ)言
?數(shù)據(jù)庫(kù)語(yǔ)言的要素
?數(shù)據(jù)庫(kù)語(yǔ)言的使用方式(交互式和嵌入式)
5.2 SQL概述
?SQL語(yǔ)句的特征
?SQL語(yǔ)句的基本成分
5.3 數(shù)據(jù)庫(kù)定義
?創(chuàng)建數(shù)據(jù)庫(kù)(Create Datebase)、創(chuàng)建表(Create Table)
?定義數(shù)據(jù)完整性
?修改表(Alter Table)、刪除表(Drop Table)
?定義索引(Create Index)、刪除索引(Drop Index)
?定義視圖(Create View)、刪除視圖(Drop View)、更新視圖
5.4 數(shù)據(jù)操作
?Select語(yǔ)句的基本機(jī)構(gòu)
?簡(jiǎn)單查詢
?SQL中的選擇、投影
?字符串比較,涉及空值的比較
?日期時(shí)間,布爾值,輸出排序
?多表查詢
?避免屬性歧義
?SQL中的連接、并、交、差
?SQL中的元組變量
?子查詢
5.5 完整性控制與安全機(jī)制
?主鍵(Primary Key)約束
?外鍵(Foreign Key)約束
?屬性值上的約束(Null、Check、Create Domain)
?全局約束(Create Assertions)
?權(quán)限、授權(quán)(Grant)、銷權(quán)(Revoke)
5.6 創(chuàng)建觸發(fā)器(Create Trigger)
5.7 SQL使用方式
?交互式SQL
?嵌入式SQL
?SQL與宿主語(yǔ)言接口(Declare、共享變量、游標(biāo)、卷游標(biāo))
?動(dòng)態(tài)SQL
?API
5.8 SQL 標(biāo)準(zhǔn)化
6. 網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)庫(kù)
6.1 分布式數(shù)據(jù)庫(kù)
6.1.1 分布式數(shù)據(jù)庫(kù)的概念
?分布式數(shù)據(jù)庫(kù)的特點(diǎn)與目標(biāo)
6.1.2 分布式數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)
?分布式數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)
?數(shù)據(jù)分布的策略(數(shù)據(jù)分片、分布透明性)
?分布式數(shù)據(jù)庫(kù)管理系統(tǒng)
6.1.3 分布式查詢處理和優(yōu)化
6.1.4 分布式事務(wù)管理
?分布式數(shù)據(jù)庫(kù)的恢復(fù)(故障、恢復(fù)、2段提交、3段提交)
?分布式數(shù)據(jù)庫(kù)的透明性(局部、分裂、復(fù)制、處理、并發(fā)、執(zhí)行)
6.1.5 分布式數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用
6.2 網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)施
?數(shù)據(jù)的分布設(shè)計(jì)
?負(fù)載均衡設(shè)計(jì)
?數(shù)據(jù)庫(kù)互連技術(shù)
6.3 面向Web的DBMS技術(shù)
?三層體系結(jié)構(gòu)
?動(dòng)態(tài)Web網(wǎng)頁(yè)
?ASP、JSP、XML的應(yīng)用
7.數(shù)據(jù)庫(kù)的安全性
7.1 安全性策略的理解
?數(shù)據(jù)庫(kù)視圖的安全性策略
?數(shù)據(jù)的安全級(jí)別(最重要的、重要的、注意、選擇)
7.2 數(shù)據(jù)庫(kù)安全測(cè)量
?用戶訪問(wèn)控制(采用口令等)
?程序訪問(wèn)控制(包含在程序中的SQL命令限制)
?表的訪問(wèn)控制(視圖機(jī)制)
?控制訪問(wèn)的函數(shù)和操作
?外部存儲(chǔ)數(shù)據(jù)的加密與解密
8. 數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)與新技術(shù)
8.1 面向?qū)ο髷?shù)據(jù)庫(kù)(OODBMS)
8.1.1 OODBMS的特征
8.1.2 面向?qū)ο髷?shù)據(jù)模型
?對(duì)象結(jié)構(gòu)、對(duì)象類、繼承與多重繼承、對(duì)象標(biāo)識(shí)、對(duì)象包含、對(duì)象嵌套
8.1.3 面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言
8.1.4 對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(ORDBMS)
?嵌套關(guān)系
?復(fù)雜類型
?繼承、引用類型
?與復(fù)雜類型有關(guān)的查詢
?函數(shù)與過(guò)程
?面向?qū)ο笈c對(duì)象關(guān)系
?ORDBMS應(yīng)用領(lǐng)域
8.2 企業(yè)資源計(jì)劃(ERP)和數(shù)據(jù)庫(kù)
8.2.1 ERP概述
?基本MRP(制造資源計(jì)劃)、閉環(huán)MRP、ERP
?基本原理、發(fā)展趨勢(shì)
?ERP設(shè)計(jì)的總體思路(一個(gè)中心、兩類業(yè)務(wù)、三條干線)
8.2.2 ERP與數(shù)據(jù)庫(kù)
?運(yùn)行數(shù)據(jù)庫(kù)與ERP數(shù)據(jù)模型之間的關(guān)系
?運(yùn)行數(shù)據(jù)庫(kù)與ERP數(shù)據(jù)庫(kù)之間的關(guān)系
8.2.3 案例分析
8.3 決策支持系統(tǒng)的建立
?決策支持系統(tǒng)的概念
?數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
?數(shù)據(jù)轉(zhuǎn)移技術(shù)
?聯(lián)機(jī)分析處理(OLAP)技術(shù)
?企業(yè)決策支持解決方案
?聯(lián)機(jī)事務(wù)處理(OLTP)
關(guān)于零基礎(chǔ)怎么樣能快速學(xué)好Python的問(wèn)題,百度提問(wèn)和解答的都很多,你可以百度下看看。我覺(jué)得從個(gè)人自學(xué)的角度出發(fā),應(yīng)從以下幾個(gè)方面來(lái)理解:
1 為什么選擇學(xué)python?
據(jù)統(tǒng)計(jì)零基礎(chǔ)或非專業(yè)的人士學(xué)python的比較多,據(jù)HackerRank開(kāi)發(fā)者調(diào)查報(bào)告2018年5月顯示(見(jiàn)圖),Python排名第一,成為最受歡迎編程語(yǔ)言。Python以優(yōu)雅、簡(jiǎn)潔著稱,入行門(mén)檻低,可以從事Linux運(yùn)維、Python Web網(wǎng)站工程師、Python自動(dòng)化測(cè)試、數(shù)據(jù)分析、人工智能等職位,薪資待遇呈上漲趨勢(shì)。
2 入門(mén)python需要那些準(zhǔn)備?
2.1 心態(tài)準(zhǔn)備。編程是一門(mén)技術(shù),也可說(shuō)是一門(mén)手藝。如同書(shū)法、繪畫(huà)、樂(lè)器、雕刻等,技藝純熟的背后肯定付出了長(zhǎng)時(shí)間的反復(fù)練習(xí)。不要相信幾周速成,也不能急于求成。編程的世界浩瀚無(wú)邊,所以請(qǐng)保持一顆敬畏的心態(tài)去學(xué)習(xí),認(rèn)真對(duì)待寫(xiě)下的每一行代碼,甚至每一個(gè)字符。收拾好自己的心態(tài),向著編程的世界出發(fā)。第一步至關(guān)重要,關(guān)系到初學(xué)者從入門(mén)到精通還是從入門(mén)到放棄。選一條合適的入門(mén)道路,并堅(jiān)持走下去。
2.2 配置 Python 學(xué)習(xí)環(huán)境。選Python2 還是 Python3?入門(mén)時(shí)很多人都會(huì)糾結(jié)。二者只是程序不兼容,思想上并無(wú)大差別,語(yǔ)法變動(dòng)也并不多。選擇任何一個(gè)入手,都沒(méi)有大影響。如果你仍然無(wú)法抉擇,那請(qǐng)選擇 Python3,畢竟這是未來(lái)的趨勢(shì)。
編輯器該如何選?同樣,推薦 pycharm 社區(qū)版,配置簡(jiǎn)單、功能強(qiáng)大、使用起來(lái)省時(shí)省心,對(duì)初學(xué)者友好,并且完全免費(fèi)!其他編輯器如:notepad++、sublimeText 3、vim 和 Emacs等不推薦了。
操作環(huán)境?Python 支持現(xiàn)有所有主流操作平臺(tái),不管是 windows 還是 mac 還是 linux,都能很好的運(yùn)行 Python。并且后兩者都默認(rèn)自帶 Python 環(huán)境。
2.3 選擇自學(xué)的書(shū)籍。我推薦的書(shū)的內(nèi)容由淺入深,建議按照先后順序閱讀學(xué)習(xí):
2.3.1《Python簡(jiǎn)明教程》。這是一本言簡(jiǎn)意賅的 Python 入門(mén)教程,簡(jiǎn)單直白,沒(méi)有廢話。就算沒(méi)有基礎(chǔ),你也可以像讀小說(shuō)一樣,花兩天時(shí)間就可以讀完。適合入門(mén)快速了解語(yǔ)法。
2.3.2 廖雪峰編寫(xiě)的《Python教程》。廖先生的教程涵蓋了 Python 知識(shí)的方方面面,內(nèi)容更加系統(tǒng),有一定深度,有一定基礎(chǔ)之后學(xué)習(xí)會(huì)有更多的收獲。
2.4 學(xué)會(huì)安裝包。Python中有很多擴(kuò)展包,想要安裝這些包可以采用兩種方法:
2.4.1 使用pip或easy_install。
1)在網(wǎng)上找到的需要的包,下載下來(lái)。eg. rsa-3.1.4.tar.gz;
2)解壓縮該文件;
3)命令行工具cd切換到所要安裝的包的目錄,找到setup.py文件,然后輸入python setup.py install
2.4.2 不用pip或easy_install,直接打開(kāi)cmd,敲pip install rsa。
3 提升階段需要恒心和耐力。
完成入門(mén)階段的基礎(chǔ)學(xué)習(xí)之后,常會(huì)陷入一個(gè)瓶頸期,通過(guò)看教程很難進(jìn)一步提高編程水平。這時(shí)候,需要的是反復(fù)練習(xí),大量的練習(xí)??梢詮臅?shū)上的例題、作業(yè)題開(kāi)始寫(xiě),再寫(xiě)小程序片段,然后寫(xiě)完整的項(xiàng)目。我們收集了一些練習(xí)題和網(wǎng)站??筛鶕?jù)自己階段,選擇適合的練習(xí)去做。建議最好挑選一兩個(gè)系列重點(diǎn)完成,而不是淺嘗輒止。
3.1 多做練習(xí)。推薦網(wǎng)站練習(xí):
crossin編程教室實(shí)例:相對(duì)于編程教室基礎(chǔ)練習(xí)著重于單一知識(shí)點(diǎn),
編程實(shí)例訓(xùn)練對(duì)基礎(chǔ)知識(shí)的融會(huì)貫通;
hackerrank:Python 部分難度循序漸進(jìn),符合學(xué)習(xí)曲線
實(shí)驗(yàn)樓:提升編程水平從做項(xiàng)目開(kāi)始;
codewar:社區(qū)型編程練習(xí)網(wǎng)站,內(nèi)容由易到難;
leetcode:為編程面試準(zhǔn)備,對(duì)初學(xué)者稍難;
??途W(wǎng):提供 BAT 等大廠筆試題目;
codecombat:提供一邊游戲一邊編程;
projecteuler:純粹的編程練習(xí)網(wǎng)站;
菜鳥(niǎo)教程100例:基于 py2 的基礎(chǔ)練習(xí);
3.2 遇到問(wèn)題多交流。
3.2.1 利用好搜索引擎。
3.2.2 求助于各大網(wǎng)站。推薦
stackoverflow:這是一個(gè)程序員的知識(shí)庫(kù);
v2ex:國(guó)內(nèi)非常不錯(cuò)的編程社區(qū),不僅僅是包含程序,也包含了程序員的生活;
segmentfault:一家以編程問(wèn)答為主的網(wǎng)站;
CSDN、知乎、簡(jiǎn)書(shū)等
3.2.3 加入相關(guān)的QQ、微信群、百度知道。不懂的可以隨時(shí)請(qǐng)教。
HTAP(Hybrid Transaction and Analytical Process,混合事務(wù)和分析處理)自 2014 年明確提出以后成為了很多數(shù)據(jù)庫(kù)廠商努力的方向。其實(shí) HATP 并不新鮮,早年 RDB 剛興起時(shí)本來(lái)就是用一個(gè)數(shù)據(jù)庫(kù)同時(shí)做事務(wù)和分析,但隨著數(shù)據(jù)規(guī)模不斷變大再直接基于業(yè)務(wù)庫(kù)做分析就會(huì)影響業(yè)務(wù),這時(shí)數(shù)據(jù)倉(cāng)庫(kù)出現(xiàn)了,將業(yè)務(wù)數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉(cāng)庫(kù)來(lái)專門(mén)應(yīng)對(duì)分析需求,同時(shí)與業(yè)務(wù)庫(kù)隔離,這樣不僅可以更好地服務(wù)分析場(chǎng)景,又不會(huì)對(duì)業(yè)務(wù)系統(tǒng)產(chǎn)生影響,這是“合久必分”的階段。但是由于數(shù)據(jù)倉(cāng)庫(kù)將 歷史 數(shù)據(jù)與實(shí)時(shí)數(shù)據(jù)分開(kāi)了,有時(shí)經(jīng)常還會(huì)采用異構(gòu)數(shù)據(jù)庫(kù)(或大數(shù)據(jù)平臺(tái)),如果要分析實(shí)時(shí)全量數(shù)據(jù)(T+0)就非常困難了,而 T+0 又是很多及時(shí)性業(yè)務(wù)必須的,這就造成了“數(shù)據(jù)倉(cāng)庫(kù)之殤”。為了解決這個(gè)問(wèn)題,能不能把 AP 和 TP 在一個(gè)數(shù)據(jù)庫(kù)內(nèi)同時(shí)滿足呢?于是 HTAP 再次登場(chǎng)了,這又到了“分久必合”的階段。
但我們知道,AP 和 TP 兩個(gè)場(chǎng)景有顯著不同,前者涉及的數(shù)據(jù)量很大,并且計(jì)算邏輯復(fù)雜,但并發(fā)量往往不大,沒(méi)有數(shù)據(jù)一致性要求,甚至經(jīng)常為了使用方便可以不滿足范式;后者恰恰相反,數(shù)據(jù)量不大且數(shù)據(jù)處理邏輯簡(jiǎn)單,但并發(fā)量很大,有數(shù)據(jù)強(qiáng)一致性要求。從功能上講,TP 數(shù)據(jù)庫(kù)本來(lái)就能執(zhí)行 SQL,也本來(lái)就具有一定的 AP 功能。當(dāng)初之所以要把 TP 和 AP 分開(kāi),就是因?yàn)榫薮髷?shù)據(jù)量時(shí),繼續(xù)采用偏向 TP 的技術(shù)就不能高效地處理 AP 的需求(比如 AP 要求高性能需要使用列存,但 TP 為了寫(xiě)入更新便利需要使用行存),TP 和 AP 的這些巨大差異就決定了這兩個(gè)場(chǎng)景不能采用一個(gè)技術(shù)體系來(lái)同時(shí)滿足,而這件事到現(xiàn)在并沒(méi)有實(shí)質(zhì)性地改變。
即使如此,還是有一些廠商嘗試在同一引擎中同時(shí)滿足 TP 和 AP 的需求,實(shí)現(xiàn)上有幾種方式。一種是采用多副本的方式,其中某一個(gè)副本(可能使用列存)專門(mén)用來(lái)滿足 AP 的需求;一種是采用行列混合存儲(chǔ),行存和列存各一份,二者之間自動(dòng)轉(zhuǎn)換;還有一種方式可以不區(qū)分行列存儲(chǔ),通過(guò)單一存儲(chǔ)引擎支撐 TP 和 AP 場(chǎng)景,常見(jiàn)的是某些內(nèi)存數(shù)據(jù)庫(kù)。這類 HTAP 數(shù)據(jù)庫(kù)在實(shí)現(xiàn)上會(huì)優(yōu)先滿足 TP 的需要,在此基礎(chǔ)上再發(fā)展 AP 的功能,因此在滿足 AP 需求時(shí)相對(duì)一般專用的 AP 產(chǎn)品往往會(huì)有很大差距。
另一種 HTAP 數(shù)據(jù)庫(kù)的做法是在底層仍然將兩個(gè)場(chǎng)景分離,以“模塊化”的方式來(lái)設(shè)計(jì)存儲(chǔ),業(yè)務(wù)數(shù)據(jù)產(chǎn)生后就會(huì)被復(fù)制兩份(不考慮副本的情況),一份仍然使用行存用于交易,一份復(fù)制使用列存用于分析。相應(yīng)的存儲(chǔ)和計(jì)算再借助原本在 TP 和 AP 領(lǐng)域已經(jīng)成熟的技術(shù)進(jìn)行封裝和優(yōu)化,同時(shí)設(shè)計(jì)統(tǒng)一的對(duì)外訪問(wèn)接口,底層的差異對(duì)應(yīng)用層完全透明,這樣就形成了可用的 HTAP 產(chǎn)品。
無(wú)論采用哪種方式設(shè)計(jì) HTAP 數(shù)據(jù)庫(kù),在應(yīng)用時(shí)都會(huì)碰到一個(gè)問(wèn)題,如果原來(lái)的業(yè)務(wù)數(shù)據(jù)庫(kù)不是(大概率)采用 HTAP 數(shù)據(jù)庫(kù)就要涉及數(shù)據(jù)庫(kù)遷移,這將面臨巨大的風(fēng)險(xiǎn)和成本。不僅要考量數(shù)據(jù)類型差異導(dǎo)致的數(shù)據(jù)結(jié)構(gòu)遷移過(guò)程中需要進(jìn)行改造和處理,還會(huì)涉及視圖、存儲(chǔ)過(guò)程以及復(fù)雜 SQL 的改造等,還有在遷移工程中遇到的種種問(wèn)題要解決,可謂坑多且深。由此帶來(lái)的業(yè)務(wù)影響可能會(huì)帶來(lái)極大價(jià)值損耗。
此外,現(xiàn)代業(yè)務(wù)系統(tǒng)不僅涉及 RDB,還有 MongoDB、InfluxDB 等 NoSQL,以及各種自己封裝的業(yè)務(wù)數(shù)據(jù)源,種類很多五花八門(mén)。這些數(shù)據(jù)源要遷移到新數(shù)據(jù)庫(kù)就沒(méi)那么簡(jiǎn)單了,像 MongoDB 數(shù)據(jù)轉(zhuǎn)存到 RDB 會(huì)發(fā)現(xiàn)實(shí)現(xiàn)很困難。MongoDB 中的很多數(shù)據(jù)類型和集合之間的關(guān)系在 RDB 中并不存在,比如嵌入式的數(shù)據(jù)結(jié)構(gòu)、數(shù)組和哈希等集合類型、多對(duì)多關(guān)系的實(shí)現(xiàn)。這些問(wèn)題并不是簡(jiǎn)單通過(guò)數(shù)據(jù)遷移就能解決的,需要在遷移之前先對(duì)部分?jǐn)?shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu),這需要事先投入相當(dāng)多的人工和時(shí)間成本去梳理業(yè)務(wù)并設(shè)計(jì)目標(biāo)數(shù)據(jù)組織方式。即使最后花費(fèi)很大代價(jià)把業(yè)務(wù)數(shù)據(jù)源遷移到 HTAP 上,原來(lái)那些多樣性數(shù)據(jù)源自身的優(yōu)勢(shì)卻又喪失了,得失之間有時(shí)甚至很難權(quán)衡是否值得。
我們知道,數(shù)據(jù)計(jì)算性能和數(shù)據(jù)組織密不可分,在 AP 類場(chǎng)景中通常要使用列存來(lái)發(fā)揮計(jì)算優(yōu)勢(shì),但只有列存是遠(yuǎn)遠(yuǎn)不夠的,有些復(fù)雜計(jì)算需要針對(duì)計(jì)算特點(diǎn)專門(mén)設(shè)計(jì)數(shù)據(jù)存儲(chǔ)形式(比如有序存儲(chǔ)、數(shù)據(jù)類型轉(zhuǎn)換、預(yù)計(jì)算等)。而這些對(duì)性能要求高的復(fù)雜計(jì)算在 AP 類場(chǎng)景中并不少見(jiàn),但無(wú)論采用何種方式的 HTAP,簡(jiǎn)單“自動(dòng)化”地行存轉(zhuǎn)列存并不能實(shí)現(xiàn)相對(duì)“個(gè)性化”的效果,性能往往無(wú)法達(dá)標(biāo)。這個(gè)道理也很簡(jiǎn)單,天下沒(méi)有什么都好的事兒,你想融合就必須容忍在某一或某些方面的不足。
遷移風(fēng)險(xiǎn)大、成本高、有損失、性能還可能不達(dá)標(biāo),考慮到這些問(wèn)題,我們不禁會(huì)問(wèn):HTAP 數(shù)據(jù)庫(kù)這個(gè)技術(shù)路線對(duì)嗎?
說(shuō)到這里我們?cè)倩仡^看一下 HTAP 的目的,為什么要用 HTAP?
其實(shí)就是為了進(jìn)行全量數(shù)據(jù)實(shí)時(shí)查詢統(tǒng)計(jì),也就是 T+0!
如果數(shù)據(jù)倉(cāng)庫(kù)等相關(guān)技術(shù)能搞定這個(gè)問(wèn)題,那自然也就不需要 HTAP 了。不過(guò)很遺憾,數(shù)據(jù)倉(cāng)庫(kù)仍然延用了關(guān)系數(shù)據(jù)庫(kù)的封閉體系,數(shù)據(jù)要先入庫(kù)才能計(jì)算,而且入庫(kù)又有較強(qiáng)約束。這些導(dǎo)致數(shù)據(jù)倉(cāng)庫(kù)無(wú)法很好實(shí)現(xiàn)跨數(shù)據(jù)源尤其是異構(gòu)和非關(guān)系型數(shù)據(jù)源的混合計(jì)算,很難實(shí)現(xiàn) T+0 的目標(biāo)。
但集算器 SPL 可以。
集算器 SPL(Structured Process Language),一個(gè)專門(mén)面向結(jié)構(gòu)化數(shù)據(jù)計(jì)算的 開(kāi)源 計(jì)算引擎和程序語(yǔ)言。除了提供了豐富的計(jì)算類庫(kù)使其擁有不依賴數(shù)據(jù)庫(kù)的獨(dú)立計(jì)算能力外,SPL 可以對(duì)接多種數(shù)據(jù)源并完成多源混合計(jì)算,從而輕松完成跨數(shù)據(jù)源的 T+0 查詢。
SPL 通過(guò)與現(xiàn)有系統(tǒng)融合的方式實(shí)現(xiàn) HTAP,這樣原有系統(tǒng)的改動(dòng)很小,TP 部分幾乎不動(dòng),甚至原有的 AP 數(shù)據(jù)源也可以繼續(xù)工作,逐步使用 SPL 接管 AP 業(yè)務(wù)。SPL 部分或全部接管 AP 業(yè)務(wù)后, 歷史 冷數(shù)據(jù)使用 SPL 高性能文件存儲(chǔ),原來(lái)針對(duì)業(yè)務(wù)庫(kù)到數(shù)據(jù)倉(cāng)庫(kù)的 ETL 過(guò)程可以直接移植到 SPL 上。冷數(shù)據(jù)量大且不再變化使用 SPL 高性能文件存儲(chǔ)可以獲得更高地計(jì)算性能;熱數(shù)據(jù)量小仍然存放在原有 TP 數(shù)據(jù)源中,SPL 直接讀取計(jì)算,由于熱數(shù)據(jù)量并不大,直接基于 TP 數(shù)據(jù)源查詢也不會(huì)對(duì)其造成太大影響,訪問(wèn)時(shí)間也不會(huì)太長(zhǎng)。再利用 SPL 的冷熱數(shù)據(jù)混合計(jì)算能力,就可以獲得針對(duì)全量數(shù)據(jù)的 T+0 實(shí)時(shí)查詢。我們只要定期將變冷的數(shù)據(jù)固化到 SPL 的高性能存儲(chǔ)中,原數(shù)據(jù)源只需要保持少量近期新產(chǎn)生的熱數(shù)據(jù)即可。這樣不僅實(shí)現(xiàn)了 HTAP,而且還是高性能的 HTAP,且對(duì)應(yīng)用架構(gòu)沖擊很小。
現(xiàn)代信息系統(tǒng)中建設(shè)數(shù)據(jù)倉(cāng)庫(kù)等專門(mén)服務(wù)分析場(chǎng)景已然十分常見(jiàn),加之?dāng)?shù)據(jù)源種類繁多,將這些數(shù)據(jù)都遷移到一處代價(jià)太大了,對(duì)于這點(diǎn)前文我們已經(jīng)分析過(guò)。如果能在現(xiàn)有架構(gòu)的基礎(chǔ)上增加跨數(shù)據(jù)源的實(shí)時(shí)混合計(jì)算能力,就相當(dāng)于插上了 HTAP 的翅膀,在不改變現(xiàn)有架構(gòu)的情況下快速實(shí)現(xiàn) HTAP 的需求,而這正是 SPL 的強(qiáng)項(xiàng)。
SPL 支持多種數(shù)據(jù)源,RDB、NoSQL 以及 RESTful 等都可以直接使用,還可以解析 JSON/XML 等類型數(shù)據(jù),可以對(duì)接 Elasticsearch、Kafka 等數(shù)據(jù)源,此外傳統(tǒng) / 新興數(shù)據(jù)倉(cāng)庫(kù)、大數(shù)據(jù)平臺(tái)等也可以直接取數(shù)計(jì)算。
在對(duì)接的同時(shí)可以針對(duì)任意多種數(shù)據(jù)源進(jìn)行混合計(jì)算,這樣實(shí)時(shí)數(shù)據(jù)從生產(chǎn)庫(kù)中讀與取自 歷史 庫(kù) / 數(shù)據(jù)倉(cāng)庫(kù) / 大數(shù)據(jù)平臺(tái)的冷數(shù)據(jù)混合計(jì)算就可以實(shí)現(xiàn) T+0 全量實(shí)時(shí)數(shù)據(jù)查詢。這樣原有應(yīng)用架構(gòu)幾乎不用變動(dòng)(尤其是生產(chǎn)庫(kù))就可以獲得 HTAP(架構(gòu)層面)期望的效果,成本極低。
使用 SPL 在現(xiàn)有架構(gòu)上輸出 HTAP 能力還有一個(gè)好處是可以充分保留原有數(shù)據(jù)源的優(yōu)勢(shì)。NoSQL 仍然可以繼續(xù)使用而不必強(qiáng)行將結(jié)構(gòu)拉成 RDB 的形式,自己封裝的數(shù)據(jù)訪問(wèn)與交互接口也不必費(fèi)心去遷就新數(shù)據(jù)庫(kù),原來(lái)的優(yōu)勢(shì)與個(gè)性化仍然保持,風(fēng)險(xiǎn)很低的同時(shí)價(jià)值幾乎沒(méi)有損耗。
在分析側(cè)也一樣,基于 SPL 也可以繼續(xù)使用原本建設(shè)好的分析平臺(tái)。但如前所述,分析場(chǎng)景面臨的數(shù)據(jù)量大且計(jì)算邏輯復(fù)雜,尤其需要高性能。SPL 還提供了高性能計(jì)算機(jī)制,可以全面接管原來(lái)分析側(cè)(AP)的業(yè)務(wù)實(shí)現(xiàn)高性能數(shù)據(jù)計(jì)算。
我們知道,高性能計(jì)算涉及兩方面,一個(gè)是數(shù)據(jù)組織方式即數(shù)據(jù)存儲(chǔ),另一個(gè)是算法,這二者密不可分,很多高性能算法需要將數(shù)據(jù)組織成相應(yīng)格式(如有序)才能發(fā)揮作用。SPL 提供了自有的高性能存儲(chǔ)機(jī)制,直接采用文件系統(tǒng)。將數(shù)據(jù)存儲(chǔ)特定格式的文件中,不僅可以獲得更高的 IO 存取效率以及文件系統(tǒng)靈活的管理能力,還可以充分利用自有格式的列存、有序、壓縮、并行分段等數(shù)據(jù)存儲(chǔ)優(yōu)勢(shì),從而高效地發(fā)揮高性能算法效力。
而在算法方面,SPL 提供了十分豐富的高性能算法庫(kù)。遍歷復(fù)用、有序歸并、外鍵預(yù)關(guān)聯(lián)、標(biāo)簽位維度、并行計(jì)算等,都已經(jīng)封裝好,可以直接使用,配合 SPL 的存儲(chǔ)機(jī)制就能獲得高性能。而且這其中有很多算法都是 SPL 獨(dú)創(chuàng)的,在業(yè)內(nèi)也是首次提出。
如果簡(jiǎn)單地將 TP 中的行存轉(zhuǎn)換成 SPL 中的列存,工作量也非常低。但為了獲得高性能,常常還需要精心設(shè)計(jì)存儲(chǔ)方式,這時(shí),將會(huì)有一定量的 ETL 動(dòng)作,但這個(gè)工作與原來(lái)從業(yè)務(wù)系統(tǒng) ETL 數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)基本是一樣的,并不會(huì)更復(fù)雜,而且這個(gè)工作對(duì)于高性能是少不了的。和一般 HTAP 數(shù)據(jù)庫(kù)很難實(shí)施經(jīng)過(guò)有效設(shè)計(jì)的存儲(chǔ)相比,SPL 將冷熱數(shù)據(jù)分離后可以從容不迫地像以前 TP/AP 分離時(shí)那樣實(shí)施更高效的存儲(chǔ)組織,這樣更能將 TP 和 AP 雙邊的性能發(fā)揮到極致。相對(duì)大幅的性能提升,數(shù)據(jù)組織的工作往往是值得的。
在實(shí)戰(zhàn)中,使用 SPL 存儲(chǔ)和算法提升數(shù)倍數(shù)十倍性能的案例很多。比如在某保險(xiǎn)公司車險(xiǎn)保單跑批的案例( 開(kāi)源 SPL 優(yōu)化保險(xiǎn)公司跑批優(yōu)從 2 小時(shí)到 17 分鐘 )中,使用 SPL 將計(jì)算時(shí)間從 2 小時(shí)縮短到 17 分鐘。這里使用 SPL 接管存儲(chǔ)后再利用 SPL 特有的遍歷復(fù)用技術(shù)(在對(duì)大數(shù)據(jù)的一次遍歷過(guò)程中實(shí)現(xiàn)多種運(yùn)算)有效地減少外了存訪問(wèn)量,同時(shí)將涉及對(duì)一個(gè)大表進(jìn)行三次關(guān)聯(lián)和匯總的運(yùn)算只需要遍歷一次(SQL 要將大表遍歷三次),并在關(guān)聯(lián)運(yùn)算上采用了不同的算法,因此獲得了巨大的性能提升。
還有在 開(kāi)源 SPL 將銀行手機(jī)賬戶查詢的預(yù)先關(guān)聯(lián)變成實(shí)時(shí)關(guān)聯(lián) 的案例中,使用 SPL 將原本只能預(yù)關(guān)聯(lián)的手機(jī)賬戶查詢變成實(shí)時(shí)關(guān)聯(lián),同時(shí)服務(wù)器數(shù)量從 6 臺(tái)降為 1 臺(tái)。這里充分利用了 SPL 的有序存儲(chǔ)機(jī)制,一次性讀取整個(gè)賬戶數(shù)據(jù)時(shí)可以有效減少硬盤(pán)時(shí)間(物理存儲(chǔ)連續(xù)),再借助區(qū)分維表和事實(shí)表的外鍵實(shí)時(shí)關(guān)聯(lián)技術(shù)使用單機(jī)就能完成實(shí)時(shí)關(guān)聯(lián)查詢,性能提升明顯,硬件需求也降低了許多。
基于 SPL 的 HTAP,并不止于 T+0 和高性能。
數(shù)據(jù)計(jì)算(主要指 OLAP 場(chǎng)景)一向有兩個(gè)難點(diǎn),跑得慢(性能)和寫(xiě)得簡(jiǎn)單(開(kāi)發(fā)效率)。前者我們說(shuō)過(guò)了,后者使用 SPL 還可以獲得很大改善。
現(xiàn)在我們處理數(shù)據(jù)還主要基于 SQL(其他高級(jí)語(yǔ)言太麻煩),但 SQL 仍然有很多不好描述的運(yùn)算,這個(gè)原因主要是 SQL 的理論限制,這里我們不多說(shuō),感興趣的小伙伴可以閱讀這篇文章: 寫(xiě)著簡(jiǎn)單跑得又快的數(shù)據(jù)庫(kù)語(yǔ)言 SPL
鑒于 SQL 在復(fù)雜計(jì)算方面的描述能力(開(kāi)發(fā)效率)太差,SPL 并沒(méi)有沿用 SQL 體系,而是基于新的理論重新設(shè)計(jì)了一套敏捷計(jì)算語(yǔ)法,基于這個(gè)語(yǔ)法再實(shí)施計(jì)算尤其復(fù)雜計(jì)算會(huì)更有優(yōu)勢(shì),寫(xiě)法也更簡(jiǎn)單。
我們可以通過(guò)電商系統(tǒng)中常見(jiàn)的漏斗運(yùn)算來(lái)感受一下 SPL 的簡(jiǎn)潔性。
SQL(oracle)實(shí)現(xiàn):
SPL 實(shí)現(xiàn):
oracle 的 SQL 寫(xiě)出來(lái)要三十多行,理解起來(lái)有相當(dāng)?shù)碾y度。而且這段代碼和漏斗的步驟數(shù)量相關(guān),每增加一步數(shù)就要再增加一段子查詢。這種 SQL,寫(xiě)出來(lái)就已經(jīng)不易,性能優(yōu)化更是無(wú)從談起。
相比之下,SPL 就簡(jiǎn)單得多,處理任意步驟數(shù)都是這段代碼。
好了,說(shuō)到這里各位看官應(yīng)該了解了,SPL 并不是一個(gè) HTAP 數(shù)據(jù)庫(kù),而是提供了一種新思路來(lái)滿足 HTAP 的需要。HTAP 數(shù)據(jù)庫(kù)很熱,廠商的宣傳口號(hào)很容易讓我們陷入只能使用一種數(shù)據(jù)庫(kù)來(lái)解決 HTAP 問(wèn)題的藩籬而不自知。但只要我們?cè)俣嘞胍稽c(diǎn)就會(huì)發(fā)現(xiàn),HTAP 是一種合理的業(yè)務(wù)需求,滿足它或許并不需要一種新數(shù)據(jù)庫(kù),而是能夠解決問(wèn)題的新技術(shù)和架構(gòu),而 SPL 提供了這種可能。
SPL下載地址:
SPL開(kāi)源地址: