999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Smartphone 類手機數據庫設計

2013-03-19 13:03:52劉洲洲
微處理機 2013年3期
關鍵詞:數據庫設備

劉洲洲

(西安航空學院,西安 710077)

1 引言

隨著多媒體移動終端(PDA,智能手機)的快速發(fā)展,手機已經不再只是用于語音通信的手持設備,而成為集成了MP3、MP4 以及上網移動辦公等附加功能的嵌入式通信平臺。同時移動通信網絡的服務能力和承載能力也取得大幅度的提升,其發(fā)展也趨于智能化,各種功能都將變得更為強勁[1-2]。與此同時,手機需要管理的數據量也越來越大,傳統的手機軟件系統很難適應新的需要。現在的主流手機都是簡單地從存儲介質上直接讀取短信、電話簿和通話記錄等,也就是基于文件系統實現的,這樣的架構有一個最大的弊端,那就是數據庫受到了文件系統的牽制,文件系統的低效率會直接影響到數據庫的存取速度。現在要改為基于數據庫設備,直接面向Flash 驅動的方案進行設計研究。

2 數據庫方案設計

文中的Smartphone是Accelerator Technology 公司開發(fā)的一種嵌入式RTOS 產品,其操作系統為Nucleus,只需一次性購買Licenses,就可以獲得操作系統的源碼,目前手機行業(yè)有很多使用Nucleus 操作系統。測試平臺采用展訊的SC6600 基帶處理芯片,多媒體芯片則采用廣達的QCP1880 芯片平臺,音頻編解碼芯片采用Wolfson 8750 芯片。

數據庫設備是這樣一個概念,用一塊Flash的一段連續(xù)空間構成數據庫存儲介質,在此基礎上加上數據庫驅動和一個簡單的FMM,就構成了數據庫設備,它向數據庫系統提供一個可逆的連續(xù)邏輯地址空間。所謂可逆就是在Flash 整理的時候,物理地址改動而邏輯地址不變。所謂連續(xù)指的是數據庫設備向數據庫系統提供的是一個線性連續(xù)的地址空間,但是在設備低層,依然是一個塊設備,一個塊定義為一個擦除塊的大小,根據Flash的硬件特性可能是64K 或者16K。

本中所描述的數據庫并不是一個關系數據庫,每個數據庫由一個個數據庫名和若干個變長的記錄外加一個或者多個索引表構成。索引表按照一定的規(guī)則對記錄進行排序。記錄主要由一個類別加上一個目錄信息再加上記錄數據構成。目錄是一種特別的記錄,它的類別表明它是一個目錄,它的數據是一個字符串表示目錄名。索引表以一個記錄的形式保存到數據庫里,并用記錄類別加以區(qū)分。數據庫基于數據庫設備,與文件系統以及注冊表無關,這可能會對數據庫初始化及打開數據庫帶來不便,但是這種獨立性有兩個好處,一是便于移植,二是其他模塊的BUG 甚至崩潰都不會直接影響數據庫系統。

2.1 數據庫設備

文中采取的方案為數據庫設備向下直接面向Flash 驅動,向上向數據庫系統提供線性的尋址空間,它用一個地址映射表來實現將Flash的一個個擦除塊映射成為一個連續(xù)的可逆邏輯地址空間。邏輯地址從0 開始編址,如果設備大小是2M,那么邏輯地址就是0x00000000 到0x00200000。數據庫設備是和數據庫相關的,表現在幾個方面。第一,雖然邏輯地址是連續(xù)的,但是數據庫要求每個記錄不能跨Bank(注:文中提到的Bank 就是一個擦除塊,大小為64K),也就是說記錄必需寫在同一個擦除塊中,以便整理臟塊;這要求數據庫設備要提供動態(tài)分配記錄空間的能力。第二,整理臟塊時,數據庫設備不能獨立完成,必須依賴于記錄索引表,因為已經刪除的記錄在索引表中有刪除標記。第三,為了完成動態(tài)分配記錄空間的功能,數據庫設備必需記錄每個查處塊的使用情況,包括已經用掉多少、剩余多少、臟塊多少等等,這些數據的來源都是數據庫操作。第四,有關掉電保護,塊擦除時掉電保護由設備層獨立完成,但是記錄在增、刪、改等操作時的掉電保護要靠數據庫系統的操作次序保障。

