您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

關(guān)系型數(shù)據(jù)庫到MongoDB的戰(zhàn)略遷移實例分析

大?。?/span>1.3 MB 人氣: 2017-09-30 需要積分:1

  CSDN:請先和大家介紹下自己和您目前所從事的工作,以及關(guān)注哪些技術(shù)領(lǐng)域?

  唐建法:我目前在MongoDB官方擔任的是負責MongoDB相關(guān)解決方案架構(gòu)師。關(guān)注的領(lǐng)域是新一代數(shù)據(jù)處理的相關(guān)技術(shù)以及更多的是如何與現(xiàn)代軟件架構(gòu)相結(jié)合提供完整的IT解決方案。

  CSDN:是什么樣的契機讓您接觸到MongoDB,并最終選擇它作為自己的研究方向?MongoDB吸引您的特性有哪些?

  唐建法:我是一個多年的開源軟件受惠者和貢獻者。第一次接觸純屬偶然,那是在2011年,彼時我還在舊金山和幾個朋友創(chuàng)業(yè)。有一天無意中走進了MongoDB主辦的一個技術(shù)大會,抱著試一試的心態(tài),我把代碼遷移到Mongo上來解決困擾我們許久的MySQL性能問題。性能問題確實解決了,但是真正打動我的卻是使用JSON格式來管理數(shù)據(jù)這一煥然一新的概念和非常直觀的持久化API。數(shù)據(jù)還可以這么玩!

  CSDN:能否以MongoDB為例,對比分析NoSQL與關(guān)系型數(shù)據(jù)庫,簡要談一談其各有什么優(yōu)缺點及適用場景?

  唐建法:這里有一張圖可以幫助大家從3萬尺高空來理解兩者的大致區(qū)別。

  關(guān)系型數(shù)據(jù)庫到MongoDB的戰(zhàn)略遷移實例分析

  圖左側(cè)是關(guān)系型數(shù)據(jù)庫的一些共性。Oracle、SQLServer、MySQL諸如此類的關(guān)系型數(shù)據(jù)庫的優(yōu)勢就是他們使用的SQL查詢語句功能非常強大,表達力很豐富。無論多復(fù)雜的問題,基本上都能夠用一個或幾個SQL語句完成。關(guān)系型數(shù)據(jù)庫的ACID事務(wù)性,雖然各個數(shù)據(jù)庫支持力度不同,但是總體來說都有不錯的能力和應(yīng)用程序服務(wù)器配合為程序員提供較好的事務(wù)模型,保證數(shù)據(jù)庫內(nèi)數(shù)據(jù)及規(guī)則的一致性。而以MongoDB領(lǐng)頭的NoSQL數(shù)據(jù)庫陣營中,則以動態(tài)數(shù)據(jù)模式和橫向擴展能力為主打利器,是針對于現(xiàn)代的數(shù)據(jù)問題提出的解決方案。動態(tài)或者可變模式是處理新一代多變多態(tài)數(shù)據(jù)的最重要能力,否則技術(shù)團隊將淪陷于無休止的關(guān)系型模式設(shè)計、迭代、數(shù)據(jù)遷移的繁瑣工作中。橫向擴展能力則是百度云、京東、360等大型互聯(lián)網(wǎng)公司從MySQL集群遷移到MongoDB的主要誘因:MongoDB的分片技術(shù),借助于數(shù)據(jù)相對獨立,容易分布的JSON文檔模型,在處理海量數(shù)據(jù)能力上具有更可靠的的水平擴展能力和易管理性。

  從技術(shù)應(yīng)用場景來說,我認為MongoDB特別適合數(shù)據(jù)量較大(億級以上)、數(shù)據(jù)結(jié)構(gòu)復(fù)雜多變,以及絕大部分的現(xiàn)代Mobile和Web應(yīng)用。對使用Microservices架構(gòu)的同學,更可以大膽考慮MongoD,B因為在微服務(wù)架構(gòu)下對強事務(wù)的需求相對會少很多。

  CSDN:請您結(jié)合MongoDB常見的企業(yè)應(yīng)用設(shè)計模式或使用場景,簡要介紹一下實際案例下DaaS這一應(yīng)用模式。

  唐建法:MongoDB常見的企業(yè)級應(yīng)用模式有幾種,如DaaS、Single View、ODS、Mainframe Offloading等。其實這幾種都是CQRS設(shè)計模式中的某種體現(xiàn)。在這里,DaaS(Data as a Service) 就像SaaS模式一樣,把數(shù)據(jù)作為一種功能來提供給客戶端,也即應(yīng)用程序。這些數(shù)據(jù)通過API的方式讓應(yīng)用程序可以完成所有數(shù)據(jù)的需求,無論是簡單CRUD(通過REST)還是傳統(tǒng)的報表分析(SQL或Big Data API),抑或是基于事件的Messaging。
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?