【原創理論】 數據處理•數據沉澱法則



 緒論

        最近忙於對微商城用戶的數據進行冗餘分離,數據處理過程枯燥乏味,因而乎內心便想着能不能適當偷偷懶呢?答案固然是不切實際的,由於分離處理必需要有人員進行跟蹤監視,也正是由於數據容易存在析出不完全的現象,而對於這種現象所致使的結果,卻偏偏須要進行人工的二次處理。簡直能夠稱得上是使人焦頭爛額、束手無策的了。算法

        不過今天去北食堂吃飯的時候,恰好路過棚橋,也恰好看到了這一幕:棚橋東池塘的水十分渾濁,而西池塘的水卻格外清澈,即便東池塘要比西池塘更大一些。對呀,渾濁的水容易在相對靜止的環境下進行自我沉澱,這是天然現象,這也難道不正是我一直心心念念苦心追求的「適當偷偷懶」嗎!數據庫

        如今,咱們大能夠設想一下,將這東池塘中相對靜止的渾濁的水,比做咱們將要進行數據分離或提取的源數據,而西池塘清澈的水即是咱們處理而獲得的結果,處理過程就是利用了這種天然沉澱的方法。能夠把這種現象、處理方法或處理過程稱之爲數據沉澱法則,簡稱沉澱法則或者析出法則。編程

 

 

 

沉澱法則

       下面將從前景概要、優勢和侷限性、實現原理、以及體系模式等方面進行介紹,關於沉澱法則是否適用於計算機科學領域,也是否真的能幫到咱們在處理過程當中獲得適當的閒暇時光呢?其實,若是要完徹底全地給一個很好的定義條件,我想這個所謂的「天然環境」也一定不會少到那裏去,但咱們姑且一試!緩存

       這裏我爲何要先說前景概要、優勢和侷限性呢?目的是爲了更好地論證咱們的法則,也更好地區分法則的自身的應用侷限性網絡

 

 

前景概要

    從許多許多的現實應用中,咱們其實不難發現,沉澱法則幾乎無處不在,只是都以不大相同的面目示人,舉些簡單地例子:利用excel軟件對數據進行排序、數據庫的自增碼變化、資源管理器的文件顯示方式等等。那麼,這些與咱們所敘述的前景概要有什麼關係呢?固然是有關係的,由於前者先一步存在,而咱們如今所作的無非是對其進行定義、整理和設想。數據結構

      在各位前輩的辛苦徵承下,咱們如今使用的工具和所承受的技術,早就已經造成相對穩定的發展態勢,並且只能朝更加穩定和適用的方向發展。而技術發展的前提之一也就是數據必須獲得處理,這對於數據處理就免不了要進行提取和排序等操做,而提取和排序等操做正是沉澱法則最典型的天然形態。架構

     在4個主要的領域中:計算理論,算法與數據結構,編程方法與編程語言。編程語言

      計算理論雖然表面上更具備原則性,可是咱們大能夠膽大地將沉澱法則與之一論:新的計算機理論必將在舊的理論的基礎上,進行發展,那麼就會產生相似沉澱的通常,將新生的態勢不斷髮展。算法與數據結構就更加不用說了,簡單地冒泡算法就是一個典型的例子,將權重的數日後排序的過程就是數據大顆粒沉澱的過程。編程方法與編程語言,和咱們的沉澱法則貌似神離,但其間的關係卻難免一說。分佈式

    對於那些軟件工程,人工智能,計算機網絡與通訊,數據庫系統,並行計算,分佈式計算,人機交互,機器翻譯,計算機圖形學,操做系統,以及數值和符號計算等等的領域,即便其自己不是法則的產物,也多多少少都具備法則的發展態勢和過程利用。工具

 

優勢和侷限性

      這裏對法則的優勢和侷限性做以簡單地歸納,或許獨道的看法並不是是最典型的,但它也必將是正面或者反面言論不可或缺的一部分。下面咱們先來講說優勢:

  1. 對數據的冗餘分離更加完全,極大減小了二次返工的可能性,也極大地提升了數據純淨度數據利用率) ;   
  2. 對數據處理的範圍面程度更廣,適應坡度基(不一樣的做業環境或底層架構設施)更強,具有良好的生存力;
  3. 底部管道的安裝(數據類型的提取)更加靈活,支持多路複用模式,是一種不錯的數據反應池(數據梯度反應堆,一種應用型的數據處理容器);
  4. 能有效地對數據的量質(數據使用的優先率,適於引用的適應性)進行沉浮(數據的析出類型,如:越須要的數據越往上浮,冗餘或者顆粒度越飽滿的數據越下移。或者反過來,將須要的從底部析出);
  5. 集中計算和集中管理,避免分散數據處理的不飽和度(處理結果與指望值匹配性不高)。

  有利固然也有弊,對於法則的侷限性,可簡單歸納以下:

  1. 時間或者空間效率沒法平行。要麼加重處理的複雜度(包括數據處理過程的複雜度、容器或反應堆構建的複雜度),或者產生條件冗餘(在反應堆容器爲條件的狀況下,產生二次結合物(不可逆的新生「髒」數據)),這須要進行相對的監管;
  2. 維基梯度(支撐這個容器的物理主機硬件資源的總體能力)須要的條件較高,耗費計算資源比分散計算類型較高;