為了便于描述,假定數據庫設備大小為2M,每個擦除塊大小為64K,這樣一共有32個擦除塊,其中有一個塊作為Bank0的交換塊,可用的只有31個塊。為了實現地址映射,給這31個擦除塊每個塊的前四個字節(jié)寫入塊ID 號,ID 號由28 位Bank 號加上4 位Flag 構成,數據結構如下:

0~27Bits,Bank 號

28~31Bits,Flag

其中,Bank 號是地址映射表的下標序號,取值范圍0~30。Flag是掉電保護標志,具體含義如下:

Flag=0xF 表示該Bank 空閑(Free)。

Flag=0xE 表示正在整理過程中,該Bank是交換塊,而且數據轉存完成,系統正在擦除原來的臟塊。

Flag=0xC 表示該Bank 在使用中,其中的記錄有效。

Flag=0x8 表示該Bank為臟塊,需要擦除。

Flag=其他 無效標志,該Bank 需要擦除。

在系統啟動,數據庫設備初始化時,掃描這32個塊ID 號,并在內存中動態(tài)生成一個映射表,因為有一個保留的交換塊,所以可以填寫的只有31個節(jié)點,定義最后一個節(jié)點記錄保留塊的地址信息,其余各個節(jié)點內容除了包含該節(jié)點的物理地址信息,還應該包含該Bank的使用情況信息(如:剩余,臟多少),這些信息在數據庫設備的其他功能中會用到。

數據庫設備向數據庫系統提供動態(tài)分配記錄空間的功能。為了回收臟塊的方便,數據庫記錄必需存放在同一個擦除塊,不能跨Bank 存放。分配的依據是地址映射表中的Free 字段,為了減少碎片以及均勻使用各個物理塊,分配原則是優(yōu)先分配那些Free 較小的Bank。同時刪除、修改記錄會產生臟塊,這些臟塊需要回收才能再次被利用。回收的觸發(fā)發(fā)生在寫記錄時,當設備空間分配引擎報告沒有剩余空間時,觸發(fā)臟塊回收功能。臟塊回收需要先選中一個回收的目標塊,根據地址映射表中的Dirty字段,原則是Dirty 越大越優(yōu)先。選定一個目標塊后,需要將該塊中的有效記錄全部搬至其他Bank,這一步可以理解為一個修改記錄的過程,修改記錄可以將記錄轉存到其他Bank,然后再刪除原來的記錄。當該Bank的所有記錄轉移后,調用Flash 驅動的塊擦除函數,擦除完成后再寫入ID 號,同時修改地址映射表,Dirty 和Free 字段清零。

2.2 數據塊初始化和架構

數據庫系統初始化分兩步,首先是數據庫設備初始化,其次才是數據庫自身初始化。設備初始化類似于FMM 初始化,它的主要工作是掃描整個設備,獲得地址映射表的各項數據。首先要掃描各個Bank ID,填寫Addr 字段。然后掃描各個Bank 記錄,獲取該Bank 已經用掉的空間和刪除的記錄空間,計算出剩余空間(Free)和臟塊大小(Dirty)。

