程序員pos機,程序員應關注其技術本質

 新聞資訊  |   2023-03-31 09:37  |  投稿人:pos機之家

網上有很多關于程序員pos機,程序員應關注其技術本質的知識,也有很多人為大家解答關于程序員pos機的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、程序員pos機

2、什么是移動開發程序員

程序員pos機

區塊鏈技術其實就是一個特殊的多活分布式數據庫,既不是萬能的也不是一無是處的,和所有技術一樣都有特定的適用場景,大家也需要在技術角度客觀的看待這個問題。

記者 | 鴿子

最近,隨著區塊鏈技術在各大媒體上大肆報道,人們對區塊鏈的態度分為兩級。

一種看法是百分百的擁護和信奉,將“去中心化”時時刻刻掛在嘴邊,好像只要去了中心化,整個地球就和平了,人類就超脫升華了。而另一種看法則來自“古典”的技術派,認為區塊鏈就是炒作,“去中心化”沒有任何實際應用價值,僅僅是用來投機的一種方式,完全嗤之以鼻。

在從事多年數據庫工作的巨杉數據庫CTO王濤看來,這兩種看法都是不負責任的。

在他看來,目前業界的程序員基本對區塊鏈的理解還停留在“小伙子在廣場對姑娘說我愛你,讓所有人記錄下來”的層面。這種說法作為講給大媽聽的故事不錯,但是從技術人員的角度來看,這實際上是一種非常不靠譜的理解,將區塊鏈中的一些精髓設計給掩蓋起來了。

那么,傳統IT從業者到底應該如何從本質來理解區塊鏈的技術原理呢?區塊鏈與數據庫到底是什么關系?區塊鏈在當前到底有什么實實在在的技術應用場景?

帶著這些問題,區塊鏈大本營特別采訪到巨杉數據庫CTO王濤,希望他能詳細解答我們的疑問。

區塊鏈大本營:在您看來,現在區塊鏈的很多介紹文章都給完全走偏了,那么問題來了,從傳統IT的角度到底應該如何區塊鏈的技術原理?

王濤: 現在網上一大堆講區塊鏈的文章,可是真正能把區塊鏈技術底層精髓的設計思路和重點講明白的沒幾篇。這對于我們搞技術的人來說,挺不能接受的。我做數據庫內核開發行業已經從業15年了,也算老兵,我想從數據庫的角度來說說區塊鏈的本質,以及其與現有數據庫存儲體系中核心的設計思想的區別所在吧。

先從宏觀看,區塊鏈和分布式數據庫的原理、機制這些幾乎是一致的。區塊鏈這一技術的原理其實并不非常復雜,而且與數據庫技術的很多原理是一脈相承的。

那么從最本質的功能來看,不管是數據庫還是區塊鏈,都是用來存數據的技術。因此,區塊鏈的概念可能引申出了很多商業方面的革新,但是拋開這些上層建筑,從底層地基來看,區塊鏈可以認為是一種特殊的數據庫技術。

對于傳統數據庫來說,經歷了網狀數據庫、層次型數據庫以后,從上世紀八十年代以來,關系型數據庫一直處于業界統治地位,在所有數據存儲體系里是食物鏈最上層的“霸王龍”。所有學計算機的同學們在大學里學到的就是關系型數據庫,在工作里用到的MySQL、Oracle也是關系型數據庫,因此可能會產生“數據庫就是SQL和表結構”這樣的誤解。

實際上,數據庫只是一種用來存儲和查詢數據的工具,僅此而已。SQL是一種大家用的比較多的手段,而當前除了SQL業界還有NoSQL、NewSQL等一大堆變形。因此,大家先把思路放寬,將“數據庫”的概念擴展到一切可以保存與獲取數據的機制。

那么來看區塊鏈技術,不管是比特幣還是以太坊,或者其他變體,其核心本質都是面向交易業務的數據存儲于讀取能力。

在之后的一系列文章里我會詳細介紹“去中心化”的設計原理和機制,但是現在大家把它看做是一個擁有很多分拷貝的潘多拉魔盒,只要往里寫了東西就可以很快速地在其他拷貝中顯現出來。從數據庫的角度來看,這就是所有數據庫從業人員幾十年來一直追求的異地多活機制。

因此,區塊鏈技術即異地多活數據庫技術,是各位程序員同學理解區塊鏈本質的核心思想。

區塊鏈大本營:區塊鏈技術和傳統數據庫在機制中的有哪些相同點和不同點呢?先說說相同點吧。

王濤: 如果大家了解數據庫內核結構,可以看到區塊鏈的核心架構是數據庫核心架構一個子集。

