一種用于數據庫的表的批量讀取方法、裝置和系統的制作方法
【專利摘要】本發明公開了一種用于數據庫的表的批量讀取方法、裝置和系統,所述方法包括如下步驟:接收對數據庫的表的批量讀取請求,其中,所述表包括多條數據記錄,所述批量讀取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所需的總讀取次數、以及待讀取的起始數據記錄的主鍵值;根據所述批量讀取請求,生成所述數據庫的查詢語句,其中,所生成的查詢語句的數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數據記錄的各個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄;利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作。通過本發明,可以減少對數據庫系統中的海量數據進行讀取所耗費的時間。
【專利說明】一種用于數據庫的表的批量讀取方法、裝置和系統
【技術領域】
[0001] 本發明涉及計算機【技術領域】,尤其涉及一種用于數據庫的表的批量讀取方法、裝 置和系統。
【背景技術】
[0002] 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生于距 今五十年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以后,對數據庫的數據 的管理方式不再僅僅是存儲和管理數據,而是轉變成符合多種多樣的數據庫應用的需要的 綜合數據管理方式。數據庫有很多種類型,簡單類型的數據庫例如是存儲有各種數據的表 格,復雜類型的數據庫例如是能夠進行海量數據存儲的大型數據庫系統。當前,上述大型數 據庫系統的應用是數據庫系統的開發、研究領域的熱點。
[0003] 在針對大型數據庫系統開發軟件應用時,經常需要把大型數據庫中的海量數據讀 取到內存中。由于所述海量數據的數目過大,考慮到網絡帶寬和內存容量的限制,結果導致 很難一次性把所有數據都讀出來。通常,現有技術的解決方法是先對數據庫的主鍵進行排 序,隨后根據所述主鍵對所需的海量數據進行批量讀取,也就是說每次讀取海量數據中的 一部分,通過多次讀取來逐步讀取全部所需的數據。然而,這種現有技術的解決方法存在著 數據讀取所消耗的時間較長的問題。
【發明內容】
[0004] 有鑒于此,本發明提供一種改進的用于數據庫的表的批量讀取方法、裝置和系統, 來解決以上【背景技術】部分提到的技術問題。
[0005] -種用于數據庫的表的批量讀取方法,所述方法包括如下步驟:
[0006] 接收對數據庫的表的批量讀取請求,其中,所述表包括多條數據記錄,所述批量讀 取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所需的總讀取次數、以及待 讀取的起始數據記錄的主鍵值;
[0007] 根據所述批量讀取請求,生成所述數據庫的查詢語句,其中,所生成的查詢語句的 數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數據記錄的各個主鍵值對總 讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄;
[0008] 利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作。
[0009] 對應地,本發明還提出了一種用于數據庫的表的批量讀取裝置,所述裝置包括: [0010] 接收模塊,用于接收對數據庫的表的批量讀取請求,其中,所述表包括多條數據記 錄,所述批量讀取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所需的總讀 取次數、以及待讀取的起始數據記錄的主鍵值;
[0011] 查詢語句生成模塊,用于根據所述批量讀取請求,生成所述數據庫的查詢語句,其 中,所生成的查詢語句的數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數 據記錄的各個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄;
[0012] 讀取模塊,用于利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作。
[0013] 對應地,本發明還提出了一種用于數據庫的表的批量讀取系統,包括服務器和通 過網絡與所述服務器相連接的客戶端,所述服務器包括:
[0014] 接收模塊,用于從所述客戶端接收對數據庫的表的批量讀取請求,其中,所述表包 括多條數據記錄,所述批量讀取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記 錄所需的總讀取次數、以及待讀取的起始數據記錄的主鍵值;
[0015] 查詢語句生成模塊,用于根據所述批量讀取請求,生成所述數據庫的查詢語句,其 中,所生成的查詢語句的數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數 據記錄的各個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄;
[0016] 讀取模塊,用于利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作并 將所讀取的數據記錄發送給所述客戶端。
[0017] 本發明提出的用于數據庫的表的批量讀取方法、裝置和系統通過根據批量讀取請 求來生成用于數據庫的特定查詢語句,減少了對數據庫系統中的海量數據進行讀取所耗費 的時間。
【專利附圖】
【附圖說明】
[0018] 圖1是根據本發明第一實施例的用于數據庫的表的批量讀取方法的實現流程示 意圖;
[0019] 圖2是在采用現有的用于數據庫的表的批量讀取方法讀取10萬條數據記錄的情 況下每次讀取操作所耗時間的分布示意圖;
[0020] 圖3是在利用現有的用于數據庫的表的批量讀取方法讀取872477條數據記錄的 情況下每次讀取操作所耗時間的分布示意圖;
[0021] 圖4是在利用本發明第一實施例的用于數據庫的表的批量讀取方法讀取10萬條 數據記錄的情況下每次讀取操作所耗時間的分布示意圖;
[0022] 圖5是在利用本發明第一實施例的用于數據庫的表的批量讀取方法讀取872477 條數據記錄的情況下每次讀取操作所耗時間的分布示意圖;
[0023] 圖6是根據本發明第二實施例的用于數據庫的表的批量讀取裝置的結構示意圖。
[0024] 圖7是根據本發明第三實施例的用于數據庫的表的批量讀取系統的結構示意圖。
【具體實施方式】
[0025] 下面結合附圖和實施例對本發明作進一步的詳細說明。可以理解的是,此處所描 述的具體實施例僅僅用于解釋本發明,而非對本發明的限定。另外還需要說明的是,為了便 于描述,附圖中僅示出了與本發明相關的部分而非全部內容。
[0026] 在圖1中示出了本發明的第一實施例。
[0027] 圖1為根據本發明第一實施例的用于數據庫的表的批量讀取方法的實現流程 1〇〇,該實現流程1〇〇詳述如下:
[0028] 在步驟101中,接收對數據庫的表的批量讀取請求。
[0029] 在第一實施例中,托管數據庫的服務器可以直接從本地讀取數據庫工程師預先提 供的批量讀取請求語句或文檔,或者可以通過有線網絡或者無線網絡遠程地讀取其它位置 (例如客戶端位置)的批量讀取請求語句或文檔。其中,所述數據庫的表包括多條數據記錄, 每條所述記錄包含一個或多個字段;而所述批量讀取請求包括但不限于:待讀取的總數據 記錄的條數、讀取所述總數據記錄所需的總讀取次數、以及待讀取的起始數據記錄的主鍵 值。其中,所述待讀取的總數據記錄的條數也就是本次批量讀取請求將從數據庫的所述表 中讀取的總的數據記錄的條數;所述總讀取次數也就是在讀取上述條數的總的數據記錄的 情況下需要花費的讀取次數;而所述待讀取的起始數據記錄的主鍵值也就是在所述數據庫 的表中自其開始讀取操作的數據記錄的主鍵值。
[0030] 在本實施例中,上述無線網絡包括但不限于基于3G技術、基于WiFi技術、基于藍 牙技術、基于WiMAX技術、基于Zigbee技術、基于UWB (ultra wideband)技術或者基于其 它未來將開發的無線技術的無線網絡。
[0031] 在步驟102中,根據批量讀取請求,生成數據庫的查詢語句。
[0032] 在第一實施例中,托管數據庫的服務器可以根據上述批量讀取請求,生成將用于 所述數據庫的查詢操作的多條查詢語句,所生成的查詢語句的數目等于上述批量讀取請求 中包括的總讀取次數。
[0033] 在本實施例中,對于所生成的每條查詢語句而言,利用待讀取的總數據記錄的各 個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄。
[0034] 以如下的員工信息表"person"為例,來對上文所述的查詢語句的生成進行說明。
[0035] 員工信息表-person
[0036]
【權利要求】
1. 一種用于數據庫的表的批量讀取方法,其特征在于,所述方法包括如下步驟: 接收對數據庫的表的批量讀取請求,其中,所述表包括多條數據記錄,所述批量讀取請 求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所需的總讀取次數、以及待讀取 的起始數據記錄的主鍵值; 根據所述批量讀取請求,生成所述數據庫的查詢語句,其中,所生成的查詢語句的數目 等于總讀取次數,并且在每條查詢語句中利用待讀取的總數據記錄的各個主鍵值對總讀取 次數的取模運算來選擇該條查詢語句將讀取的數據記錄; 利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作。
2. 根據權利要求1所述的用于數據庫的表的批量讀取方法,其特征在于,所述待讀取 的總數據記錄的條數等于所述數據庫的所述表的總記錄條數。
3. 根據權利要求1所述的用于數據庫的表的批量讀取方法,其特征在于,所述總讀取 次數根據以下因素中的一項或多項來確定:用于將批量讀取后的所述總數據記錄進行存儲 的內存大小,用于顯示所述總數據記錄的客戶端與所述數據庫所處的服務器之間的網絡帶 寬,以及所述客戶端的用于顯示所述總數據記錄的屏幕大小。
4. 根據權利要求3所述的用于數據庫的表的批量讀取方法,其特征在于,所述內存是 用于所述客戶端的內存、或者是用于所述服務器的內存、或者是所述客戶端和所述服務器 都共享的公共內存。
5. 根據權利要求1-4之一所述的用于數據庫的表的批量讀取方法,其特征在于,所述 數據庫是分布式數據庫。
6. 根據權利要求5所述的用于數據庫的表的批量讀取方法,其特征在于,所述服務器 包括通過網絡連接在一起的兩臺或多臺數據庫服務器。
7. -種用于數據庫的表的批量讀取裝置,其特征在于,所述裝置包括: 接收模塊,用于接收對數據庫的表的批量讀取請求,其中,所述表包括多條數據記錄, 所述批量讀取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所需的總讀取 次數、以及待讀取的起始數據記錄的主鍵值; 查詢語句生成模塊,用于根據所述批量讀取請求,生成所述數據庫的查詢語句,其中, 所生成的查詢語句的數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數據記 錄的各個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄; 讀取模塊,用于利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作。
8. 根據權利要求7所述的用于數據庫的表的批量讀取裝置,其特征在于,所述待讀取 的總數據記錄的條數等于所述數據庫的所述表的總記錄條數。
9. 根據權利要求7所述的用于數據庫的表的批量讀取裝置,其特征在于,所述總讀取 次數根據以下因素中的一項或多項來確定:用于將批量讀取后的所述總數據記錄進行存儲 的內存大小,用于顯示所述總數據記錄的客戶端與所述數據庫所處的服務器之間的網絡帶 寬,以及所述客戶端的用于顯示所述總數據記錄的屏幕大小。
10. 根據權利要求9所述的用于數據庫的表的批量讀取裝置,其特征在于,所述內存是 用于所述客戶端的內存、或者是用于所述服務器的內存、或者是所述客戶端和所述服務器 都共享的公共內存。
11. 根據權利要求7-10之一所述的用于數據庫的表的批量讀取裝置,其特征在于,所 述數據庫是分布式數據庫。
12. 根據權利要求11所述的用于數據庫的表的批量讀取裝置,其特征在于,所述服務 器包括通過網絡連接在一起的兩臺或多臺數據庫服務器。
13. -種用于數據庫的表的批量讀取系統,包括服務器和通過網絡與所述服務器相連 接的客戶端,其特征在于,所述服務器包括: 接收模塊,用于從所述客戶端接收對數據庫的表的批量讀取請求,其中,所述表包括多 條數據記錄,所述批量讀取請求包括:待讀取的總數據記錄的條數、讀取所述總數據記錄所 需的總讀取次數、以及待讀取的起始數據記錄的主鍵值; 查詢語句生成模塊,用于根據所述批量讀取請求,生成所述數據庫的查詢語句,其中, 所生成的查詢語句的數目等于總讀取次數,并且在每條查詢語句中利用待讀取的總數據記 錄的各個主鍵值對總讀取次數的取模運算來選擇該條查詢語句將讀取的數據記錄; 讀取模塊,用于利用所生成的查詢語句,對所述數據庫的所述表進行讀取操作并將所 讀取的數據記錄發送給所述客戶端。
【文檔編號】G06F17/30GK104156358SQ201310174909
【公開日】2014年11月19日 申請日期:2013年5月13日 優先權日:2013年5月13日
【發明者】鄒維 申請人:騰訊科技(深圳)有限公司