王彬彬 蔣夢雅 侯博正
(1徐州地鐵運營有限公司, 徐州 221000;2江蘇建筑職業(yè)技術學院, 徐州 221000;3徐州地鐵運營有限公司, 徐州 221000)
引言:軌道交通自動售檢票(Automatic Fare Collection,AFC)系統(tǒng)是軌道交通運營管理的核心系統(tǒng)之一,實現(xiàn)售票、檢票、計費和統(tǒng)計等。
讀寫器是AFC系統(tǒng)的重要部件之一,用于實現(xiàn)對票卡的讀寫,在軌道交通AFC系統(tǒng)的終端設備中大量使用。隨著票務業(yè)務的發(fā)展,國內(nèi)城市陸續(xù)使用業(yè)務內(nèi)置型讀寫器來取代傳統(tǒng)讀寫器。業(yè)務內(nèi)置型讀寫器是指將票卡處理流程程序集中到讀寫器內(nèi)部,設備上位機只需發(fā)送業(yè)務操作命令(如進站、出站等),接受讀寫器返回的業(yè)務處理結果,業(yè)務操作流程由讀寫器獨立完成,讀寫器成為了獨立的票務處理終端。為了有效地對交易數(shù)據(jù)進行查詢和審計,AFC系統(tǒng)對讀寫器保存交易數(shù)據(jù)也提出了要求。讀寫器作為一種嵌入式設備,通常采用NAND Flash存儲器快速保存大量數(shù)據(jù),但是NAND Flash寫入比讀取代價高,且擦除代價更高。
綜上,AFC系統(tǒng)數(shù)據(jù)存儲、索引建立和數(shù)據(jù)更新等問題的提出,使得研究基于NAND Flash的AFC嵌入式數(shù)據(jù)庫十分必要。
AFC系統(tǒng)中的數(shù)據(jù)類型眾多。包括交易數(shù)據(jù)、寄存器數(shù)據(jù)、狀態(tài)數(shù)據(jù)、收益管理數(shù)據(jù)、設備基本信息、各類參數(shù)和數(shù)據(jù)字典等。
本文討論的是經(jīng)由業(yè)務內(nèi)置型讀寫器處理的數(shù)據(jù),主要有交易數(shù)據(jù)、黑名單和審計數(shù)據(jù)等。
(1)交易數(shù)據(jù)。讀寫器產(chǎn)生的交易數(shù)據(jù)保存在本地數(shù)據(jù)庫,定時通過網(wǎng)絡上傳給上位機設備,再由上位機設備上傳給AFC中心數(shù)據(jù)庫保存。
(2)黑名單。黑名單由AFC中心產(chǎn)生,通過上位機設備下發(fā)到讀寫器中。由讀寫器完成黑名單鎖卡、跟蹤等操作。
(3)審計數(shù)據(jù)。審計數(shù)據(jù)主要指一些票卡統(tǒng)計值,包括進站人數(shù)、刷卡次數(shù)和消費金額等。
由上可知,不同數(shù)據(jù)有著不同的特點。交易數(shù)據(jù)按順序產(chǎn)生,且與金額相關,必須保證每筆交易都不能錯漏,除了要求順序上傳外,還要求根據(jù)票卡號進行數(shù)據(jù)查詢。黑名單數(shù)據(jù)定期更新,相對靜態(tài),且數(shù)量巨大,要求能供讀寫器快速查詢。審計數(shù)據(jù)的主要特點是更新頻繁。下面本文將對業(yè)務內(nèi)置型讀寫器進行硬件設計。
目前AFC系統(tǒng)普遍使用業(yè)務內(nèi)置型讀寫器,本文設計采用嵌入式技術的業(yè)務內(nèi)置型讀寫器,其中32位CPU接口和NAND Flash存儲器、SDRAM存儲器組成處理器最小系統(tǒng)。
主要數(shù)據(jù)存放在NAND Flash存儲器上。非易失性RAM用以保存臨時重要數(shù)據(jù),如日志數(shù)據(jù)庫;和變化頻繁的數(shù)據(jù),如審計數(shù)據(jù)等。其硬件結構如圖1所示。
圖1 業(yè)務內(nèi)置型讀寫器硬件結構圖
數(shù)據(jù)庫目前存在以硬盤介質為模型設計,沒有考慮到NAND Flash的特性等缺點。且嵌入式數(shù)據(jù)庫系統(tǒng)技術發(fā)展迅速,使用NAND Flash作為存儲介質的嵌入式數(shù)據(jù)庫,為實現(xiàn)均衡讀寫、減少擦寫次數(shù)、保證NAND Flash的使用壽命、提升訪問性能,本文將設計一種全新的嵌入式數(shù)據(jù)庫。
交易數(shù)據(jù)按順序產(chǎn)生,同時上傳也是按順序進行,且每筆都要更新,本文選擇交易票卡號和時間作為關鍵碼。由于 B+樹存儲特點與 AFC交易數(shù)據(jù)特點較吻合。此外,Hash通過計算來獲得地址,提高查詢的效率,因此,交易數(shù)據(jù)選擇B+樹上建立Hash索引。
如圖2所示,具有相同的Hash值的k在Hash表的同一項中用B+樹組織,B+樹的葉子節(jié)點用鏈表進行存儲。插入和查找操作最大時間復雜度為
圖2 Hash B+樹數(shù)據(jù)結構
交易數(shù)據(jù)以票卡號和時間作為關鍵碼,存放在B+樹的葉子節(jié)點中,存儲結構如圖3所示:
圖3 存儲結構圖
黑名單的特點是定期更新,主要進行查找操作。黑名單以票卡號作為關鍵碼。
哈希(Hash)桶方式,首先通過哈希函數(shù)將黑名單卡號字符串映射到桶哈希表的一個哈希桶。每一個哈希桶由一個或者少數(shù)幾個哈希塊鏈接而成。桶哈希表如圖4所示。
圖4 桶哈希表
字符串哈希算法較多,經(jīng)過比選最終選用APHash函數(shù),代碼如下:
哈希桶方式需要事先選定一個合適的桶數(shù),即桶哈希表的項數(shù),過大會浪費空間,過小則使每個桶的鏈變長而降低存取性能。由于AFC設備每種設備的狀態(tài)數(shù)量有數(shù)百個至上千個不等,因此,本哈希表的項數(shù)設定為100左右的素數(shù):101。
使用APHash算法對系統(tǒng)常用的355個狀態(tài)標簽名進行散列后將散列值對100取模,得到其散點圖如圖5所示:
圖5 散點圖
交易數(shù)據(jù)采用Hash表與B+樹相結合的索引方式,日志模型的B+樹比較適合寫入頻繁的數(shù)據(jù)庫應用,符合交易數(shù)據(jù)的特點。
本文在分析AFC系統(tǒng)交易數(shù)據(jù)、黑名單和審計數(shù)據(jù)特點的基礎上,并結合現(xiàn)有NAND Flash存儲技術,進行了嵌入式數(shù)據(jù)庫的設計,其中交易數(shù)據(jù)采用Hash表與B+樹相結合的索引方式。提高了AFC系統(tǒng)數(shù)據(jù)查詢與數(shù)據(jù)更新等的效率。
[1]何鐵軍,宋亞娜,王健,等. AFC業(yè)務內(nèi)置型讀寫器研究與應用[J]. 都市快軌交通. 2011(01): 104-108.
[2]康亮,顧峰磊,戚正偉. 基于NAND Flash的嵌入式數(shù)據(jù)庫索引機制的改進[J]. 計算機應用與軟件. 2008, 25(7): 277-279.
[3]Wu C, Chang L, Kuo T. An efficient R-tree implementation over flash-memory storage systems[C]. ACM, 2003,17-24.