區塊鏈的“賬本”就相當于數據庫的“日志”,數據庫是將操作按照順序寫入日志,在區塊鏈里面叫做賬本。

區塊鏈技術的設計和機制,與傳統數據庫的內核理念極為相似。譬如,從其傳輸和存儲的數據結構上來看,區塊鏈的鏈式結構來源于傳統數據庫的事務日志。任何數據庫的DBA都知道,數據庫的事務日志本質上就是不可更改的鏈式結構,事務中的每一條操作記錄都會有一個反向指針指向該事務中的上一條記錄。因此,區塊鏈的鏈式結構本質上脫胎于數據庫事務日志,同時增加了區塊之間的反向哈希值作為指針,且引入了默克爾樹結構進行快速數據校驗。

因而,我們可以安全地進行認為:區塊鏈的鏈式結構在存儲體系中等價于數據庫的事務日志。本質上數據庫的任何操作同樣是不可篡改的,只不過當前大部分數據庫不會對外暴露事務日志的解析工具,僅保存每一條記錄的最終狀態而已。

此外,區塊鏈的共識部分也脫胎自數據庫的一致性管理機制。比如傳統數據庫的主從結構(例如IBM DB2的HADR、Oracle的DataGuard)就是在多個節點之間實時復制數據的一種方式。

當然,和區塊鏈比起來這種方式一方面是做不到傳說中的“去中心化”,另一方面只能有一個節點作為主節點負責讀寫,其他節點作為從節點只讀,而無法完全做到異地多主多活的拓撲結構。

而分布式數據庫(如NoSQL)使用了多副本自動選舉的機制,業界大家都在談論的Paxos、Raft就是典型的多副本一致性管理算法,與區塊鏈中PBFT等機制存在異曲同工之處。

所以區塊鏈更像是一類擁有特定架構并為特定目的而設計的分布式數據庫。

區塊鏈大本營:區塊鏈技術在和傳統數據庫兩者機制中的不同點又是什么呢?

王濤: 區塊鏈與傳統數據庫的本質相同,而所有的不同點都來自于“去中心化”,也就是“異地多活”這個前提。

就好像新型分布式數據庫與傳統數據庫相比,所有的設計變更都來自于“PC服務器內置盤替代外接盤陣”這個前提。區塊鏈技術中不論是UTXO、nonce、PoW、PoS、數字簽名等一系列聽起來很“高大上”的東西,其目的都是圍繞著解決“異地多活”這個困擾著數據庫行業專家20多年的硬骨頭來設計的。

我們先簡單從事務與一致性算法這兩個方面,來看看區塊鏈與數據庫技術的核心差異在哪里。

從事務功能來看,數據庫的事務機制就是為了保障通用場景下的一致性原子操作。而區塊鏈技術為了滿足異地多活的前提,將原子操作通過特殊的事務日志結構,拋棄了通用業務場景,而是百分百集中到支付與結算業務,從而實現了結算場景下的異地多活原子操作。

舉個例子,比特幣使用的UTXO結構在跨遠距離網段的多活架構中,是一種替代傳統事務交易日志結構的方式,將幾個操作合并在一條事務記錄里面作為原子操作發送,而不是每條記錄的更改都作為獨立的記錄,并通過反向指針串聯起來。同時,UTXO并不存儲每條記錄的最終結果,而是存儲變更過程,這與傳統數據庫中事務日志的存儲機制有著理念上的區別,之后我們會詳細討論為什么在區塊鏈模型中使用UTXO的價值所在與局限性,以及如果采用傳統日志方式所引發的局限性和可能的解決方案。

實際上,和傳統事務機制比起來UTXO的理念并不復雜,同時目前UTXO對于通用事務來說局限性很大,無法用于非支付類業務的場景,但是這種思路未來也許會成為多活數據庫中支持通用事務的一種基礎,值得所有數據庫領域的從業人員深入思考。

當然,當前的UTXO結構的執行效率優化也是很大的問題。像在比特幣當前的代碼實現中,CTxMemPool對象中存在大量的持有全局鎖函數。由于UTXO需要追蹤每一個coin的花費流程,在內存中形成一個巨大的樹狀模型,因此絕大部分需要跟蹤交易的操作都需要對內存池進行全局鎖定,導致執行效率相對低下。相比起傳統數據庫緩沖池的數據頁模型,比特幣的UTXO實現方式有待進行大量優化和提升。

而共識部分則對應著傳統的一致性算法,也就是解決“誰應該寫”的問題。

