一個內存數據庫模型的設計與實現_第1頁
一個內存數據庫模型的設計與實現_第2頁
一個內存數據庫模型的設計與實現_第3頁
一個內存數據庫模型的設計與實現_第4頁
一個內存數據庫模型的設計與實現_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2022年4月14日星期四1一個內存數據庫模型的設計與實現榮垂田榮垂田2022年4月14日星期四2主要內容1. 課題背景2. 內存數據庫概述3. 現有系統分析4. 內存數據庫服務器的設計與實現5. 客戶端軟件開發包的設計6. 系統配置與管理工具的設計與實現7. 測試2022年4月14日星期四3課題背景n 隨著電力系統的改革,電能量采集系統的地位越來越重要,系統由單純服務于調度擴展到電力行業的計劃、交易、營銷等專業,數據量由單純的電量擴展到需量、瞬時量、參變量等。n 為適應電力系統的發展滿足電力改革的需求,決定在原有的電能量采集系統產品的基礎上,研發面向未來的新一代采集系統。新系統要求系統的數據

2、庫具有高效的、穩定的實時特性。2022年4月14日星期四4內存數據庫概述n實現的可行性分析實現的可行性分析n隨著半導體工藝的提高,內存的集成度越來越高,計算機硬件也可以支持超大內存的管理,這樣將整個數據庫或者數據庫的一部分常駐內存成為可能 n現代的應用需求需要高性能的數據庫提供實時可靠的數據,像生產過程控制,CAD/CAM,指揮系統,航空航天,電力系統等。使內存數據庫有了的用武之地。2022年4月14日星期四5內存數據庫概述n傳統的磁盤數據庫系統旨在處理永久、穩定的數據,強調維護數據的完整性、一致性,其性能目標是提高系統的吞吐量,盡可能多的處理事務。內存數據庫則通過特殊的數據組織和訪問方式,提

3、高內存和CPU 的利用率、數據的訪問效率。n數據的訪問方式不同 n即使磁盤數據庫有足夠大的緩沖區,可以將所有的數據一次換入到緩沖區,也仍然不會獲得內存的所有優點,因為其索引依然是按照訪問磁盤來設計的。即使所有數據都在緩沖區,每次的數據訪問依然要計算數據的物理地址,檢查是否在緩沖區等 內存數據庫(內存數據庫(MMDB Main Memory Database)與)與磁盤數據庫(磁盤數據庫(DRDB Disk Resident Database)的區別)的區別2022年4月14日星期四6現有系統的分析 n當前電量采集系統分析2022年4月14日星期四7現有系統的分析根據當前的形勢分析,現有系統將面

4、臨以下的挑戰根據當前的形勢分析,現有系統將面臨以下的挑戰n 實時數據的存儲實時數據的存儲 以某電網公司現有的電量數據為例,每天的電量表底數據、時段電量數據、加工統計數據就有上百萬條記錄,若加上需量、瞬時量、參變量等數據,每天的數據量可達到近千萬級 。n 數據訪問的實時性數據訪問的實時性 隨著實時交易、實時核算的需求,要求系統的數據采集、數據加工、系統監控等子系統都要具有較高的實時性,也就是說數據采集后要快速存入數據庫以備各種統計、報表的數據加工之用;統計后的各種報表要通過快速的數據訪問呈現給用戶。 n 數據庫系統負荷數據庫系統負荷 新一代的電量系統不僅為調度專業服務,還要為電力系統的其它專業的

5、系統提供數據,外系統對電量系統數據的訪問必定增大電量系統數據庫的負荷。2022年4月14日星期四8改進方案2022年4月14日星期四9內存數據庫服務器的設計與實現 內存數據庫系統結構由系統配置和客戶端管理程序生成,是對內存數據庫的定制,對內存數據庫的運行起決定性的作用。記錄數據庫的運行狀況,如是否為初次啟動,是否有未更新到磁盤的數據及其數量等記錄所有對數據庫數據有影響的操作的相關信息,這個文件能夠保證所有更新的持久化即更新到磁盤數據庫,以及故障后的恢復用來管理來自客戶端的請求,此部分用來實現多線程并發服務器,對于客戶端的每個請求只要在服務器允許的情況下都有一個線程與之對應實現客戶端請求的分析和

6、處理,包括SQL語句的處理,內存數據訪問,索引的更新等應用程序需要或更新過的數據,在數據庫正常工作期間常駐內存,如索引、數據庫信息、數據字典等2022年4月14日星期四10物理數據組織與管理n內存數據的物理組織方式是內存數據庫實現的基礎,其存儲結構、索引結構、中間數據存儲結構都必須考慮內存直接存取這一特征。n本系統的數據采用段頁式組織方式和行存儲模型,段是邏輯段,其空間不一定連續,每個段存放一個關系,也即存放一個表的全部數據,每個段由不同的頁組成,頁是空間分配和回收的基本單位。2022年4月14日星期四112022年4月14日星期四12內存數據庫的索引結構n在本次設計的數據庫中使用由B Tre

7、e和AVL 樹發展來的T Tree索引. T Tree索引既具有B Tree存儲效率高的優點也有AVL 樹查找速度快的優點 操作通常會引起以下情況:n插入引起節點溢出n刪除引起節點合并n樹的平衡處理2022年4月14日星期四13內內存存數數據據庫庫的的工工作作流流程程2022年4月14日星期四14并發服務器的創建n內存數據庫服務器必須一直的工作,隨時接收客戶端的請求和數據,因而不能受外界信號的影響,所以把內存數據的主進程創建為守護進程。守護進程是脫離于終端并且在后臺運行的進程,只要系統沒有關機或者崩潰,守護進程將在系統中不間斷地運行。n該服務器是多線程服務器,對于客戶端的每一個連接請求服務器端

