伺服器端發生資料遺失時,行動客戶端可以透過廣播伺服器端在發生資料遺失的 bucket 中放入該資料項在有序遺失資料區段中的廣播資訊,因此行動客戶端不必 透過遺失資料索引的引導就可直接到有序遺失資料區段中擷取所需資料項,如此 就可以將調校時間有效的降低。
在經過系統模擬進行效能評估後,結果顯示以新增有序遺失區段方式所改進 的資料廣播方法在延遲時間上與新增遺失區段方式所改進的資料廣播方法相 同;另一方面,以新增有序遺失區段方式所改進的資料廣播方法在調校時間上比 新增遺失區段方式所改進的資料廣播方法來的更低。因此新增有序遺失區段方式 所改進的資料廣播方法在效能上優於新增遺失區段方式所改進的資料廣播方 法,所以可以證明我們提出的方法確實能夠有效的降低調校時間,可達到減少能 源消耗的目的。
參考文獻
1. Imielinski, T. and Badrinath, B.R., “Mobile Wireless Computing: Challenges in Data Management”, Communications of ACM, Vol.37, No.10, pp.18-28, October 1994.
2. Barbara, D. and Imielinski, T., “Sleepers and Workaholics: Caching Strategies for Mobile Environments”, Proceedings of the 1994 ACM SIGMOD international Conference on Management of Data, Vol.23, No.2, pp.1-12, May, 1994.
3. Dunham, M.H. and Helal, A., “Mobile Computing and Database: Anything New? ”, ACM SIGMOD Record , Vol.24, No.4, pp.5-9, December, 1995.
4. Neves, N. and Fuchs, W.K., “Adaptive Recovery for Mobile Environments”, Communications of the ACM, Vol.40, No.1, pp. 68-74, January, 1997.
5. Sheng, S., Chandrasekaran, A. and Broderson, R.W., “A Portable Multimedia Terminal”, IEEE Communications Magazine, Vol.30, No.12, pp.64-75, December, 1992.
6. Imielinski, T., Viswanathan, S. and Badrinath, B.R., “Data on Air: Organization and Access“, IEEE Transactions on Knowledge and Data Engineering, Vol.9, No.3, pp.353-372, May-June, 1997.
7. Imielinski, T., Viswanathan, S. and Badrinath, B.R., “Energy Efficient Indexing on Air”, Proceedings of the 1994 ACM SIGMOD International Conference on Management of Data, Vol.23, No.2, pp.25-36, May, 1994.
8. Acharya, S., Franklin, M. and Zdonik, S., “Balancing Push and Pull for Data Broadcast”, Proceedings of the 1997 ACM SIGMOD International Conference on Management of Data, Vol.26, No.2, pp.183-194, June, 1997.
9. Lee, C.C. and Leu, Y.H., “Efficient Data Broadcast Schemes for Mobile Computing Environments with Data Missing”, Information Sciences, Vol.172, No.3-4, pp. 335-359, June, 2004.
10. Yu, P.S., Wu, K.L., Lin, K.J. and Son, S.H., “On Real-Time Database:
Concurrency Control and Scheduling”, Proceedings of the IEEE, Vol.82, No.1, pp.140-157, January, 1994.
11. Imielinski, T., Viswanathan, S. and Badrinath, B.R., “Power Efficient Filtering of Data on Air”, Proceeding of the 4th International Conference on Extending Database Technology on Advance in Database Technology, pp.245-258, May, 1994.
12. Tan, K.L. and Ooi, B.C., “On Selective Tuning in Unreliable Wireless Channels”, Data and Knowledge Engineering, Vol.28, No.2, pp.209-231, November, 1998.
13. Leong, H.V. and Si, A., “Data Broadcasting Strategies over Multiple Unreliable Wireless Channels”, Proceedings of the Fourth International Conference on Information and Knowledge Management, pp.96-104, December, 1995.
14. Acharya, S., Alonso, R., Franklin, M. and Zdonik, S., “Broadcast Disks: Data Management for Asymmetric Communications Environments”, Proceedings of the 1995 ACM SIGMOD International Conference on Management of Data, Vol.24, No.2, pp.199-210, May 1995.
15. CACI Products Company, SIMSCRIPT II.5 Programming Language. CACI Products Company, 1997.
16. 李之中、莊育銘,「在行動計算環境中解決資料遺失問題的改進資料廣播方 法」,2006 年資通技術管理與應用會議,樹德科技大學,高雄縣,2006。
附錄一 調校時間變化
更進一步的我們探討在資料遺失機率遞增的情況下,行動客戶端取得資料項 的調校時間變化情形,我們使用tune_opt-AM 的資料廣播方法範例來說明,所使 用的參數如下所述:在索引區段、新增遺失資料索引區段中索引的分支度為 10,
為了突顯行動客戶端取得所需資料項的的調教時間,我們將資料區段的大小設為 1200 個 bucket,在資料區段中發生資料遺失的機率在 0.1 到 0.8 的範圍中,以間 隔 0.1 變動。新增遺失資料區段的大小為依據資料遺失的機率乘上資料區段的 大小,在新增遺失資料區段中發生資料遺失機率與資料區段中發生資料遺失的機 率相同,實驗執行500000 個 bucket 單位時間。
圖 1 與 2 為 tune_opt-AM 的資料廣播方法中四種主要行動客戶端取得資料項 的情形。下圖1 中為行動客戶端在遺失資料索引前嵌入到廣播通道中擷取資料項 的主要兩種情況,在 Case 1 中行動客戶端在同一個廣播週期的遺失資料區段中 取得資料項的調校時間為進入到廣播通道中取得一個bucket 的時間為 1 個 bucket 單位時間,在遺失資料索引區段中取得相關索引的時間為3 個 bucket 單位時間,
取得所需資料項的時間為1 個 bucket 單位時間,總共為 5 個 bucket 單位時間,
在 Case 2 中行動客戶端在下個廣播週期的資料區段中取得資料項的調校時間為 進入到廣播通道中取得一個bucket 的時間為 1 個 bucket 單位時間,在遺失資料 索引區段中取得相關索引的時間為 3 個 bucket 單位時間,在索引區段中取得相 關索引的時間為4 個 bucket 單位時間,取得所需資料項的時間為 1 個 bucket 單 位時間,總共為9 個 bucket 單位時間。
圖1 行動客戶端在遺失資料索引區段廣播前嵌入到廣播通道中
下圖 2 中為行動客戶端在資料區段後嵌入到廣播通道中擷取資料項的主要 兩種情況,在 Case 3 中行動客戶端在下個廣播週期的資料區段中取得資料項的 調校時間為1+4+1 等於 6 個 bucket 單位時間。在 Case 4 中行動客戶端在下個廣 播週期的遺失資料區段中取得資料項的調校時間為1+4+1+3+1 等於 10 個 bucket 單位時間。
圖2 行動客戶端在資料區段廣播後嵌入到廣播通道中
經過模擬實驗後,使用在 tune-AM 資料廣播方法所產生行動客戶端取得所 需資料項的調校時間次數分布狀況如下圖3 所示。
0 1000 2000 3000 4000 5000 6000 7000 8000
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
發生資料遺失的機率 次
數
5 bucket 6 bucket 7 bucket 8 bucket 9 bucket 10 bucket 11 bucket 12 bucket 13 bucket 14 bucket 15 bucket 16 bucket 17 bucket 18 bucket 19 bucket 20 bucket >20 bucket
圖3 Tune_opt-AM 中行動客戶端取得所需資料項的時間次數分布狀況 在圖 3 中,隨著資料項在資料區段中遺失的機率越來越高,遺失的資料項在 遺失資料區段中重新廣播的機率就越高,因此行動客戶端在遺失資料區段中取得 資料項的機率就越高,但也隨著遺失資料區段中資料項遺失機率的增高,也造成 行動客戶端在遺失資料區段中取得資料項的機率漸漸開始降低,因此行動客戶端 取得資料項的調校時間為 5 個 bucket 單位時間由遞增的情形,經過遺失機率為 0.5 之後開始呈現下滑的現象。行動客戶端取得資料項的調校時間為 9 個 bucket 單位時間之所以越來越低的情況,是因為在資料區段中發生資料遺失機率越高,
因此行動客戶端在資料區段中取得資料項的機率就越低。
隨著資料遺失機率越高,造成遺失資料區段的長度也會越來越長,因此行動 客戶端在遺失資料區段中嵌入的比例相較於行動客戶端在資料區段中嵌入的比 例也會提高,因此如圖2 中 CASE 3 的情況行動客戶端到下個廣播週期的資料區 段中取得資料項的次數也會有遞增的情況,所以行動客戶端取得資料項的調校時 間為 6 個 bucket 單位時間的出現次數也就越來越高的現象,但由於資料項在資 料區段中遺失的機率越來越高,造成行動客戶端在資料區段中取得資料項的機率
也變的越低,因此在經過遺失機率為0.5 之後也開始呈現下滑的現象。行動客戶 端取得資料項的調校時間為 10 個 bucket 單位時間的出現次數之所以會越來越 高,是因為隨著資料遺失機率越高,行動客戶端在資料區段中取得資料項的機率 就會越低,因此行動客戶端就必須到遺失資料區段中擷取資料項,同樣的因素也 會造成遺失資料區段的長度也會越來越長,因此行動客戶端在遺失資料區段中嵌 入的機率也會越高,所以如圖2 中 CASE 4 的情況也會越來越多。
最後因為資料項發生遺失機率越來越高的趨勢,造成行動客戶端取得資料項 的難度也就越來越高,因此行動客戶端取得資料項的調校時間也就越來越高,所 以較高的調校時間出現次數就有越來越多的情形發生。
附錄二 (1, m) indexing-AOM, m=2 程式碼
preamble
event notices include BROADCAST.ARRIVAL , AM.BROADCAST.ARRIVAL , QUERY.ARRIVAL , INDEX1.ARRIVAL ,
ITEM1.ARRIVAL , INDEX2.ARRIVAL , ITEM2.ARRIVAL , AM.INDEX.ARRIVAL , AM.ITEM.ARRIVAL , STOP.SIMULATION every INDEX1.ARRIVAL has a REQ1
define REQ1 as an integer variable every ITEM1.ARRIVAL has a REQ2 define REQ2 as an integer variable every INDEX2.ARRIVAL has a REQ3 define REQ3 as an integer variable every ITEM2.ARRIVAL has a REQ4 define REQ4 as an integer variable every AM.INDEX.ARRIVAL has a REQ5 define REQ5 as an integer variable every AM.ITEM.ARRIVAL has a REQ6 define REQ6 as an integer variable the system own a QUERY.SET temporary entities
every QUERY has an ARRIVAL.TIME ,a REQUEST.ITEM , a TUNE and belong to a QUERY.SET
define ARRIVAL.TIME , REQUEST.ITEM , TUNE as integer variables define LATENCY.TIME as an integer variable
define TUNE.TIME as an integer variable define .second to mean units
define INDEX , DATA , AM.INDEX , AM.DATA , CYCLE , TIMES , INTERARRIVAL as integer variables define LOSE as an Integer variable
define AM.MISS.P as an real variable define MISS.P as an real variable
define INDEX1.TIME , ITEM1.TIME , INDEX2.TIME ,
ITEM2.TIME , AM.INDEX.TIME , AM.ITEM.TIME as integer variables define .InAM to mean 1
define .NotInAM to mean 0
define AM as an integer 1-dim array define AM2 as an integer 1-dim array
tally AVG.LATENCY.TIME as the mean of LATENCY.TIME tally AVG.TUNE.TIME as the mean of TUNE.TIME end
''---***** Main Program *****--- main
print 1 line thus
input INDEX=? , DATA=? , AM.INDEX=? , AM.DATA=? , TIMES=? , INTERARRIVAL=? , MISS.P=? , AM.MISS.P=? , N.REP=?
read INDEX , DATA , AM.INDEX , AM.DATA , TIMES , INTERARRIVAL , MISS.P , AM.MISS.P , N.REP for rep=1 to N.REP do
let time.v=0
reset totals of LATENCY.TIME reset totals of TUNE.TIME
''Broadcast Cycle 的長度 = 2*Index Segment 的長度+ Data Segment 的長度
'' + AM Index Segment 的長度+ AM Data Segment 的長度 let CYCLE=(2*INDEX) + DATA + AM.INDEX + AM.DATA
schedule a QUERY.ARRIVAL in exponential.f(INTERARRIVAL.,1) .second schedule a BROADCAST.ARRIVAL in 0 .second
schedule a AM.BROADCAST.ARRIVAL in CYCLE - (AM.INDEX + AM.DATA) .second schedule a STOP.SIMULATION in TIMES .second
start simulation
add AVG.TUNE.TIME*AVG.TUNE.TIME to SUM.TUNE.SQUARE add AVG.TUNE.TIME to TOTAL.AVG.TUNE.TIME
add AVG.LATENCY.TIME*AVG.LATENCY.TIME to SUM.SQUARE add AVG.LATENCY.TIME to TOTAL.AVG.LATENCY.TIME
loop
let TUNE.BAR=TOTAL.AVG.TUNE.TIME/N.REP ''計算出 Tuning Time 的標準差
let TUNE.STD=((SUM.TUNE.SQUARE-N.REP*(TUNE.BAR**2))/(N.REP-1)/N.REP)**0.5 let LATENCY.BAR=TOTAL.AVG.LATENCY.TIME/N.REP
''計算出 Latency 的標準差
let STD=((SUM.SQUARE-N.REP*(LATENCY.BAR**2))/(N.REP-1)/N.REP)**0.5 print 10 lines with LATENCY.BAR ,STD, LATENCY.BAR-3*STD ,
LATENCY.BAR+3*STD ,TUNE.BAR ,TUNE.STD , TUNE.BAR-3*TUNE.STD ,
TUNE.BAR+3*TUNE.STD thus
--- Average Latency Time = *****.*****
Standard Ddviation = *****.*****
Range Between In ( ******.*** , ******.*** )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Average Tune Time = *****.*****
Standard Ddviation = *****.*****
Range Between In ( ******.*** , ******.*** ) --- stop
end
''---***** BROADCAST.ARRIVAL ******--- event BROADCAST.ARRIVAL
release AM(*)
reserve AM(*) as AM.DATA
''產生服從二項分配,實驗次數為 DATA ,失敗機率為 MISS.P ,所得到的失敗次數為 MISS let MISS =binomial.f( DATA , MISS.P , 1)
if MISS > AM.DATA let MISS = AM.DATA always
''設定廣播週期中資料區段遺失的資料項 for i=1 to MISS do
let AM(i)=randi.f(1,DATA,1) loop
''讓遺失的資料項不會重複 for y=1 to MISS
for z=1 to MISS with y<>z do
if AM(y)=AM(z)
let AM(y)=randi.f(1,DATA,10) always
loop
''將資料區段中遺失的資料項由小到大排序 for j back from MISS to 1 by 1 do
for k=1 to (j-1) do if AM(k+1) < AM(k)
let temp=AM(k+1) let AM(k+1)=AM(k) let AM(k)=temp else
always loop loop
schedule a BROADCAST.ARRIVAL in CYCLE .second return
end
''---***** AM.BROADCAST.ARRIVAL ******--- event AM.BROADCAST.ARRIVAL
release AM2(*)
reserve AM2(*) as AM.DATA
''產生服從二項分配,實驗次數為 AM.DATA ,失敗機率為 AM.MISS.P 所得到的失敗次數為 lose let LOSE =binomial.f( AM.DATA , AM.MISS.P , 1)
''設定廣播週期中有序遺失資料區段中遺失的資料項的編號 for i=1 to lose do
let AM2(i)=randi.f(1,AM.DATA,1) loop
''讓遺失資料項的編號不會重複 for y=1 to LOSE
for z=1 to LOSE with y<>z do
if AM2(y)=AM2(z)
let AM2(y)=randi.f(1,AM.DATA,10) always
loop
schedule a AM.BROADCAST.ARRIVAL in CYCLE .second return
end
''---***** QUERY.ARRIVAL *****--- event QUERY.ARRIVAL
create a QUERY
let ARRIVAL.TIME(QUERY)=time.v
'' 設定行動客戶端(Query)所需的資料項,以隨機的方式產生
let REQUEST.ITEM(QUERY)=randi.f( 1,DATA,1) ''行動客戶端讀取了一個完整的 Bucket 的調校時間 let TUNE(QUERY)=1
file QUERY in QUERY.SET
''計算 Query Arrival 是在該廣播週期中是第幾個 bucket let QUERY.NO=mod.f(ARRIVAL.TIME(QUERY),CYCLE)
''依據 Query 來判斷出 AM.INDEX 或 INDEX1 或 INDEX2 何者先來到 if QUERY.NO < (INDEX+(DATA/2))
schedule a INDEX2.ARRIVAL given QUERY in (INDEX+(DATA/2))-QUERY.NO .second else
if QUERY.NO < (2*INDEX+DATA)
schedule a AM.INDEX.ARRIVAL given QUERY in (2*INDEX+DATA)-QUERY.NO .second else
schedule a INDEX1.ARRIVAL given QUERY in CYCLE-QUERY.NO .second always
always
schedule a QUERY.ARRIVAL in exponential.f(INTERARRIVAL.,1) .second return
end
''---***** INDEX1.ARRIVAL *****--- event INDEX1.ARRIVAL given .query1
define .query1 as an integer variable
''計算行動客戶端在索引區段中讀取多少個 Index Bucket let INDEX.TUNE=trunc.f( log.10.f(DATA-1) )+1
let TUNE(.query1) = TUNE(.query1) + INDEX.TUNE let INDEX1.TIME=time.v
''首先要判斷所需的資料項是否在 ITEM1 中 if REQUEST.ITEM(.query1)<=(DATA/2)
''所需的資料項在 ITEM1 中,即有機會在 ITEM1 中取得資料
schedule a ITEM1.ARRIVAL given .query1 in INDEX + REQUEST.ITEM(.query1) .second else
''所需的資料項不在 ITEM1 中,也就是說所需的資料項在 ITEM2 中
schedule a ITEM2.ARRIVAL given .query1 in (2*INDEX) + REQUEST.ITEM(.query1) .second always
return end