現在用的什么PoW、PoS、DPoS、PBFT之類的算法,其實就對應了數據庫的一致性算法,本質上就是決定誰來作為永久化日志存儲的基準。在多活架構中既然每個節點都能進行寫入操作,為了讓大家達成一致必須在某個時刻向一個節點看齊。這個時間跨度是像比特幣那樣每十分鐘,還是像以太坊那樣每十幾秒,還有用什么方式決定誰是這個基準節點,就是所謂共識算法的核心。

對于“誰應該寫”的衍生問題,就是“寫的東西是不是真實”。這個問題在傳統數據庫體系是默認排除的。

區塊鏈的共識算法另一個需要解決的問題就是拜占庭問題。如今,鏈在公網上,并不知道其他對等節點是不是靠譜的,這才是共識算法難以得到突破的關鍵。既要滿足功能層面的需求,還要從算法上保證不靠譜的個別節點不會影響整個網絡的一致性共識。

其他的數字簽名之類的都是小特性,基本搞IT的兄弟都很明白,在這里就不多說了。

區塊鏈大本營:作為數據庫和分布式技術的專家,您如何看待區塊鏈技術的發展?

王濤: 現在“古典”和“區塊鏈”的概念大家吵的很火熱,在技術領域也不例外。

經過一段時間的深入了解,我看到作為第一批區塊鏈技術的實現,傳統比特幣與以太坊在共識機制、存儲機制、智能合約機制、跨鏈通訊機制等領域并沒有非常嚴密的設計。

這些技術的不嚴密,就引發了一些在數據庫與存儲領域比較常見的問題,導致其數據規模無法無限增加,比如當前ETH幾百GB就產生了嚴重的性能瓶頸,幾乎不可能到達上百TB規模,吞吐量極為有限,這樣單位吞吐量基本上沒辦法適應通用分布式數據存儲或通用結算體系的要求。

從產品功能的角度看,當前的區塊鏈產品與數據庫相比存在極大的差距。尤其是對于在業界存在了幾十年的關系型數據庫,其主要核心功能包括增刪改查,而主要結構則包括SQL解析、日志、數據管理、以及索引管理幾大模塊。因此從功能上看,當前區塊鏈可以說是一個極簡的多活數據庫模型,功能支持僅僅是數據庫的一個微小子集。

現在的區塊鏈技術還處于0.1版本的時代,就好像80年代各個數據庫技術百家爭鳴的年代一樣,各自都在提出新的架構和觀點。

因此,當我們使用變化的眼光來看待區塊鏈的時候,很多當前的問題實際上并不是不可解決的。例如每秒鐘3筆交易的比特幣技術,是不是意味著UTXO模型不行呢?當然不是。

我們只有當正確理解每一個設計的核心思想以及其局限性,才能用動態發展的眼光看待新技術,了解掩藏在不同產品特性后面的深層次本質與原理。

所以我認為,區塊鏈技術的未來發展,主題是“融合”。就好像之前NoSQL與NewSQL之爭,最終也都演進到兩者融合成為Multi-Model Database一樣,在區塊鏈與傳統數據庫技術越來越多互相融合后,最終會形成一個更有效的數據管理體系。

區塊鏈大本營:分布式數據庫和區塊鏈技術的融合,到底能解決什么問題?

王濤: 分布式數據庫和區塊鏈技術的融合,我認為兩者結合點非常非常多。

區塊鏈彌補了原有數據庫機制的多活之間事務的難點,其創新在于支持多活架構。全世界無數傳統數據庫專家,從上世紀90年代就開始研究分布式多活數據庫,但是到現在也沒有任何成型的理論和實現,在最近二十年一直無法突破的領域。

在區塊鏈技術上,它拋開了強一致和通用事務能力,在對交易和結算領域使用特定的數據結構與算法實現了這種機制,實際上是一種非??鐣r代的思路,絕對值得所有數據庫行業的從業者借鑒和反思。

而分布式數據庫就將發揮其特性,包括數據的擴展性、高并發、高性能以及快速的標準化訪問還有更靈活的使用場景。

通過兩者技術結合,將會形成數據庫為基礎的去中心化管理機制。通過分布式數據庫,提供了通用的事務支持,高并發、高性能以及所有包括增刪改查、SQL解析、日志、數據管理、索引管理等主要功能。而對區塊鏈技術的融合,

將解決多活數據庫的“雙花問題”也就是一致性控制的問題,還能解決公網內的信任問題以及整個數據的更高安全性。

如果想用現實的場景來舉例,就不得不將區塊鏈和業務模式捆綁到一起。其實可以這樣簡單來看,凡是需要使用到異地多活機制的存儲,原則上都可以使用區塊鏈技術來完成。當然,這么說有點粗暴,里面還涉及到一大堆例如強一致性、吞吐量之類的需求,但是為了簡單起見大家可以先這么理解。

