一種提高海量數據操作效率的方法及裝置的製作方法
2023-04-23 10:21:31
專利名稱:一種提高海量數據操作效率的方法及裝置的製作方法
技術領域:
本發明涉及數據處理技術,尤其涉及一種提高海量數據操作效率的方法及裝置。
背景技術:
隨著計算機信息化的越來越普及,很多領域的軟體系統後臺往往會維持一個龐大 的資料庫,資料庫表中的記錄通常也會達到數百萬條甚至更多。軟體系統在對這些海量數 據庫表進行操作時,將不可避免地消耗更多的操作時間,該操作時間也會反映在前臺的操 作界面延遲上,這會給用戶帶來非常糟糕的用戶體驗。例如,電信行業的用戶通常以億為單 位,因此電信行業的帳單數據非常龐大,當用戶通過帳單系統查詢某段時間內的消費情況 時,如果查詢操作時間耗時超過10秒或者更多,則用戶肯定非常惱火。 為了解決上述問題,提高海量數據的查詢效率,通常會對需要頻繁查詢的海量數 據庫表建立索引,查詢語句再基於該索引進行查詢優化。這種方法的確能大大提高查詢效 率,但是也帶來了副作用在向這類建立索引後的海量資料庫表中插入數據時,需要同時修 改索引,而修改索引給插入操作帶來的額外負荷也是不可低估的,因此插入速度會比較慢。 這種方法在優化查詢操作的同時卻忽略了界面中的插入操作,因而這種優化並不完美;並 且,如果軟體系統中插入操作的頻率不比查詢操作低的話,這種不足就更顯而易見了 。
發明內容
有鑑於此,本發明的主要目的在於提供一種提高海量數據操作效率的方法及裝 置,能夠提高海量數據的插入效率。 為達到上述目的,本發明的技術方案是這樣實現的
—種提高海量數據操作效率的方法,包括 創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結構一致的插入數 據庫表; 向所述插入資料庫表中插入數據,插入完成後,在所述控制資料庫表中記錄所述 插入資料庫表的狀態為同步就緒; 同步進程檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入資料庫表 的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢資料庫表 中。 其中,所述方法進一步包括 同步更新完成後,在所述控制資料庫表中將所述插入資料庫表的狀態更改為同步 完成; 清理進程檢查所述控制資料庫表中的記錄,當發現存在同步完成的插入資料庫表 的記錄時,刪除同步完成的所述插入資料庫表中的所有數據,並將所述控制資料庫表中該 條記錄重新初始化,標記為狀態可用。 其中,創建所述查詢資料庫表時還建立所述查詢資料庫表的索引,並且,所述方法
4進一步包括 同步更新完成後,重建所述查詢資料庫表的索引。 其中,所述插入數據採用定時插入方式。 其中,所述同步進程定時檢查所述控制資料庫表中的記錄。 其中,所述清理進程定時檢查所述控制資料庫表中的記錄。 其中,所述清理進程的定時啟動時間比同步進程的定時啟動時間長。 —種提高海量數據操作效率的裝置,包括創建模塊、插入模塊、狀態標記模塊及
同步模塊;其中, 創建模塊,用於創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結構 一致的插入資料庫表; 插入模塊,用於向所述插入資料庫表中插入數據; 狀態標記模塊,用於插入模塊完成插入後,在所述控制資料庫表中記錄所述插入 資料庫表的狀態為同步就緒; 同步模塊,用於檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入數 據庫表的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢數據 庫表中。 其中,所述狀態標記模塊,進一步用於在同步模塊完成同步更新後,在所述控制數 據庫表中將所述插入資料庫表的狀態更改為同步完成; 所述裝置進一步包括清理模塊,用於檢查所述控制資料庫表中的記錄,當發現存 在同步完成的插入資料庫表的記錄時,刪除同步完成的所述插入資料庫表中的所有數據, 並將所述控制資料庫表中該條記錄重新初始化,標記為狀態可用。 其中,所述創建模塊,進一步用於在創建所述查詢資料庫表時還建立所述查詢數 據庫表的索引,並且,所述裝置進一步包括索引重建模塊,用於在同步模塊完成同步更新 後,重建所述查詢資料庫表的索引。 由以上技術方案可以看出,本發明根據存取分離技術,創建兩套資料庫表, 一套用 於插入數據,稱為插入資料庫表;另一套用於查詢數據,稱為查詢資料庫表。其中,對插入數 據庫表不建立索引,因此在插入數據時無需同時修改索引,從而提高插入效率。
圖1為本發明對數據表進行操作的交互圖; 圖2為本發明資料庫應用軟體系統向資料庫中插入數據和查詢數據的示意圖;
圖3為本發明應用實例的示意圖; 圖4為本發明資料庫中插入查詢操作以及同步進程交互的時序圖;
圖5為本發明提高海量數據操作效率的裝置的結構示意圖。
具體實施例方式
本發明的基本思想是在現有為海量資料庫表建立索引提高查詢效率的基礎上, 引入存取分離的新技術,進一步對插入操作進行優化。存取分離是指存放數據即插入數據 和讀取數據即查詢數據分別放在不同的資料庫表中;這裡,將存儲插入數據的資料庫表稱為插入資料庫表,也可稱為存放資料庫表;將存儲查詢數據的資料庫表稱為查詢資料庫表, 也可以稱為讀取資料庫表;對查詢資料庫表建立索引,進行查詢優化,而對插入資料庫表不 建立索引,不影響插入資料庫的插入操作;並且,再啟動一個後臺同步進程,定時將插入數 據庫中新錄入的數據同步更新到查詢資料庫表中。 為了描述簡潔,下文將插入資料庫表標識為表S,查詢資料庫表標識為表R,另外, 將下文涉及到的控制資料庫表標識為表C。 如圖1所示,本發明提高海量數據操作效率的方法包括以下步驟
步驟101,創建表R、表C、以及與表R結構一致的表S。 其中,因為表R是用於查詢的,所以在創建表R時,還包括為表R建立索引,以優化 查詢操作。此為現有技術,在此不再贅述。 創建表S是為了將需要插入到表R的數據先存儲在表S中,而不直接存儲到表R 中;另外,表S是根據表R的結構創建的,以使表S的結構與表R的結構保持一致,從而使表 S中的數據能更新到表R中。 這裡,表S僅用於插入數據,並且為了提高數據的插入效率,對表S不建立索引。另 外,還可以定時向表S中插入數據,並控制表S中的數據總量,這樣也可以提高數據的插入 效率。 步驟102,向表S中插入數據。 步驟103,插入完成後,在表C中記錄表S的狀態為同步就緒。 步驟104,檢查表C中的記錄,當發現存在同步就緒的表S的記錄時,將表S中的所 有數據同步更新到表R中。 該步驟104是由後臺運行的同步進程執行的,並且根據實際情況,同步進程可以 定時檢查表C中的記錄。 另外,在將表S中的所有數據同步更新到表R的同時,資料庫自動更新表R的索 引。 數據同步更新到表R後,由於已經存在表R的索引,所以用戶在查詢表R時,查詢 效率會比較快。 由於數據的同步更新操作會使建立的索引效率下降,因此,為了最大限度地提高 索引效率,同步更新完成後,可以定時在用戶使用少的時間點,對已不再插入數據的表R重 建索引。重建索引後,可以提高後續查詢操作的效率。其中,該重建索引的操作可以是由同 步進程執行的。 步驟105,同步更新完成後,在表C中將表S的狀態更改為同步完成。 步驟106,檢查表C中的記錄,當發現存在同步完成的表S的記錄時,刪除表S中的
所有數據,並將表C中該條記錄重新初始化,標記為狀態可用,從而為下一次插入數據做準備。 該步驟106是由後臺運行的清理進程執行的,並且根據實際情況,清理進程可以 定時檢查表C中的記錄。 通常,清理進程的定時啟動時間需要比同步進程的定時啟動時間長,例如,如果同 步進程的定時啟動時間為10分鐘,則清理進程的定時啟動時間可以為24小時。 另外。清理進程可以集成在同步進程中,即由同步進程來完成同步和清理操作。
由以上流程可以發現,在對海量資料庫表進行操作時,上述方法可以同時提高查 詢效率和插入效率。當然,該方法也存在些許不足,插入的數據需要間隔一段時間才能被查 詢到,該間隔時間即是同步進程的定時啟動時間。因此,實際應用此方案時,可以根據需求, 權衡利弊,調整同步進程的定時啟動時間,以使系統狀態最優化。例如,用戶通過電信行業 的帳單系統查詢帳單時,該帳單通常都是歷史帳單,用戶對當日或當時產生的實時帳單並
不感興趣,因此,可以將同步進程的定時啟動時間設置為io分鐘或者更長一些,這樣即提 高了查詢效率和插入效率,也不會對系統使用產生不良影響。 如圖2所示,資料庫應用軟體系統在操作資料庫時,插入操作在表S中進行,查詢 操作在表R中進行;其中,表R建立有索引,用以優化查詢操作。 圖3示出了本發明的一個應用實例,其中,生產庫相當於表S,查詢庫相當於表R。
入庫接口機向生產庫中插入數據,即話單入庫;同步進程定時把生產庫的實際數據同步更
新到查詢庫中;話單查詢系統對已建立索引的查詢庫進行查詢操作,即話單查詢,並將查詢
結果展現給用戶。另外,在實際應用中,查詢庫還執行統計等操作。 如圖4所示,本發明資料庫中插入查詢操作以及同步進程交互的時序為 步驟401,資料庫應用軟體系統創建表R、表C,並根據表的R結構創建S。其中,表
R建立有索引。 步驟402,向表S中插入數據。 步驟403,插入完成後,在表C中記錄表S的狀態為同步就緒。
步驟404,同步進程定時啟動,啟動後檢查表C中是否存在同步就緒的表S的記錄。
步驟405,當存在同步就緒的表S的記錄時,表C向同步進程返回同步就緒的表S 的表名;否則,結束當前處理流程。 步驟406,同步進程根據獲得的表S的表名,在資料庫中查找到表S,並將表S中的
所有數據同步更新到表R中。在進行同步更新時,資料庫自動更新表R的索引。 步驟407,同步更新完成後,在表C中將表S的狀態更改為同步完成。 步驟408,資料庫應用軟體系統需要查詢表R中的數據時,根據表R當前的索引進
行查詢。 上文已提到,在創建表R時已對其建立了索引,在數據同步更新到查詢資料庫表 後,由於已經存在查詢資料庫表的索引,所以用戶在查詢查詢資料庫表時,查詢效率會比較 快。 為實現上述方法,本發明相應提供一種提高海量數據操作效率的裝置,如圖5所 示,該裝置包括創建模塊10、插入模塊20、狀態標記模塊30及同步模塊40 ;其中,
創建模塊10,用於創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結 構一致的插入資料庫表; 插入模塊20,用於向所述插入資料庫表中插入數據; 狀態標記模塊30,用於插入模塊20完成插入後,在所述控制資料庫表中記錄所述 插入資料庫表的狀態為同步就緒; 同步模塊40,用於檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入 資料庫表的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢數 據庫表中。
其中,所述狀態標記模塊30,進一步用於在同步模塊40完成同步更新後,在所述 控制資料庫表中將所述插入資料庫表的狀態更改為同步完成; 所述裝置進一步包括清理模塊,用於檢查所述控制資料庫表中的記錄,當發現存 在同步完成的插入資料庫表的記錄時,刪除同步完成的所述插入資料庫表中的所有數據, 並將控制資料庫表中該條記錄重新初始化,標記為狀態可用。 其中,所述創建模塊IO,進一步用於在創建所述查詢資料庫表時還建立所述查詢 資料庫表的索引,並且,所述裝置進一步包括索引重建模塊,用於在同步模塊40完成同步 更新後,重建所述查詢資料庫表的索引。
另外,清理模塊可以集成在同步模塊40中。 以上所述,僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。
8
權利要求
一種提高海量數據操作效率的方法,其特徵在於,包括創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結構一致的插入資料庫表;向所述插入資料庫表中插入數據,插入完成後,在所述控制資料庫表中記錄所述插入資料庫表的狀態為同步就緒;同步進程檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入資料庫表的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢資料庫表中。
2. 根據權利要求1所述的提高海量數據操作效率的方法,其特徵在於,所述方法進一步包括同步更新完成後,在所述控制資料庫表中將所述插入資料庫表的狀態更改為同步完成;清理進程檢查所述控制資料庫表中的記錄,當發現存在同步完成的插入資料庫表的記錄時,刪除同步完成的所述插入資料庫表中的所有數據,並將所述控制資料庫表中該條記錄重新初始化,標記為狀態可用。
3. 根據權利要求1或2所述的提高海量數據操作效率的方法,其特徵在於,創建所述查詢資料庫表時還建立所述查詢資料庫表的索引,並且,所述方法進一步包括同步更新完成後,重建所述查詢資料庫表的索引。
4. 根據權利要求1或2所述的提高海量數據操作效率的方法,其特徵在於,所述插入數據採用定時插入方式。
5. 根據權利要求2所述的提高海量數據操作效率的方法,其特徵在於,所述同步進程定時檢查所述控制資料庫表中的記錄。
6. 根據權利要求5所述的提高海量數據操作效率的方法,其特徵在於,所述清理進程定時檢查所述控制資料庫表中的記錄。
7. 根據權利要求6所述的提高海量數據操作效率的方法,其特徵在於,所述清理進程的定時啟動時間比同步進程的定時啟動時間長。
8. —種提高海量數據操作效率的裝置,其特徵在於,所述裝置包括創建模塊、插入模塊、狀態標記模塊及同步模塊;其中,創建模塊,用於創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結構一致的插入資料庫表;插入模塊,用於向所述插入資料庫表中插入數據;狀態標記模塊,用於插入模塊完成插入後,在所述控制資料庫表中記錄所述插入資料庫表的狀態為同步就緒;同步模塊,用於檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入資料庫表的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢資料庫表中。
9. 根據權利要求8所述的提高海量數據操作效率的裝置,其特徵在於,所述狀態標記模塊,進一步用於在同步模塊完成同步更新後,在所述控制資料庫表中將所述插入資料庫表的狀態更改為同步完成;所述裝置進一步包括清理模塊,用於檢查所述控制資料庫表中的記錄,當發現存在同步完成的插入資料庫表的記錄時,刪除同步完成的所述插入資料庫表中的所有數據,並將 所述控制資料庫表中該條記錄重新初始化,標記為狀態可用。
10.根據權利要求8或9所述的提高海量數據操作效率的裝置,其特徵在於,所述創建 模塊,進一步用於在創建所述查詢資料庫表時還建立所述查詢資料庫表的索引,並且,所述 裝置進一步包括索引重建模塊,用於在同步模塊完成同步更新後,重建所述查詢資料庫表 的索引。
全文摘要
本發明公開了一種提高海量數據操作效率的方法,包括創建查詢資料庫表、控制資料庫表、以及與所述查詢資料庫表結構一致的插入資料庫表;向所述插入資料庫表中插入數據,插入完成後,在所述控制資料庫表中記錄所述插入資料庫表的狀態為同步就緒;同步進程檢查所述控制資料庫表中的記錄,當發現存在同步就緒的插入資料庫表的記錄時,將同步就緒的所述插入資料庫表中的所有數據同步更新到所述查詢資料庫表中。本發明另公開了一種提高海量數據操作效率的裝置。採用本發明能夠提高海量數據的插入效率。
文檔編號G06F17/30GK101702174SQ200910222550
公開日2010年5月5日 申請日期2009年11月13日 優先權日2009年11月13日
發明者張良發, 李林松 申請人:中興通訊股份有限公司