整個數據庫系統由一個記錄索引表和數據記錄區(qū)構成,索引表占用一個Bank,并且定義固定在邏輯Bank0(下面提到的都是邏輯Bank 號)。交換塊不占地址空間,只是臨時存放在所引表的最后一個節(jié)點上。記錄區(qū)占用其余的所有Bank(1~30)。索引表記錄每條數據庫記錄的地址、記錄ID、類別、大小、所屬目錄等信息,每個表項占12 字節(jié)。每個記錄有一個唯一的ID,整個數據庫系統的所有數據庫的所有記錄,ID 號不能沖突,而且ID 號可以區(qū)分是那個數據庫以及記錄類別。為了便于管理,數據庫系統有一個自己內定的管理數據庫(sysdb),它的每一條記錄標識著一個用戶建立的數據庫,內容包含數據庫名、索引表的個數、比較函數等信息,數據庫名不能重復,大小寫不敏感。用戶創(chuàng)建、打開數據庫時就要訪問到sysdb。數據庫系統有一個自己內定的管理數據庫sysdb,數據庫系統初始化時打開這個數據庫。sysdb 沒有索引記錄,它的記錄類別只有一種,而且每條記錄注冊著一個用戶創(chuàng)建的數據庫。

索引表在Bank0,由32 字節(jié)的HEAD 和一個索引表構成,索引表的每項占12 字節(jié),共有5458 項,最后剩余4個字節(jié)保留。

數據記錄區(qū)里面是用戶加入數據庫的數據信息,系統對這樣的信息不做任何解析,只是把它當作一個二進制的數據包,用戶必需指明該數據記錄所在的目錄,目錄實際上是一種分類信息,目錄信息將加入到Bank0 中記錄所引表的目錄號字段中。數據記錄的大小是用戶數據包加上時間戳的大小,也就是說系統打包后的實際大小,數據庫設備在存儲時,會自動向4 字節(jié)對齊。數據記錄的格式如下:

4byte時間戳 N byte 用戶數據

時間戳用一個DWORD 記錄,高字表示Date,低字表示Time,Size=N +4;并賦值給記錄所引表的size 字段。每個數據庫記錄有一個目錄屬性,表明該記錄屬于哪個目錄,目錄實際上是記錄的歸類信息。目錄本身也當作記錄存儲在數據庫中,目錄作為記錄也有一個所屬目錄的屬性,表明自己的父目錄,由此可見整個是一個樹狀結構,數據記錄是葉子節(jié)點,樹根是sysdb。一個數據庫的根目錄沒有記錄和它對應,定義根目錄的記錄ID 等于0。

目錄作為記錄,它的格式和數據記錄的格式是一樣的,也是有一個時間戳加上數據構成。它的數據是目錄名,是一個null 結束的字符串,計算記錄大小時結束符null 也算一個字節(jié)。和文件系統一樣,同一個目錄下的子目錄名不能有重復。本數據庫系統對目錄的級數以及子目錄的個數不做限制,但是受到數據結構的限制,目錄的最大個數等于記錄的最大個數5458,實際可用5400。

3 關于掉電保護

掉電保護是數據庫設備層的基本功能之一,要做到在突然掉電的情況下,資料的完整性不受破壞,這就要求在寫操作時,按照一定的步驟,還要依賴于相應的標志位。掉點保護有兩個必要條件,一是系統啟動后在初始化時,有能力知道上次關機是正常關機還是異常掉電關機。二是系統在任何時候突然掉電,有能力追溯到掉電前的資料信息。

數據庫系統用于掉電保護的信息有兩個,分別是每個Bank的ID 號和Bank0 索引表中的每個節(jié)點的addr。這兩個4 字節(jié)數據的最后4bit是掉電保護Flag,其含義基本相同,下面詳細介紹。

數據庫的完整性包括三個方面:①各個擦除塊的完整,也就是邏輯地址空間完整、連續(xù)、有效;②記錄索引表的完整;③記錄的完整。只有在寫操作過程中突然掉電,才可能對數據庫的完整性造成破壞,這些寫操作包括記錄臟塊的整理、Bank0的整理、增加刪除修改記錄等。

另外,除了數據庫設備層的掉電保護,數據庫系統還要做好數據庫本身的數據相關性保護,保證數據的完整。這些相關性包括目錄名不得沖突、排序方法不能相同、排序表必需和排序方法一一對應,排序記錄要完整有效等,當然這些都與掉電保護沒有關系,它依賴于數據庫本身的魯棒性。