舉例來說,如果把淘寶看做是中心化設計的一個巔峰,全球最大的百貨商店,所有開網店的店主都要求著阿里爸爸給自己首頁推薦,那么去中心化的淘寶可以認為是,只要想要開網店的小姑娘,通過下載一個“區塊鏈淘寶”的系統,就可以免費自由地向這個本地數據庫寫入自己要開網店的信息,并把需要賣的東西掛到商店里。然后這個系統通過區塊鏈技術與網上其他所有店長的系統相連,這樣小姑娘就可以不需要花任何“租金”就能開網店啦。同時每一筆交易也“沒有中間商賺差價”,從而完全免除了“店大欺客”所帶來的危害。

區塊鏈大本營:說說你們正在做的事情,未來巨杉這邊對于區塊鏈技術這塊的方向規劃大概是怎么樣的?

王濤: 正如上文所說的模式,巨杉數據庫通過分布式拓展性、高性能高并發以及SQL支持等重要特性,目前已經成功的在一些區塊鏈的應用中得到使用。同時通過我們自身技術團隊在數據庫、分布式架構等等領域的豐富經驗,巨杉也在區塊鏈算法上進行了創新,并且將兩者進行了有機的結合,可以說正在逐漸實現我們所提到的兩種技術融合的過程。

此外,巨杉數據庫基于在企業級市場的豐富經驗,還將會通過技術融合,讓更多的用戶更好的應用區塊鏈技術。

我們巨杉接下來一段時間的產品線設計已經受到了區塊鏈技術的很多啟發,未來大家可能會看到數據庫與區塊鏈技術更加完美的結合。

區塊鏈大本營:如果傳統IT人想入門或者融合區塊鏈的技術理念,您有什么好的建議呢?

王濤: 搭建測試環境,看代碼,gdb跟蹤,真正沉下心死磕某一個區塊鏈底鏈,把里面的機制理解透徹。作為入門教材,大家可以看看比特幣的代碼。比如將bitcoind編譯完了搭建個測試網絡,從頭一步步跟蹤代碼流程,是深入理解PoW、UTXO等機制最有效的方式。

而且我認為,最好的了解辦法就是閱讀這幾個算法、機制相關的論文資料。因為這些才是設計者真實設計理念、原理的嚴謹記錄,所謂的“解讀”和“翻譯”很可能會忽略了一些部分或者曲解了一些最初的意思。

另外,從我本人的經驗來看,閱讀開源項目的開發者指南和代碼,是最好的理解產品設計思想的方式。

后記:

以上是巨杉數據庫CTO王濤,從數據庫角度解釋區塊鏈,對于區塊鏈技術的分享,如果你沒有聽夠,還想了解更多,希望王濤能更多講講區塊鏈的技術精髓和實戰,請在留言區發表你的期待,我們將根據你的期待,邀請王濤為你帶來更多精準的技術分享。

王濤:SequoiaDB巨杉數據庫的聯合創始人&CTO

王濤曾是北美IBM DB2 Lab核心研發成員,有著超過十年的數據庫核心架構設計,數據庫引擎研發和企業級數據庫應用的經驗。王濤同時對區塊鏈技術,分布式架構,分布式算法,區塊鏈以及去中心化業務應用有著深入的了解。

2012年公司成立以來,王濤先生一直主導著SequoiaDB產品的架構設計與開發,并在業界對未來數據庫、大數據、區塊鏈技術發展進行全力地推動。

王濤作為SequoiaDB巨杉數據庫的兩位創始人之一,目前擔任SequoiaDB的CTO與總架構師。在王濤先生的領導下,SequoiaDB的技術團隊從零開始打造的分布式數據庫,如今SequoiaDB目前已經擁有超過30家大型銀行用戶,以及近百家企業用戶,并已經在多個銀行核心系統投入生產,并于2017年入選國際技術分析機構Gartner的數據庫年度報告。

本文來自區塊鏈大本營,創業家系授權發布,略經編輯修改,版權歸作者所有,內容僅代表作者獨立觀點。[ 下載創業家APP,讀懂中國最賺錢的7000種生意 ]

什么是移動開發程序員

就是移動終端程序的開發人員,狹隘的理解可以是手機應用開發察激,比較全面的理解可以是手機、平板、PDS、POS機以及其他便攜式的移動終端,和沒物甚至包括一些硬件組件,喚液如果想做一個資深的移動程序開發人員不光要熟悉目前主流的移動終端操作系統程序開發,還要熟悉硬件及Linux知識

以上就是關于程序員pos機,程序員應關注其技術本質的知識,后面我們會繼續為大家整理關于程序員pos機的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.tonybus.com/news/13607.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。