天天看點

人類河流文明 - 資料的流動與生态的重要性

人類社會文明源起于河流文化,人類社會發展積澱河流文化,河流文化生命推動社會發展。

河流文化作為一種人類的文化、文明類型,被人們認知已經經曆了很長的曆史時期,人們把其稱為“大河文明”,尼羅河、幼發拉底河、和底格裡斯河流域的兩河文明、印度河文明、黃河文明。

這些大河文明與人類文明息息相關,是人類文明的源泉和發祥地。河流與人類文明的互相作用,造就了河流的文化生命。河流先于人類存在于地球上,供養生命,使地球充滿生機。

河流與人類社會的關系具有悠久的曆史,河流文化生命概念的提出,擴充了社會調控範圍,引起了一系列的變革。

人類河流文明 - 資料的流動與生态的重要性

<a href="https://en.wikipedia.org/wiki/amazon_river">https://en.wikipedia.org/wiki/amazon_river</a>

<a href="http://baike.baidu.com/item/%e4%ba%9a%e9%a9%ac%e5%ad%99%e6%b2%b3/155637">http://baike.baidu.com/item/%e4%ba%9a%e9%a9%ac%e5%ad%99%e6%b2%b3/155637</a>

<a href="http://baike.baidu.com/item/%e6%b2%b3%e6%b5%81%e6%96%87%e5%8c%96/3895706">http://baike.baidu.com/item/%e6%b2%b3%e6%b5%81%e6%96%87%e5%8c%96/3895706</a>

水是生命的源泉,人類依水而居,水的流動性,使得更多的地球生物可以共享使用,生物賴以生存,哺育了各個時期的人類文明。

資料的流動具有同等重要的地位,資料流動起來,可以讓更多的業務從中受惠,哺育更多的業務,發揮資料更大的價值。

那麼如何讓資料流動起來呢?

水的源頭通常發源自大的山脈和冰川,例如長江源(三江源之一):即長江的源頭、也即通天河的幾個源頭,在青藏高原腹地昆侖山脈和唐古拉山脈之間。

亞馬遜河流發源地安第斯山脈(蓋丘亞語:andes;奇楚亞語:antis)屬于科迪勒拉山系,也稱安弟斯山脈或安蒂斯山脈,位于南美洲的西岸,範圍從巴拿馬一直到智利。從北到南全長8900餘千米,是世界上最長的山脈,縱貫南美大陸西部,素有“南美洲脊梁”之稱,山脈有許多海拔6000米以上、山頂終年積雪的高峰,且地區礦産資源豐富。

資料的源頭,和業務相關,例如和人類相關的業務(電商系統、車聯網、金融系統等等),人類的活動就是資料的來源。

人類活動産生的資料,寫入資料庫,形成資料冰川,為河流的形成奠定了基礎。

為了提高響應速度,提高可靠性,通常資料庫都有預寫日志系統。從預寫日志可以解讀出資料的變化,形成冰川融化效應,将這些解讀出來的資料,彙入mq系統,形成資料的流動。

資料在流動過程中,附着了各種圍繞資料而産生的業務生态,例如流計算、全文索引、二級緩存、監控、大資料平台等等。

人類河流文明 - 資料的流動與生态的重要性

confluent是一個開源的資料流平台。

<a href="http://docs.confluent.io/current/">http://docs.confluent.io/current/</a>

人類河流文明 - 資料的流動與生态的重要性

1、postgresql資料庫端,添加擴充插件,插件的功能是提供将wal解析為某種格式。

2、搬運工(用戶端),連接配接pg資料庫,通過流複制協定将pg資料庫解析好的wal,擷取過來。(支援斷點續傳、支援拖表的已有資料、支援快照和續傳)

3、搬運工(用戶端),将從pg資料庫擷取到的資料寫入kafka隊列。

4、河流生态,從kafka消費資料。

ps:

通過建立slot(記錄wal的解析位點),pg支援斷電續傳,同時也支援多個搬運工,不同的搬用工獨立工作,可以搬運重複資料,也可以搬運非重複資料。

當搬運工不在需要時,記得在pg資料庫中删除對應的slot(例如 select pg_drop_replication_slot('bottledwater');)。

與pg類似。

例如業務有多個oltp資料庫(例如本文提到的postgresql、mysql等),通過本文提到的方法,可以将資料實時的寫入到分析型的資料庫(例如rds postgresql, hybriddb for postgresql)。

分析人員可以在分析庫中看到延遲較低的線上業務産生的資料。

通過本文提到的方法,将資料實時從oltp資料庫流出,并流入流計算業務資料庫(例如 pipelinedb),實作資料的實時預警、實時流式計算等。

将流出的資料,實時寫入全文檢索軟體(例如es),并實時的建立全文索引。

ps:postgresql資料庫本身還提供了fdw或udf接口,也可以實作實時的對接es全文檢索。

或者你可以使用pg自身提供的全文檢索功能(tsvector)。

<a href="https://github.com/digoal/blog/blob/master/201610/20161019_01.md">《postgresql 全文檢索加速 快到沒有朋友 - rum索引接口(潘多拉魔盒)》</a>

<a href="https://github.com/digoal/blog/blob/master/201604/20160419_01.md">《postgresql 行級 全文檢索》</a>

使用本文提到的方法,我們可以将資料實時的在緩存系統進行回放,實時的更新緩存。

流式河流的形态,使用者可以使用河流中的資料,但是用完就消失了,你無法對它進行重複享用。是以我們再介紹一種形态,蓄式河流。

蓄式河流,資料會永久的存在于河流中,供給生态業務共享使用,阿裡雲的oss對象存儲是一個海量的蓄式河流。

使用者可以将資料(不管什麼類型的資料)寫入oss,對接資料消費者,例如阿裡雲rds postgresql, 阿裡雲hybriddb for postgresql,通過fdw對接oss,對資料進行分析和使用。

postgresql 具備強大的oltp能力,同時具備透明讀寫oss的能力,是蓄式河流生态中資料處理非常重要的角色。業務方可以将它作為資料分析、線上事務處理的資料庫。

hybriddb for postgresql ,具備pg功能的同時,還具備了橫向擴充能力,是面向olap設計的一款産品,分析能力卓越。業務方可以将其作為蓄式河流生态中的資料分析角色。

下面這幅圖描繪了典型的雲端計算(pg,hdb for pg)和河流(oss)生态結合的例子。

人類河流文明 - 資料的流動與生态的重要性
人類河流文明 - 資料的流動與生态的重要性

1、流式河流,即取即釋,資料流過,特别适合生态業務對資料進行實時的處理,例如流計算、生成全文檢索、實時預警、緩存業務。

2、蓄式河流,資料會持久的儲存在oss中,特别适合需要反複使用同一份資料,或者需要将資料分享給多個業務方使用的場景。例如雲端計算(pg, hdb for pg)産品。使用者可以使用這種方法,實作oltp和olap的實時打通。

<a href="https://github.com/confluentinc/bottledwater-pg">https://github.com/confluentinc/bottledwater-pg</a>

<a href="https://www.confluent.io/blog/bottled-water-real-time-integration-of-postgresql-and-kafka/">https://www.confluent.io/blog/bottled-water-real-time-integration-of-postgresql-and-kafka/</a>