4 測試環(huán)境

通過在SC6600(ARM9)+ nucleus+QCP1880的平臺上進行測試,比原來的方案存取速度提高10倍以上,而且占用內存也大大減少,僅需要幾十個字節(jié)。本軟件模組在PC 機上開發(fā),經過編譯工具embedded Visual C ++編譯后,可在CPU為ARM920T的硬件平臺下運行[3]。

編程語言:C 語言

操作系統:Nucleus

Nucleus 內核版本:2.4.20

交叉編譯工具:VC++&ADS

編譯環(huán)境:Visual C++

硬件平臺:SC6600 或ARM920T

[1]龔星宇,許佳,龔尚福.嵌入式數據庫的研究[J].現代電子技術,2007(9):46-49.

[2]張永.嵌入式數據庫系統的設計與實現[D].北京:清華大學,2004.

[3]吳飛,王昕.嵌入式移動數據庫SQL Server for Windows CE的應用研究[J].微計算機信息,2006 (17):56-59.

猜你喜歡
數據庫設備
諧響應分析在設備減振中的應用
基于VB6.0+Access2010開發(fā)的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
500kV輸變電設備運行維護探討
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
如何在設備采購中節(jié)省成本
主站蜘蛛池模板: 久久中文无码精品| 成人福利在线观看| 精品福利网| 国产理论一区| 国产最新无码专区在线| 中国精品久久| 99在线视频免费| AV无码国产在线看岛国岛| 国产精品网拍在线| 538国产在线| 福利在线一区| 男人的天堂久久精品激情| 在线无码九区| 国产主播福利在线观看| 日韩福利在线观看| 狠狠色噜噜狠狠狠狠奇米777| 久草视频精品| 岛国精品一区免费视频在线观看| 特级做a爰片毛片免费69| 玖玖精品视频在线观看| 97精品国产高清久久久久蜜芽 | 毛片网站在线看| 福利一区在线| 91福利国产成人精品导航| 精品国产自在在线在线观看| 亚洲国产精品久久久久秋霞影院| 夜夜爽免费视频| 久久久久国产一级毛片高清板| 国产一区二区福利| 亚洲欧美日韩动漫| 国产黄在线观看| 日韩高清无码免费| 国产aⅴ无码专区亚洲av综合网| 精品国产成人a在线观看| 欧美一级夜夜爽| 伊在人亚洲香蕉精品播放| 国产小视频网站| 麻豆精品在线| 久久不卡精品| 国产免费人成视频网| 午夜欧美在线| 成年片色大黄全免费网站久久| 国产精品毛片一区| 一区二区三区四区在线| 久996视频精品免费观看| 岛国精品一区免费视频在线观看| 日本道综合一本久久久88| 思思热精品在线8| AV无码无在线观看免费| 欧美成人午夜视频免看| 精品无码日韩国产不卡av| 欧美激情成人网| 欧美日本二区| 性视频一区| 亚洲a级毛片| 波多野结衣在线一区二区| 国产成人精品亚洲日本对白优播| 亚洲日韩欧美在线观看| 激情乱人伦| 久久久久久尹人网香蕉| 丁香婷婷在线视频| 日本高清有码人妻| 亚洲另类第一页| 2024av在线无码中文最新| 精品视频第一页| 国产一线在线| 在线va视频| 久久精品这里只有国产中文精品 | 扒开粉嫩的小缝隙喷白浆视频| 国产jizzjizz视频| 又爽又大又黄a级毛片在线视频| 黄色网站在线观看无码| 国产69精品久久久久妇女| 亚洲成av人无码综合在线观看| 亚洲不卡av中文在线| 日韩欧美中文| 精品无码国产一区二区三区AV| 好紧太爽了视频免费无码| swag国产精品| 中文字幕一区二区视频| 日韩a级毛片| V一区无码内射国产|