8、都有一個線程為之提供服務。線程的管理由線程池來實現,以連接為背景,主要包括:線程的創建及預創建,線程的分配,回收以及銷毀。2022年4月14日星期四15SQL語句分析 內存數據庫在設計的過程中為了不改變用戶使用數據庫系統的習慣,客戶端的請求都以SQL語句的方式發送給服務器,服務器接收到客戶端的請求后,經過SQL語句分析器分析,將其中的信息提取出來保存到一個設定的結構內,以供服務器程序根據此結構中的內容執行相應的操作。 typedef struct int member_sequence1; int member_sequence2; int operation_type;union int v

9、alue_int; char value_strLENGTH; un; Search_Parameter;struct Operation char table_name20; Opertion_Type type; Search_Parameter sp; ;2022年4月14日星期四16服務器與客戶端之間的通信協議 為了使內存數據庫正常的工作,保證客戶端與服務器之間的通信,根據實際的工作需求制定了客戶端與服務器之間的通信協議。根據客戶端請求的不同可以將通信過程分為兩類: 一類是返回結果不包含結果集的,例如Update,Delete,Insert,Create等語句; 另一類請求是包含Sel

10、ect查詢語句的請求,這類請求通常都要返回結果集以供客戶端的應用程序使用。2022年4月14日星期四17無返回結果集有返回結果集2022年4月14日星期四18事務與并發控制n 事務是用戶定義的一個數據庫操作的序列,這些操作要么全作要么全不做,是一個不可分割的工作單位。在關系數據庫中可以是一條SQL語句,一組SQL語句或整個程序。在本內存數據庫中把每一個客戶端的請求也即SQL語句作為一個事務來處理。n 數據庫是一個共享的資源,可以供多個用戶使用。在這樣的系統中,同一時刻并行運行的事務數可達數百個,然而這樣事務的ACID特性可能遭到破壞,為了保證數據庫的一致性,DBMS需要對并發操作進行正確的調度

11、數據庫的并發調度機制。n 并發控制就是要用正確的方式調度并發操作,使每一個用戶事務的執行不受其他事務的干擾,采用的主要技術是封鎖機制。 2022年4月14日星期四19故障恢復n 為了保證操作的完整性和數據庫的ACID特性,對數據庫所做的每一個影響數據庫數據的操作都將被記錄到日志文件中,對于日志文件的記錄使用WAL(Write-Ahead Log)方法,即先將對表的操作記錄到日志文件中,然后才進行數據的操作。n 數據庫在啟動的時候將建立兩個日志文件,庫中的每個表在兩個日志文件的任何一個中都有自己的記錄日志的空間。日志使用內存映射日志,數據庫啟動時首先將其中的一個日志文件映射到內存,這樣每個表都有

12、自己的日志空間互不影響,空間的大小可以由用戶來設置,兩個日志空間使用Ping_Pang法輪換使用。日志空間(文件)的切換發生在以下情況:n(1)日志空間滿n(2)日志監視線程檢查發現當前日志空間中的記錄量達到用戶的預定值n(3)通過程序更改當前日志空間2022年4月14日星期四20數據庫故障恢復的過程n1.根據系統配置文件進行數據庫的重建和相關信息的初始化。n2.檢查運行記錄文件。檢查數據庫是否為首次啟動。根據設計的要求,在數據庫初次或者經過配置重新啟動前要運行初始化腳本將所有的文件信息初始化。如果是初次起動則進入3;否則,無論是用戶主動暫停運行還是被動停止都要根據運行記錄文件和日志文件以及系

13、統配置文件將兩個日志文件中的操作更新到磁盤上。n3.根據系統配置文件,將需要的歷史數據讀入到內存數據庫。n4.將運行記錄文件,日志文件映射到內存,并啟動日志定時監視進程。n5.進行提供服務前的初始化工作。2022年4月14日星期四21內存數據庫的客戶端軟件開發包n本內存數據庫系統采用C/S模式實現,客戶端的請求都以SQL語句的形式發送給服務器,為了方便用戶的使用,提供客戶端軟件開發包。提供此開發包的目的在于減少使用者的勞動量,屏蔽一些底層的實現。n其中的功能主要有:連接的建立,SQL發送前的處理,通信協議的客戶端實現,返回結果的提取等。2022年4月14日星期四22系統配置與管理客戶端的設計與

14、實現n本內存數據庫在設計的過程中,是以傳統的磁盤數據庫作為內存數據庫數據持久化的存儲介質。內存數據庫中的數據是最新的版本,是從遠程裝置采集來的。內存數據庫中表結構的屬性集合是磁盤數據庫中表的屬性的集合的子集n由于本內存數據庫和與其相關的磁盤數據庫的特殊關系,在分析了現有內存數據庫的配置方式的基礎上,我們提供了配置工具,利用此工具可以快速對內存數據庫的結構進行構造。2022年4月14日星期四23設計的原理2022年4月14日星期四24配置工具的使用過程n首先要選擇相應的數據庫;n登錄數據庫,這時工具界面顯示的是其中的表信息;n根據實際的需求選擇需要在內存數據庫中實現的表,這時顯示的是表的整體信息,如創建時間,包含的字段數等;n選擇相應的表,再點擊選擇字段菜單,即進入字段選擇界面,這時現實的是該表中包含的各個字段。n選擇要在內存數據庫中出現的字段,使需要的字段出現在右邊的多選框內。n如果已經選擇完畢,則可以點擊生成文件按鈕,這樣這個表的選擇結束。n依次處理其他的表。 2022年4月14日星期四25測試1.實時數據的存儲。2.提高了系統的實時性。 3.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論