PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法【專利摘要】本發(fā)明公開了一種PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,屬于數(shù)據(jù)庫大數(shù)據(jù)處理【
技術(shù)領(lǐng)域:
】,創(chuàng)建入口表,將分區(qū)值抽象轉(zhuǎn)換為一個隨時間推移的固定循環(huán)值;根據(jù)固定的循環(huán)值創(chuàng)建固定的分區(qū)邏輯;創(chuàng)建根據(jù)入口表的分區(qū)邏輯代碼和字段值分發(fā)的分區(qū)繼承表;把活動分區(qū)從分區(qū)邏輯中剝離,讓活動分區(qū)隨著時間的推移進行自動創(chuàng)建;利用繼承特性將固定分區(qū)的數(shù)據(jù)定時的轉(zhuǎn)移到活動分區(qū),并在轉(zhuǎn)移完成后刪除固定分區(qū)中的數(shù)據(jù);根據(jù)數(shù)據(jù)量進行分裂設(shè)計,預(yù)先定義好分層和數(shù)據(jù)量對應(yīng)規(guī)則,當活動分區(qū)表數(shù)據(jù)量超過上限閾值則自動往下一層分裂;創(chuàng)建根據(jù)分區(qū)繼承表的異步主動活動數(shù)據(jù)轉(zhuǎn)移的異步繼承表?!緦@f明】PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及數(shù)據(jù)庫大數(shù)據(jù)處理【
技術(shù)領(lǐng)域:
】,尤其涉及一種PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法?!?br>背景技術(shù):
】[0002]現(xiàn)有的PostgreSQL數(shù)據(jù)庫由于對單個表的記錄數(shù)量是有限制的,同時存儲的空間方面也有限制,即便這些都沒有限制,MDL(數(shù)據(jù)操作語言命令)的操作效率也會隨著表的大小增長受到影響?,F(xiàn)有PostgreSQL數(shù)據(jù)庫對大數(shù)據(jù)的處理一般采用數(shù)據(jù)分區(qū)或數(shù)據(jù)分層的方式來實現(xiàn)。例如,PostgreSQL數(shù)據(jù)庫不僅支持range、list和hash這幾種數(shù)據(jù)分區(qū)方式,同時還支持任意組合的數(shù)據(jù)分層方式,但數(shù)據(jù)分層方式需要通過觸發(fā)器來實現(xiàn)。[0003]目前,在使用PostgreSQL數(shù)據(jù)庫的傳統(tǒng)數(shù)據(jù)分區(qū)時存在以下問題:[0004]一是現(xiàn)有PostgreSQL數(shù)據(jù)庫的數(shù)據(jù)分區(qū)方法比較死板,數(shù)據(jù)庫分區(qū)表的定義一旦固定下來,后期隨著數(shù)據(jù)量的變化,要分區(qū)表的分裂就比較麻煩,需要人為干預(yù),并且會堵塞DML的操作,影響業(yè)務(wù)。例如,現(xiàn)有PostgreSQL數(shù)據(jù)庫分區(qū)表的分區(qū)定義和分區(qū)約束隨著時間的推移,分區(qū)表需要人為干預(yù)添加,如果要擴展分區(qū),例如從月擴展到日分區(qū)需要人為干預(yù),易于出現(xiàn)問題。[0005]二是對于范圍分區(qū),需要定期增加分區(qū),否則數(shù)據(jù)會因為值不能落在已定義的分區(qū)內(nèi)而溢出,返回錯誤,影響業(yè)務(wù)。即便有默認分區(qū),也影響DML的效率。例如,現(xiàn)有PostgreSQL數(shù)據(jù)庫的分區(qū)定義和入口對象綁定,維護起來比較麻煩。[0006]三是分區(qū)越多,分區(qū)邏輯代碼就越長,一方面影響效率,另一方面增加了代碼維護難度以及出錯概率。例如,現(xiàn)有PostgreSQL數(shù)據(jù)庫的分區(qū)邏輯隨著時間的推移,邏輯代碼需要人為干預(yù)修改,分區(qū)越多,代碼越龐大,效率越低,出錯概率越大。擴展分區(qū)需要人為干預(yù)修改分區(qū)邏輯?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明是為了解決PostgreSQL數(shù)據(jù)庫的分區(qū)表定義固定下來后導(dǎo)致后期分區(qū)表不易分裂,數(shù)據(jù)易從范圍分區(qū)表中溢出,分區(qū)表越多使得分區(qū)邏輯的代碼就越長從而導(dǎo)致DML的效率低和增加代碼維護難度的不足,提供一種將分區(qū)邏輯固定到一個循環(huán)內(nèi),根據(jù)固定循環(huán)創(chuàng)建固定的分區(qū)邏輯,活動分區(qū)從分區(qū)邏輯中剝離,數(shù)據(jù)向活動分區(qū)自動轉(zhuǎn)移,根據(jù)數(shù)據(jù)量自動分裂分區(qū)的PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法。[0008]為了實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:[0009]PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,包括如下步驟:[0010](1)創(chuàng)建入口表,且應(yīng)用程序只與入口表交互;[0011](2)按照數(shù)據(jù)庫分區(qū)表的分區(qū)值特征,將分區(qū)值抽象轉(zhuǎn)換為一個隨時間推移的固定循環(huán)值;[0012](3)根據(jù)固定的循環(huán)值創(chuàng)建固定的分區(qū)邏輯;[0013](4)創(chuàng)建根據(jù)入口表的分區(qū)邏輯代碼和字段值分發(fā)的分區(qū)繼承表;[0014](5)把活動分區(qū)從分區(qū)邏輯中剝離,讓活動分區(qū)隨著時間的推移進行自動創(chuàng)建;[0015](6)0利用繼承特性將固定分區(qū)的數(shù)據(jù)定時的轉(zhuǎn)移到活動分區(qū)。并在轉(zhuǎn)移完成后刪除固定分區(qū)中的數(shù)據(jù);[0016](7)根據(jù)數(shù)據(jù)量進行分裂設(shè)計,如果單表數(shù)據(jù)量太龐大,則把時間跨度大的當前活動分區(qū)表分裂成時間跨度小的目標活動分區(qū)表,先把目標活動分區(qū)表加入繼承關(guān)系,同時修改定時的數(shù)據(jù)轉(zhuǎn)移邏輯,數(shù)據(jù)往目標活動分區(qū)表寫,然后啟動一個事務(wù)將當前活動分區(qū)表中的數(shù)據(jù)分裂到目標活動分區(qū)表中去,同時斷開當前活動分區(qū)表的連接;[0017](8)預(yù)先定義好分層和數(shù)據(jù)量對應(yīng)規(guī)則,當活動分區(qū)表數(shù)據(jù)量超過上限閾值則自動往下一層分裂;[0018](9)創(chuàng)建根據(jù)分區(qū)繼承表的異步主動活動數(shù)據(jù)轉(zhuǎn)移的異步繼承表;[0019](10)創(chuàng)建用于記錄每次活動分區(qū)的方法、分區(qū)表名和時間戳的元表;[0020](11)創(chuàng)建用于數(shù)據(jù)轉(zhuǎn)移的邏輯函數(shù),所述邏輯函數(shù)首先從元表獲取當前異步分區(qū)模式,然后判斷是否到達臨界點,如果到達臨界點則從統(tǒng)計表取上一個分區(qū)表的大小,則根據(jù)數(shù)據(jù)量選擇對應(yīng)分區(qū)策略創(chuàng)建分區(qū),并在元表新增一條記錄來標示當前的分區(qū)策略,如果未到達臨界點,則根據(jù)當前分區(qū)策略調(diào)用對應(yīng)的數(shù)據(jù)轉(zhuǎn)移邏輯,并根據(jù)當前時間選擇合適的固定分區(qū),在選定的固定分區(qū)中取出最小時間和最大時間,并從元表取出最小時間和最大時間范圍的分區(qū)表名以及前后分區(qū)表名,并將固定分區(qū)的數(shù)據(jù)寫入這些活動分區(qū)表,并同時清除固定分區(qū)表的數(shù)據(jù);[0021](12)定時調(diào)用數(shù)據(jù)轉(zhuǎn)移函數(shù)。[0022]作為優(yōu)選,使用bulkload的方式數(shù)據(jù)轉(zhuǎn)移,使用TRUNCATE的方式刪除固定分區(qū)的數(shù)據(jù)。[0023]作為優(yōu)選,分區(qū)值的固定循環(huán)值包括按月循環(huán)、按周循環(huán)、按日循環(huán)、按小時循環(huán)、按分鐘循環(huán)、按秒循環(huán)或按半小時循環(huán)。[0024]作為優(yōu)選,分區(qū)邏輯如果按小時的粒度,只需要創(chuàng)建24個分區(qū)。[0025]本發(fā)明能夠達到如下效果:[0026]1、將分區(qū)邏輯固定到一個循環(huán)內(nèi),實現(xiàn)分區(qū)邏輯代碼免維護。同時縮小了循環(huán)區(qū)域的數(shù)據(jù)量,這樣的話可以和活動分區(qū)區(qū)別存儲,例如高10能力的存儲和低10能力的存儲。節(jié)約高10能力的存儲成本。[0027]2、根據(jù)固定循環(huán)創(chuàng)建固定的分區(qū)邏輯,例如按小時的粒度,只需要創(chuàng)建24個分區(qū)。分區(qū)表和分區(qū)邏輯固定后,分區(qū)和代碼免維護。因為邏輯代碼部分相比傳統(tǒng)的邏輯更加簡潔,還解決了代碼效率問題。[0028]3、活動分區(qū)從分區(qū)邏輯中剝離,隨著時間的推移自動創(chuàng)建活動分區(qū),解決了分區(qū)維護的問題。[0029]4、數(shù)據(jù)向活動分區(qū)自動轉(zhuǎn)移,利用繼承關(guān)系和DDL事務(wù)解決數(shù)據(jù)一致性問題和自動分區(qū)的問題。[0030]5、根據(jù)數(shù)據(jù)量自動分裂分區(qū),數(shù)據(jù)量的獲取可以從數(shù)據(jù)庫采用數(shù)據(jù)中得到,分裂閾值可以存儲在元表或者邏輯代碼中,自動分裂解決了總?cè)肟诓樵冃蕟栴},因為表過多或者單表過大都會帶來解析或查詢效率問題?!緦@綀D】【附圖說明】[0031]圖1是本發(fā)明的一種架構(gòu)原理示意圖。[0032]圖2是本發(fā)明邏輯函數(shù)的一種流程原理示意圖。【具體實施方式】[0033]下面通過實施例,并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進一步具體的說明。[0034]實例一:PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,參見圖1、圖2所示,包括如下步驟:[0035](I)創(chuàng)建入口表,且業(yè)務(wù)方并行數(shù)據(jù)DML的應(yīng)用程序只與入口表交互。[0036](2)按照分區(qū)值的特征,將值抽象轉(zhuǎn)換為一個隨時間推移的循環(huán)值,例如時間字段,可以演化成按時間推移的循環(huán)值:按月循環(huán)(1-12),按周循環(huán)(1-53),按日循環(huán)(1-366),按小時循環(huán)(1-24),按分鐘循環(huán)(1-60),按秒循環(huán)(1_60),按半小時循環(huán)(0100-2400)等,為解決分區(qū)邏輯代碼維護提供了基礎(chǔ)。[0037](3)根據(jù)固定循環(huán)值創(chuàng)建固定的分區(qū)邏輯,分區(qū)邏輯的分區(qū)邏輯代碼根據(jù)字段值分發(fā)到對應(yīng)的繼承表。例如按小時的粒度,只需要創(chuàng)建24個分區(qū)。分區(qū)表和分區(qū)邏輯固定后,分區(qū)和代碼免維護。解決了效率,分區(qū)邏輯代碼維護問題。[0038](4)創(chuàng)建根據(jù)入口表的分區(qū)邏輯代碼和字段值分發(fā)的分區(qū)繼承表。例如,分發(fā)到繼承表I和繼承表η。[0039](5)把活動分區(qū)從分區(qū)邏輯中剝離,讓活動分區(qū)隨著時間的推移進行自動創(chuàng)建。解決了分區(qū)維護的問題。[0040](6)利用繼承特性將固定分區(qū)的數(shù)據(jù)定時的轉(zhuǎn)移到活動分區(qū),并在轉(zhuǎn)移完成后刪除固定分區(qū)中的數(shù)據(jù)。數(shù)據(jù)向活動分區(qū)自動轉(zhuǎn)移的設(shè)計,利用繼承特性將固定分區(qū)的數(shù)據(jù)定時的轉(zhuǎn)移到活動分區(qū),并從固定分區(qū)刪除,數(shù)據(jù)轉(zhuǎn)移可以使用bulkload的方式,加快轉(zhuǎn)移速度,刪除固定分區(qū)的數(shù)據(jù)可以選擇TRUNCATE方式,加快速度,同時不會阻斷DML,解決了自動分區(qū)的問題。[0041](7)根據(jù)數(shù)據(jù)量進行分裂設(shè)計,如果單表數(shù)據(jù)量太龐大,則把時間跨度大的當前活動分區(qū)表分裂成時間跨度小的目標活動分區(qū)表,先把目標活動分區(qū)表加入繼承關(guān)系,同時修改定時的數(shù)據(jù)轉(zhuǎn)移邏輯,數(shù)據(jù)往目標活動分區(qū)表寫,然后啟動一個事務(wù)將當前活動分區(qū)表中的數(shù)據(jù)分裂到目標活動分區(qū)表中去,同時斷開當前活動分區(qū)表的連接。例如當前活動分區(qū)是按月份分區(qū)的,單表數(shù)據(jù)量太龐大,要分裂成按日分區(qū),先把日表加入繼承關(guān)系,同時修改定時數(shù)據(jù)轉(zhuǎn)移邏輯,數(shù)據(jù)往日表寫,然后啟動一個事務(wù)將月表數(shù)據(jù)分裂到日表同時斷開月表關(guān)系,保證數(shù)據(jù)一致性,這些操作對應(yīng)用來說都是透明的,并且不阻斷DML,解決傳統(tǒng)分區(qū)分裂可能阻斷DML的問題。[0042](8)預(yù)先定義好分層和數(shù)據(jù)量對應(yīng)規(guī)則,當活動分區(qū)表數(shù)據(jù)量超過上限閾值則自動往下一層分裂。例如,預(yù)先定義好分層和數(shù)據(jù)量對應(yīng)規(guī)則,例如年,月,周,日,小時,分鐘對應(yīng)的數(shù)據(jù)量級的規(guī)則,當分區(qū)數(shù)據(jù)量超過上限閾值則往下一層分裂,解決實現(xiàn)自動分裂的問。[0043](9)創(chuàng)建根據(jù)分區(qū)繼承表的異步主動活動數(shù)據(jù)轉(zhuǎn)移的異步繼承表al和異步繼承表anο[0044](10)創(chuàng)建用于記錄每次活動分區(qū)的方法、分區(qū)表名和時間戳的元表。[0045](11)創(chuàng)建用于數(shù)據(jù)轉(zhuǎn)移的邏輯函數(shù),所述邏輯函數(shù)首先從元表獲取當前異步分區(qū)模式,然后判斷是否到達臨界點,如果到達臨界點則從統(tǒng)計表取上一個分區(qū)表的大小,則根據(jù)數(shù)據(jù)量選擇對應(yīng)分區(qū)策略創(chuàng)建分區(qū),并在元表新增一條記錄來標示當前的分區(qū)策略,如果未到達臨界點,則根據(jù)當前分區(qū)策略調(diào)用對應(yīng)的數(shù)據(jù)轉(zhuǎn)移邏輯,并根據(jù)當前時間選擇合適的固定分區(qū),在選定的固定分區(qū)中取出最小時間和最大時間,并從元表取出最小時間和最大時間范圍的分區(qū)表名以及前后分區(qū)表名,并將固定分區(qū)的數(shù)據(jù)寫入這些活動分區(qū)表,并同時清除固定分區(qū)表的數(shù)據(jù)。[0046](12)定時調(diào)用數(shù)據(jù)轉(zhuǎn)移函數(shù)。[0047]實例二=PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,參見圖1、圖2所示,包括如下步驟:[0048]一、與業(yè)務(wù)交互的入口表和分區(qū)邏輯實施。[0049]1-1、創(chuàng)建入口表tbl,指定一個分區(qū)字段例如ctime,要求可以從字段內(nèi)容區(qū)分該行插入哪個繼承表,例如類型為時間戳。應(yīng)用程序只與入口表交互。[0050]1-2、創(chuàng)建入口表的繼承表,例如按小時創(chuàng)建24個繼承表,tbl_01到tbl_24,為每個繼承表的ctime加上必要的約束,例如tbl_01約束checkto_char(ctime,’hh24,)=01。[0051]1-3、創(chuàng)建插入觸發(fā)器函數(shù),根據(jù)ctime函數(shù)字段值,插入對應(yīng)的繼承表。例如2014-01-0112:01:01插入tbl_12表。[0052]1-4、為了防止刪除和更新入口表,創(chuàng)建刪除,更新觸發(fā)器函數(shù),當入口表執(zhí)行刪除或更新操作時,直接返回異常。[0053]1-5、創(chuàng)建行觸發(fā)器函數(shù),行觸發(fā)器函數(shù)觸發(fā)前面創(chuàng)建的插入觸發(fā)器函數(shù)。[0054]這個部分創(chuàng)建完后就不需要再維護了,數(shù)據(jù)插入入口表時,自動插入到對應(yīng)的繼承表。[0055]二、異步數(shù)據(jù)轉(zhuǎn)移邏輯實施。[0056]2-1、創(chuàng)建元表,記錄異步繼承表的數(shù)據(jù)分區(qū)維度(例如日,月,年),分區(qū)表名,時間戳,初始狀態(tài)。[0057]2-2、初始化異步繼承表維度,設(shè)置為最低的維度(例如日)。[0058]2-3、創(chuàng)建用于數(shù)據(jù)轉(zhuǎn)移邏輯的函數(shù)。[0059]2-4、函數(shù)處理流程:開啟ssi或rr事務(wù),從元表獲取當前異步分區(qū)模式(如日,月,年),并判斷是否到達臨界點,如果達到臨界點,則從統(tǒng)計表取上一個分區(qū)表的大小,然后根據(jù)數(shù)據(jù)量選擇對應(yīng)分區(qū)策略,創(chuàng)建分區(qū),并在元素表新增一條記錄,當前分區(qū)策略。然后根據(jù)分區(qū)策略,調(diào)用對應(yīng)的數(shù)據(jù)轉(zhuǎn)移邏輯,然后根據(jù)當前時間選擇合適的固定分區(qū),在選定的固定分區(qū)中取出min和maxtime。然后從元素表取出這個時間段內(nèi)的分區(qū)以及前后增加各一個分區(qū)表,以這些分區(qū)表和分區(qū)策略為基礎(chǔ),將固定分區(qū)的數(shù)據(jù)插入這些分區(qū)表,并清除選定固定分區(qū)的記錄。如果沒有達到臨界點,則直接進入到根據(jù)分區(qū)策略,調(diào)用對應(yīng)的數(shù)據(jù)轉(zhuǎn)移邏輯這一步。在本實例中,函數(shù)處理流程先從元表獲取當前異步繼承表分區(qū)維度,初始維度為日。若當前為非初始維度:根據(jù)當前的異步繼承表的分區(qū)維度,從統(tǒng)計表獲取上一個異步繼承表分區(qū)的容量大小,若當前為初始維度:初始維度創(chuàng)建發(fā)生3天后,取前一天的異步繼承表分區(qū)的容量大小。對照閾值判斷是否需要變更維度,例如日表容量小于閾值,變更為月表;月表容量大于閾值,變更為日表,容量小于閾值變更為年表;年表容量大于閾值變更為月表。如果異步繼承表的維度發(fā)生了變更,將變更寫入元表,作為當前的異步繼承表的維度。從繼承表前2個分區(qū)數(shù)據(jù)中取出min,max時間,例如現(xiàn)在是17點,取15的分區(qū)數(shù)據(jù)。判斷繼承表數(shù)據(jù)是否跨異步繼承表分區(qū)當前維度,(例如min,max包含了2天的數(shù)據(jù),則跨日維度)。如果跨維度,判斷維度對應(yīng)的異步繼承表是否全部存在(例如tbl_20140101,tbl_20140102),不存在則創(chuàng)建對應(yīng)的異步繼承表,并添加相應(yīng)的約束。數(shù)據(jù)插入對應(yīng)的異步繼承表。truncate該轉(zhuǎn)移數(shù)據(jù)的繼承表分區(qū),截斷數(shù)據(jù)。[0060]2-5開啟repeatableread或ssi事務(wù),調(diào)用數(shù)據(jù)轉(zhuǎn)移函數(shù)。[0061]2-6將步驟2-4做成定時任務(wù),定時執(zhí)行(但是不能超越I天),建議I個小時執(zhí)行一次。[0062]實例一是將分區(qū)邏輯固定到一個循環(huán)內(nèi),實現(xiàn)分區(qū)邏輯代碼免維護。同時縮小了循環(huán)區(qū)域的數(shù)據(jù)量,這樣的話可以和活動分區(qū)區(qū)別存儲,例如高1能力的存儲和低1能力的存儲。節(jié)約高1能力的存儲成本。二是根據(jù)固定循環(huán)創(chuàng)建固定的分區(qū)邏輯,例如按小時的粒度,只需要創(chuàng)建24個分區(qū)。分區(qū)表和分區(qū)邏輯固定后,分區(qū)和代碼免維護。因為邏輯代碼部分相比傳統(tǒng)的邏輯更加簡潔,還解決了代碼效率問題。三是把活動分區(qū)從分區(qū)邏輯中剝離,隨著時間的推移自動創(chuàng)建活動分區(qū),解決了分區(qū)維護的問題。四是把數(shù)據(jù)向活動分區(qū)自動轉(zhuǎn)移,利用繼承關(guān)系和DDL事務(wù)解決數(shù)據(jù)一致性問題和自動分區(qū)的問題。五是根據(jù)數(shù)據(jù)量自動分裂分區(qū),數(shù)據(jù)量的獲取可以從數(shù)據(jù)庫采用數(shù)據(jù)中得到,分裂閾值可以存儲在元表或者邏輯代碼中,自動分裂解決了總?cè)肟诓樵冃蕟栴},因為表過多或者單表過大都會帶來解析或查詢效率問題。[0063]上面結(jié)合附圖描述了本發(fā)明的實施方式,但實現(xiàn)時不受上述實施例限制,本領(lǐng)域普通技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變化或修改。【權(quán)利要求】1.一種PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,其特征在于,包括如下步驟:(1)創(chuàng)建入口表,且應(yīng)用程序只與入口表交互;(2)按照數(shù)據(jù)庫分區(qū)表的分區(qū)值特征,將分區(qū)值抽象轉(zhuǎn)換為一個隨時間推移的固定循環(huán)值;(3)根據(jù)固定的循環(huán)值創(chuàng)建固定的分區(qū)邏輯;(4)創(chuàng)建根據(jù)入口表的分區(qū)邏輯代碼和字段值分發(fā)的分區(qū)繼承表;(5)把活動分區(qū)從分區(qū)邏輯中剝離,讓活動分區(qū)隨著時間的推移進行自動創(chuàng)建;(6)利用繼承特性將固定分區(qū)的數(shù)據(jù)定時的轉(zhuǎn)移到活動分區(qū),并在轉(zhuǎn)移完成后刪除固定分區(qū)中的數(shù)據(jù);(7)根據(jù)數(shù)據(jù)量進行分裂設(shè)計,如果單表數(shù)據(jù)量太龐大,則把時間跨度大的當前活動分區(qū)表分裂成時間跨度小的目標活動分區(qū)表,先把目標活動分區(qū)表加入繼承關(guān)系,同時修改定時的數(shù)據(jù)轉(zhuǎn)移邏輯,數(shù)據(jù)往目標活動分區(qū)表寫,然后啟動一個事務(wù)將當前活動分區(qū)表中的數(shù)據(jù)分裂到目標活動分區(qū)表中去,同時斷開當前活動分區(qū)表的連接;(8)預(yù)先定義好分層和數(shù)據(jù)量對應(yīng)規(guī)則,當活動分區(qū)表數(shù)據(jù)量超過上限閾值則自動往下一層分裂;(9)創(chuàng)建根據(jù)分區(qū)繼承表的異步主動活動數(shù)據(jù)轉(zhuǎn)移的異步繼承表;(10)創(chuàng)建用于記錄每次活動分區(qū)的方法、分區(qū)表名和時間戳的元表;(11)創(chuàng)建用于數(shù)據(jù)轉(zhuǎn)移的邏輯函數(shù),所述邏輯函數(shù)首先從元表獲取當前異步分區(qū)模式,然后判斷是否到達臨界點,如果到達臨界點則從統(tǒng)計表取上一個分區(qū)表的大小,則根據(jù)數(shù)據(jù)量選擇對應(yīng)分區(qū)策略創(chuàng)建分區(qū),并在元表新增一條記錄來標示當前的分區(qū)策略,如果未到達臨界點,則根據(jù)當前分區(qū)策略調(diào)用對應(yīng)的數(shù)據(jù)轉(zhuǎn)移邏輯,并根據(jù)當前時間選擇合適的固定分區(qū),在選定的固定分區(qū)中取出最小時間和最大時間,并從元表取出最小時間和最大時間范圍的分區(qū)表名以及前后分區(qū)表名,并將固定分區(qū)的數(shù)據(jù)寫入這些活動分區(qū)表,并同時清除固定分區(qū)表的數(shù)據(jù);(12)定時調(diào)用數(shù)據(jù)轉(zhuǎn)移函數(shù)。2.根據(jù)權(quán)利要求1所述的PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,其特征在于,使用bulkload的方式數(shù)據(jù)轉(zhuǎn)移,使用TRUNCATE的方式刪除固定分區(qū)的數(shù)據(jù)。3.根據(jù)權(quán)利要求1或2或所述的PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,其特征在于,分區(qū)值的固定循環(huán)值包括按月循環(huán)、按周循環(huán)、按日循環(huán)、按小時循環(huán)、按分鐘循環(huán)、按秒循環(huán)或按半小時循環(huán)。4.根據(jù)權(quán)利要求3所述的PostgreSQL大數(shù)據(jù)高效免維護自動分區(qū)方法,其特征在于,分區(qū)邏輯如果按小時的粒度,只需要創(chuàng)建24個分區(qū)?!疚臋n編號】G06F17/30GK104503966SQ201410550641【公開日】2015年4月8日申請日期:2014年10月16日優(yōu)先權(quán)日:2014年10月16日【發(fā)明者】周正中申請人:杭州斯凱網(wǎng)絡(luò)科技有限公司