本發(fā)明涉及實時數(shù)據(jù)庫技術(shù),更具體地說,涉及一種實時數(shù)據(jù)庫讀取及寫入方法。
背景技術(shù):實時數(shù)據(jù)庫具有測點數(shù)量多,數(shù)據(jù)存儲量大,寫入速度高,查詢請求頻繁的特點,是工業(yè)監(jiān)控系統(tǒng)中用來存放過程歷史數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)庫。在現(xiàn)有的實時數(shù)據(jù)庫中,內(nèi)存數(shù)據(jù)僅支持并發(fā)讀取操作,即多點讀取,但是卻不支持并發(fā)讀寫操作,在同時存在讀寫請求的情況,無法同時執(zhí)行,限制了實時數(shù)據(jù)庫對內(nèi)存數(shù)據(jù)的并發(fā)訪問能力,降低了整體的效率。
技術(shù)實現(xiàn)要素:本發(fā)明針對現(xiàn)有的實時數(shù)據(jù)庫無法支持并發(fā)讀寫的缺陷,提供一種實時數(shù)據(jù)庫的寫入及讀取方法以解決上述缺陷。本發(fā)明的一個方面,提供一種實時數(shù)據(jù)庫寫入方法,包括以下步驟:查找寫入數(shù)據(jù)的目標(biāo)測點;在目標(biāo)測點下查找寫入數(shù)據(jù)的目標(biāo)索引塊;復(fù)制該目標(biāo)索引塊,生成目標(biāo)索引塊復(fù)制體,索引塊復(fù)制體指向目標(biāo)數(shù)據(jù)塊;將寫入數(shù)據(jù)添加到目標(biāo)數(shù)據(jù)塊的末尾;更新目標(biāo)索引塊復(fù)制體信息;對實時數(shù)據(jù)庫加入寫鎖,屏蔽實時數(shù)據(jù)庫的讀取操作;修改目標(biāo)索引塊的上一個索引塊,使其索引至目標(biāo)索引塊復(fù)制體。本發(fā)明的實時數(shù)據(jù)庫寫入方法,還包括釋放寫鎖的步驟。本發(fā)明的實時數(shù)據(jù)庫寫入方法,還包括回收目標(biāo)索引塊的步驟。本發(fā)明的實時數(shù)據(jù)庫寫入方法,其中更新目標(biāo)索引塊復(fù)制體信息的步驟包括:更新目標(biāo)索引塊復(fù)制體中的目標(biāo)數(shù)據(jù)塊的數(shù)據(jù)長度。本發(fā)明的實時數(shù)據(jù)庫寫入方法,其中修改目標(biāo)索引塊的上一個索引塊的步驟包括:修改上一數(shù)據(jù)塊內(nèi)的下一索引塊編號為目標(biāo)索引塊復(fù)制體。本發(fā)明還提供一種實時數(shù)據(jù)庫讀取方法,包括以下步驟:查找讀取數(shù)據(jù)的目標(biāo)測點;在目標(biāo)測點下查找讀取數(shù)據(jù)的目標(biāo)索引塊;對實時數(shù)據(jù)庫加入讀鎖,屏蔽實時數(shù)據(jù)庫的寫入操作;復(fù)制該目標(biāo)索引塊,生成目標(biāo)索引塊復(fù)制體,索引塊復(fù)制體指向目標(biāo)數(shù)據(jù)塊;讀取索引塊復(fù)制體指向的目標(biāo)數(shù)據(jù)塊。本發(fā)明的實時數(shù)據(jù)庫讀取方法,還包括:在讀取目標(biāo)數(shù)據(jù)塊完成后,釋放讀鎖。本發(fā)明的實時數(shù)據(jù)庫讀取方法,還包括:在讀取目標(biāo)數(shù)據(jù)塊完成后,回收索引塊復(fù)制體。實施本發(fā)明的實時數(shù)據(jù)庫讀取及寫入方法,所有的讀寫操作均是通過復(fù)制的索引塊進(jìn)行,而不是直接對原有的索引塊進(jìn)行直接操作,由于所有操作都按照復(fù)制索引塊的方式,保證每次操作都是訪問索引塊的復(fù)制體,避免直接操作索引塊本身,從而達(dá)到所有操作相互獨(dú)立的效果,操作完成后采用事務(wù)方式提交操作結(jié)...