實現原理

       這裏咱們姑且仍是以東池塘和西池塘爲例,以下圖,東池塘中存在天然的沉澱分離層,西池塘雖然存在一道分離網,可是能夠將西池塘看做兩個容器,展現緩存過濾的處理結果。梯度差別更加有利於高純度的數據流出,下管道用於搬遷沉泥、雜石等雜質。東池塘還存在隱藏的部分,就是入水口,這裏姑且省略。

       可是很明顯,若是隻是讓容器自己對須要處理的數據進行自我析出的話,那麼將極大地耗損計算資源和時間。那樣的話,空間和時間的效率將極大地被人們難以接受,而處理的辦法就是第三方「催化劑」,也正是引入了「催化劑」的緣故,致使東池塘的水的穩定性稍微下降,可是穩定性的高低大小仍是取決於「催化劑」自己,若是咱們選對了就能事半功倍,若是選很差結果也是十分嚴重的。

                           

      固然上述,所謂的加第三方「催化劑」是其中的一種實現方式,也能夠選擇其它的。咱們能夠對上圖的東池塘部分,進行相對的細化描述。下圖模型有些簡陋,可是原理是不變的。

                            

       當數據從源容器或者第三方數據庫,經過API被點入東池塘中時,水仍是渾濁的。可是通過速力扇葉時,被高速打擊在上層的壓力扶梯面和下層的冗餘數據沉積池的壓力扶梯面上,便被高速篩選。以上僅僅是對於以東池塘和西池塘爲例的模型而論,由於實際計算機內部的計算實現方式與池塘過濾有所不一樣,因此引入了下方沉積法則的體系模式。

 

體系模式

      沉積法則的體系模式分爲權重分配沉積法、分層積降法和動態沉澱法。這兩種分離析出模式的不一樣點在於:前者主要按元素的形式沉積,而分層積降法是總體對數據集進行沉降。理論上而言,分層積降法的計算能力時間較長,權重分配沉積法的計算壓力更大。而動態沉澱法綜合了二者的優勢,採起的是了動態分批模式。

     而對於權重分配沉積法、分層積降法和動態沉澱法的底層實現方法,又能夠分爲集合形式、鏈式、以及圖式。這裏所涉及的集合、鏈、以及圖等的概念,並不是是咱們爛熟於心單純的JAVA或者C數據結構,而是這些結構的有機體。

        1.權重分配沉積法

        權重分配沉積法內部分爲頭權重、身重和尾權重。無論是哪種的權重分配,都難免涉及權重如何分配以及權重如何回收等的問題。

       首先,是頭權重。簡單地來講,就是對單個數據元素創建相似於鍵值對的形式,創建多列級別的曬選標籤。權重級別根據數據處理人員或客戶要求,創建級別庫,當數據進入池子後,程序根據輪轉的性質對元素進行體檢,並將級別屬性做爲前置權重標籤值分配。源數據能夠不間斷地進入容器,可是在篩選程序已經執行時,數據元仍然能夠具有沉降特性。各司其職互不干涉,耗費的計算時間是連續的,可是權重分配和元素自我沉積互不影響。至於權重怎麼回收?以權重的方式將數據元的數據屬性分配到相應的容器中,通過了壓力扶梯表面,另外一個容器就進行數據元的結構拆除,還原數據的結構體,並創建新的結構集包裝。

       相應的身重和尾權重,與頭權重相比區別不大,但可進行相應的優化。

       2.分層積降法

        與權重分配沉積法的頭權重同樣,將數據元加載到沉降容器中,可是不一樣在於:在數據集合徹底進入處理池中前,數據處理池更改自身的標籤類型,將本身化做緩存池。等到徹底加載完畢將再次修改池的標籤類型,真正地進入數據沉降過程。因爲在數據處理前花費的等待時間過長,因此分層積降法也稱爲靜態法。因爲一次處理未見得獲得高分離度數據集,因此首次底層沉降的部分會經過容器壁面深埋的多路管道,回到頂部,進行二次沉降。總體看似分層,由此得名。

 

      3.動態沉澱法

        在容器池中啓用二級或多級緩存池,存儲新來的數據元,而且在篩選程序未執行完前,前一批操做時不得從緩存池中釋放。當篩選程序執行完後,調度一級緩存池的數據集。二級緩存池將數據分配給一級緩存池。當設置的N級緩存池緩存滿了以後,將阻塞進料口,致使進料緩慢但不會形成數據集內容丟失。也能夠採用多路複用的形式,在一層分離提取的基礎上設置二層或多層分離池,提升提取的成分精度。

相關文章
相關標籤/搜索