真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nosql面試,nosql數(shù)據(jù)庫面試題

美國(guó)大數(shù)據(jù)工程師面試攻略

項(xiàng)目數(shù)據(jù)分析師分享:美國(guó)大數(shù)據(jù)工程師面試攻略

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、謝家集ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的謝家集網(wǎng)站制作公司

方法/步驟

先做一個(gè)自我介紹,本科南開后,加入了一個(gè)創(chuàng)業(yè)公司kuxun,做實(shí)時(shí)信息檢索,后來進(jìn)入百度基礎(chǔ)架構(gòu)組,搭建了Baidu App Engine的早期版本,隨后去Duke大學(xué)留學(xué),在攻讀碩士期間,做跟Hadoop大數(shù)據(jù)相關(guān)的研究項(xiàng)目Starfish,之后在Amazon EC2部門實(shí)習(xí),了解它們的內(nèi)部架構(gòu),畢業(yè)后加入Linkedin,做廣告組的架構(gòu),涉及Hadoop調(diào)優(yōu),Data Pipeline, Offline/Online, 實(shí)時(shí)系統(tǒng)。最新是在Coursera從事數(shù)據(jù)工程師工作。在多年工作中,除了對(duì)技術(shù)的不懈追求,也積累了大量的面試經(jīng)驗(yàn),從國(guó)內(nèi)的一線互聯(lián)網(wǎng)百度,阿里巴巴,奇虎,人人,到美國(guó)一線公司Facebook,Google,Linkedin,Twitter,Amazon,到熱門Startup,Uber,Pinterest,Airbnb,Box,Dropbox,Snapchat,Houzz,拿到10+ offer,并且在Linkedin期間也面試過100+候選人,參與面試題制定,樂于分享并幫助很多人成功求職,實(shí)現(xiàn)目標(biāo)。

我們看一下這張硅谷地圖,它坐落于美國(guó)加州,從圣何塞到舊金山的狹長(zhǎng)地帶,中間是San francisco bay,簡(jiǎn)稱灣區(qū)。它的由來是這邊有計(jì)算機(jī)核心處理器中離不開的硅,30年來,硅谷就發(fā)展成為無數(shù)技術(shù)性創(chuàng)業(yè)公司的搖籃。在20多年前,就有很多硬件公司的輝煌Intel,Oracle,Apple,Cisco成功上市,10年前,互聯(lián)網(wǎng)的興起,造就了Yahoo,Google,Ebay的神奇,而如今Tesla,F(xiàn)acebook,Twitter,Linkedin正扶搖直上,成為美股高科技股的領(lǐng)頭羊。這些公司的市值從幾十billion到幾百billion,PE從負(fù)數(shù)到上千。瘋狂的估值背后也改變了世界。

如果說硅谷成功是有原因的,我覺得有兩點(diǎn)。地理位置是得天獨(dú)厚吸引大量人才,這里有Stanford和加州州立高校提供智力庫的支持,在硅谷可以看到來自全世界的最聰明的人,中國(guó)人,印度人,猶太人構(gòu)成這些Engineer的主力。雖然國(guó)內(nèi)做技術(shù)自嘲為碼農(nóng),但在硅谷成為一個(gè)優(yōu)秀工程師還是收獲頗豐。另一方面創(chuàng)業(yè)是一個(gè)永恒的話題,在Stanford有個(gè)說法空氣中都飄揚(yáng)中創(chuàng)業(yè)的味道,一些早期員工通過上市套現(xiàn)又積累經(jīng)驗(yàn)成了天使投資,Y Combinator,各種技術(shù)forum,meetup,創(chuàng)業(yè)導(dǎo)師,都很活躍。資本的力量功不可沒,早年VC通過投資,收購,上市放大形成一個(gè)雪球效應(yīng)。大家總喜歡問什么是next big thing,哪一個(gè)是下一個(gè)facebook,下一個(gè)musk,根據(jù)統(tǒng)計(jì)10年能成就一個(gè)千億以上的公司,目前這個(gè)進(jìn)程正在縮短。

我就拿Linkedin作為例子,介紹高科技公司(FLG)是什么樣子。它是成立2003年的職業(yè)社交網(wǎng)站。在10年的發(fā)展中,也不是一下子爆發(fā)的,目前有3億的全球用戶,雖然跟Facebook,Google 10億+用戶沒法比,但是它有很好的護(hù)城河,用戶定位高端精準(zhǔn),單位價(jià)值高。這張照片中左邊這位是創(chuàng)始人Reid Hoffman,是Paypal黑幫成員,在硅谷也是呼風(fēng)喚雨的大佬,目前是董事和投資人。中間這位是CEO Jeff,2013年被Glassdoor評(píng)為最佳CEO,作為職業(yè)經(jīng)理人,成功幫助linkedin高速成長(zhǎng),他最喜歡提到transformation,希望我們每個(gè)員工能挑戰(zhàn)自我,在各自崗位上進(jìn)化。Linkedin提供了員工很好的福利,有號(hào)稱灣區(qū)最佳的免費(fèi)食堂,每個(gè)月一次的in day,hack day, 幫助員工內(nèi)部創(chuàng)業(yè)的incumbator計(jì)劃。它特點(diǎn)是數(shù)據(jù)驅(qū)動(dòng)的開發(fā)產(chǎn)品,比如 People you may know, Job you may be interested, 我做過Sponroed Ads 都是需要很強(qiáng)數(shù)據(jù)背景和data scientist的支持。它的Biz model也很獨(dú)特,有3個(gè)line,面向公司的招聘服務(wù),面向廣告商的市場(chǎng)服務(wù),面向個(gè)人的訂閱服務(wù),還有最新Sales Solution,因?yàn)檫@么多可能性,成為華爾街的寵兒。

說硅谷,除了那些已經(jīng)成功的大公司,不得不說現(xiàn)在最新的創(chuàng)業(yè)動(dòng)向,這些代表了未來下一個(gè)FLG。我總結(jié)了一些領(lǐng)域和代表公司:云計(jì)算(box, dropbox),大數(shù)據(jù)(cloudera),消費(fèi)互聯(lián)網(wǎng)(pinterest),健康(fitbit),通訊(snapchat),支付(square),生活(uber)。 這里是華爾街網(wǎng)站更新的最新融資規(guī)模,比如Uber就達(dá)到18Billion的估值,我當(dāng)時(shí)拿到offer沒去,還是覺得很瘋狂,如果細(xì)看這張表,大家可以看到硅谷(藍(lán)色)尤其是舊金山它們的融資規(guī)模遠(yuǎn)遠(yuǎn)大于其他地區(qū),還是地理決定論。而在國(guó)內(nèi)的兩家xiaomi,jingdong都是在北京,而最近大家看到一些泡沫論,說什么阿里巴巴上市是否美股到頂,經(jīng)緯VC創(chuàng)始人也提醒我們泡沫的風(fēng)險(xiǎn),我無法判斷。如果能參與到下一波浪潮里面去是很過癮的。我推薦大家去看看 浪潮之巔,奇點(diǎn)臨近,我還是很期待未來20年的技術(shù)革命。

我個(gè)人熱愛大數(shù)據(jù),在硅谷這也是大家津津樂道的,有個(gè)笑話,big data is like teenage talking about sex, nobody know how to do it. 其實(shí)大家還是興趣驅(qū)動(dòng)就好,不要那么功利,大數(shù)據(jù)技術(shù)涉及太多,平常工作中也是慢慢積累,有無數(shù)的坑和技術(shù)細(xì)節(jié)需要克服。并不是說那個(gè)技術(shù)最熱就要用哪個(gè),如果你用不好,你的壓力很大的,舉個(gè)例子,你用某個(gè)開源數(shù)據(jù)庫,發(fā)現(xiàn)它偶爾有數(shù)據(jù)丟失怎么辦,如果這是線上服務(wù),你不斷收到報(bào)警,這時(shí)候你當(dāng)時(shí)選用它的優(yōu)點(diǎn) scalable,容錯(cuò)性都沒意義了。接著說大數(shù)據(jù),這里面Hadoop作為行業(yè)標(biāo)準(zhǔn),我面過的除了Google,微軟不用,幾乎所有的公司都在用,建議大家利用這個(gè)機(jī)會(huì)。這里面有三巨頭,cloudera是老牌Hadoop咨詢公司,Hadoop的創(chuàng)始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 編碼方式高效而著名,它們都是融了巨資,模式也很像,先推出社區(qū)免費(fèi)版,但有個(gè)商業(yè)版提供更好的管理。 而今年出現(xiàn)一匹黑馬,Spark,簡(jiǎn)單說就是內(nèi)存級(jí)別的計(jì)算,比Hadoop框架里能節(jié)約IO,利用緩存,能適應(yīng)批處理,迭代,流式計(jì)算。

這里看一下它的生態(tài)系統(tǒng),如何學(xué)Hadoop是個(gè)循序漸進(jìn)過程,先要理解學(xué)習(xí)它的core系統(tǒng),HDFS, MapReduce, Common,在外圍有無數(shù)的系統(tǒng)工具方便開發(fā),我個(gè)人用過的是 Avro作為數(shù)據(jù)格式,Zookeeper作為選主的高可靠性的組件,Solr作為搜索接口,Pig搭建工作流,Hive 數(shù)據(jù)倉庫查詢,Oozie管理工作流,HBase 作為KV 分布式存儲(chǔ),mahout數(shù)據(jù)挖掘的庫,Cassandra nosql 數(shù)據(jù)庫。我建議初學(xué)的考慮Chinahadoop的課程。

而Hadoop本身也是個(gè)進(jìn)化過程,幾年前0.19版本,到0.20, 0.23分流成Yarn架構(gòu)最后進(jìn)化成Hadoop2.0, Hadoop1.0 和 2.0 它們的接口和組件是完全不同的,但總體上Hadoop 2.0 是趨勢(shì),因?yàn)樗衁arn這樣分離的資源管理平臺(tái),可以以插件的方式開發(fā)上面的Application,解放了生產(chǎn)力,而像Spark,Storm這些新型處理器也是支持Hadoop 2.0的。這里是Hortonworks它們提出來的社區(qū)版本架構(gòu),可以說標(biāo)準(zhǔn)的制定者,一流的公司制定標(biāo)準(zhǔn),其他的公司一般用只能用它們提供的穩(wěn)定版,沒有多少話語權(quán)。但從事大數(shù)據(jù),并不見得是要去這些制定標(biāo)準(zhǔn)的公司,大量的應(yīng)用也是非常考驗(yàn)架構(gòu)的靈活性。并且能看到實(shí)際的產(chǎn)品,很有成就感。

說到今年火的,還是要看Spark。從去年至今,已經(jīng)開了2屆Spark大會(huì),上千人的規(guī)模,無數(shù)人對(duì)比Hadoop 100倍的性能提升而興奮。這里說它的背景是誕生于Berkeley的Amplab,它們有個(gè)很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已經(jīng)成為Apache的頂級(jí)項(xiàng)目。去年這個(gè)實(shí)驗(yàn)室的教授跟學(xué)生出去成立Databricks公司,拉到兩輪上千萬的風(fēng)投,有人成Spark是Hadoop的終結(jié)者嗎?我看今年Spark大會(huì)上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放棄impala的一線支持而轉(zhuǎn)變成Spark。如果這么發(fā)展下去,星星之火可以燎原啊。它里面用到Scala是一種函數(shù)式語言。里面的組件也很多,有Shark支持SQL類似Hive,有Spark Streaming,MLlib,Graphx,SparkR,BlinkDB。它的核心數(shù)據(jù)結(jié)構(gòu)是RDD,可以跑在各種分布式系統(tǒng)上??傮w上是個(gè)包容性+侵略性的系統(tǒng)。我個(gè)人也很看好它們的發(fā)展。

PHP面試有什么技巧么?

PHP程序員在面試的時(shí)候一般應(yīng)該抓住以下幾個(gè)點(diǎn)。

一、應(yīng)該介紹自己掌握的開發(fā)一種,主要介紹PHP語言的獨(dú)特語法以及如何使用,比如PHP語言會(huì)比CGI更快的執(zhí)行動(dòng)態(tài)頁面。

二、必須熟悉Oracle、Mysql等數(shù)據(jù)庫,并能簡(jiǎn)單的介紹自己掌握的程度。由于php做出的動(dòng)態(tài)頁面比用其他語言做出來的頁面在執(zhí)行效率以及CGI方面高得多,所以你還需要在面試中說出自己的文檔撰寫能力很強(qiáng)。

三、PHP程序員應(yīng)該具備獨(dú)立分析和解決問題的能力,可以在自我介紹中講講自己曾經(jīng)遇到過的問題是如何解決的。讓面試官看到你的能力,這將會(huì)直接影響到你自我介紹的成功與否。

四、一個(gè)PHP程序員必須有良好的職業(yè)道德和工作態(tài)度,所以在面試中應(yīng)該盡量講自己在做項(xiàng)目時(shí)的認(rèn)真態(tài)度以及今后的工作規(guī)劃,表現(xiàn)出自己的進(jìn)取心。

五、還有關(guān)于溝通能力和理解能力的體現(xiàn),這個(gè)在與HR的交談中就可以表現(xiàn)出來,所以需要做的工作就是從容的有條理的把自我介紹說完,回答每一個(gè)問題時(shí)都應(yīng)該簡(jiǎn)潔明了,關(guān)于自我介紹可以提前做個(gè)草稿,背一下。

六、團(tuán)隊(duì)合作能力也是企業(yè)非常看重的,在培訓(xùn)中老師一般都會(huì)帶領(lǐng)大家做項(xiàng)目,大的項(xiàng)目一般會(huì)分小組,每個(gè)人都有相對(duì)應(yīng)的任務(wù),這就模擬了公司中的團(tuán)隊(duì)合作,在自我介紹過程中要把做項(xiàng)目的具體流程以及相互協(xié)作的過程說出來,讓HR看到自己具備團(tuán)隊(duì)合作的能力。

七、最后就是執(zhí)行力,每當(dāng)任務(wù)分配下來的時(shí)候該如何執(zhí)行,還有自己講過職業(yè)規(guī)劃后該如何執(zhí)行,還有在學(xué)習(xí)的過程中是如何人字形的,遇到困難又是如何執(zhí)行的,這些都可以體現(xiàn)出php程序員的執(zhí)行力,回答的時(shí)候抓住發(fā)現(xiàn)及時(shí)尋找原因,快速展開行動(dòng)的這個(gè)主線即可。

八、最重要的是你的能力、技術(shù)以及自己的項(xiàng)目

Python后端開發(fā)工程師面試

第一步:自我介紹

第二步:公司介紹

第三步:技術(shù)基礎(chǔ)

第四步:項(xiàng)目介紹

第五步:待遇

自我介紹,簡(jiǎn)單直接,姓名,籍貫,大學(xué),工作經(jīng)歷

示例如下:

你好,面試官,我叫XX,來自XX,本科畢業(yè)于XX,主修XX專業(yè),有X年工作經(jīng)驗(yàn),在上一家公司擔(dān)任python后端開發(fā)工程師的職位。

公司名稱是XX、公司主要做外包軟件、都有軟件定制/商城定制、前端2個(gè)后端2個(gè)運(yùn)維1個(gè)

主要是根據(jù)你簡(jiǎn)歷中填寫的技術(shù),根據(jù)我的簡(jiǎn)歷中所寫的,總結(jié)幾點(diǎn)如下:

字典的查詢流程:

不可變對(duì)象可哈希, str , fronzenset , tuple ,自己實(shí)現(xiàn)的類,要重載 __hash__ 方法。

dict內(nèi)存花銷大,但是查詢速度快,自定義的對(duì)象或者python內(nèi)部的對(duì)象都是dict包裝的。

dict的存儲(chǔ)順序和元素添加順序有關(guān),添加順序可能改變已有數(shù)據(jù)的順序。

集合:是一個(gè)可以存放任意數(shù)據(jù)類型的可變無序的映射集合。

set和dict類似,set的核心也是散列表,但是表元只包含值的引用。 由于散列表的特性,set的元素不能重復(fù),且無序。 內(nèi)部由哈希實(shí)現(xiàn),查找的時(shí)間復(fù)雜度為O(1),所以性能很高,實(shí)現(xiàn)了魔法函數(shù) __contains__ 可以使用in來查找。 set的去重是通過兩個(gè)函數(shù) __hash__ 和 __eq__ 實(shí)現(xiàn)的。

(1)淺拷貝

定義:淺拷貝只是對(duì)另外一個(gè)變量的內(nèi)存地址的拷貝,這兩個(gè)變量指向同一個(gè)內(nèi)存地址的變量值。

淺拷貝的特點(diǎn):

(2)深拷貝:

定義:一個(gè)變量對(duì)另外一個(gè)變量的值拷貝。

深拷貝的特點(diǎn):

Python GC主要使用引用計(jì)數(shù)(reference counting)來跟蹤和回收垃圾。在引用計(jì)數(shù)的基礎(chǔ)上,通過“標(biāo)記-清除”(mark and sweep)解決容器對(duì)象可能產(chǎn)生的循環(huán)引用問題,通過“分代回收”(generation collectio n)以空間換時(shí)間的方法提高垃圾回收效率。

GIL全稱 Global Interpreter Lock ,中文解釋為全局解釋器鎖。它并不是Python的特性,而是在實(shí)現(xiàn)python的主流Cpython解釋器時(shí)所引入的一個(gè)概念,GIL本質(zhì)上就是一把互斥鎖,將并發(fā)運(yùn)行變成串行,以此來控制同一時(shí)間內(nèi)共享數(shù)據(jù)只能被一個(gè)任務(wù)所修改,從而保證數(shù)據(jù)的安全性。

GIL保護(hù)的是解釋器級(jí)別的數(shù)據(jù),但是用戶自己的數(shù)據(jù)需要自己加鎖處理。

既然有了GIL的存在,一個(gè)進(jìn)程中同一時(shí)刻只有一個(gè)線程能夠被執(zhí)行,無法利用cpu的多核機(jī)制,導(dǎo)致多線程用于I/O密集型,多進(jìn)程用于計(jì)算密集型,如金融分析等。

死鎖:兩個(gè)或兩個(gè)以上的進(jìn)程或者線程在執(zhí)行過程中,因?yàn)闋?zhēng)奪資源而造成的互相等待現(xiàn)象,若無外力的作用,都將一直處于阻塞狀態(tài),這些互相等待的進(jìn)程或者線程就被稱為死鎖。

解決方法,使用遞歸鎖(RLock)

這個(gè)RLock內(nèi)部有一個(gè)Lock和一個(gè)counter變量,counter記錄著acquire的次數(shù),從而使得資源可以被多次require。直到一個(gè)線程所有的acquire都被release,其他的線程才能獲得資源。上面的例子如果使用RLock代替Lock,則不會(huì)發(fā)生死鎖

可以直接認(rèn)為是linux,畢竟搞后端的多數(shù)是和linux打交道。

那么如何避免粘包問題呢? 歸根結(jié)底就是一句話, 明確兩個(gè)包之間的邊界.

UDP不存在粘包問題,是由于UDP發(fā)送的時(shí)候,沒有經(jīng)過Negal算法優(yōu)化,不會(huì)將多個(gè)小包合并一次發(fā)送出去。另外,在UDP協(xié)議的接收端,采用了鏈?zhǔn)浇Y(jié)構(gòu)來記錄每一個(gè)到達(dá)的UDP包,這樣接收端應(yīng)用程序一次recv只能從socket接收緩沖區(qū)中讀出一個(gè)數(shù)據(jù)包。也就是說,發(fā)送端send了幾次,接收端必須recv幾次(無論recv時(shí)指定了多大的緩沖區(qū))。

存儲(chǔ)可能包含rdbms,nosql以及緩存等,我以mysql,redis舉例**

為什么要使用NoSQL?NOSQL的優(yōu)勢(shì)

這次的NoSQL專欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運(yùn)用到自己的項(xiàng)目中合適的場(chǎng)景中,還會(huì)適當(dāng)?shù)胤治鲆恍┏晒Π咐M谐晒κ褂肗oSQL經(jīng)驗(yàn)的朋友給我提供一些線索和信息。

NoSQL概念隨著web2.0的快速發(fā)展,非關(guān)系型、分布式數(shù)據(jù)存儲(chǔ)得到了快速的發(fā)展,它們不保證關(guān)系數(shù)據(jù)的ACID特性。NoSQL概念在2009年被提了出來。NoSQL最常見的解釋是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一詞最早于1998年被用于一個(gè)輕量級(jí)的關(guān)系數(shù)據(jù)庫的名字。)

NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲(chǔ),當(dāng)然還有其他的文檔型的、列存儲(chǔ)、圖型數(shù)據(jù)庫、xml數(shù)據(jù)庫等。在NoSQL概念提出之前,這些數(shù)據(jù)庫就被用于各種系統(tǒng)當(dāng)中,但是卻很少用于web互聯(lián)網(wǎng)應(yīng)用。比如cdb、qdbm、bdb數(shù)據(jù)庫。

傳統(tǒng)關(guān)系數(shù)據(jù)庫的瓶頸

傳統(tǒng)的關(guān)系數(shù)據(jù)庫具有不錯(cuò)的性能,高穩(wěn)定型,久經(jīng)歷史考驗(yàn),而且使用簡(jiǎn)單,功能強(qiáng)大,同時(shí)也積累了大量的成功案例。在互聯(lián)網(wǎng)領(lǐng)域,MySQL成為了絕對(duì)靠前的王者,毫不夸張的說,MySQL為互聯(lián)網(wǎng)的發(fā)展做出了卓越的貢獻(xiàn)。

在90年代,一個(gè)網(wǎng)站的訪問量一般都不大,用單個(gè)數(shù)據(jù)庫完全可以輕松應(yīng)付。在那個(gè)時(shí)候,更多的都是靜態(tài)網(wǎng)頁,動(dòng)態(tài)交互類型的網(wǎng)站不多。

到了最近10年,網(wǎng)站開始快速發(fā)展?;鸨恼搲?、博客、sns、微博逐漸引領(lǐng)web領(lǐng)域的潮流。在初期,論壇的流量其實(shí)也不大,如果你接觸網(wǎng)絡(luò)比較早,你可能還記得那個(gè)時(shí)候還有文本型存儲(chǔ)的論壇程序,可以想象一般的論壇的流量有多大。

Memcached+MySQL

后來,隨著訪問量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫上都開始出現(xiàn)了性能問題,web程序不再僅僅專注在功能上,同時(shí)也在追求性能。程序員們開始大量的使用緩存技術(shù)來緩解數(shù)據(jù)庫的壓力,優(yōu)化數(shù)據(jù)庫的結(jié)構(gòu)和索引。開始比較流行的是通過文件緩存來緩解數(shù)據(jù)庫壓力,但是當(dāng)訪問量繼續(xù)增大的時(shí)候,多臺(tái)web機(jī)器通過文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個(gè)時(shí)候,Memcached就自然的成為一個(gè)非常時(shí)尚的技術(shù)產(chǎn)品。

Memcached作為一個(gè)獨(dú)立的分布式的緩存服務(wù)器,為多個(gè)web服務(wù)器提供了一個(gè)共享的高性能緩存服務(wù),在Memcached服務(wù)器上,又發(fā)展了根據(jù)hash算法來進(jìn)行多臺(tái)Memcached緩存服務(wù)的擴(kuò)展,然后又出現(xiàn)了一致性hash來解決增加或減少緩存服務(wù)器導(dǎo)致重新hash帶來的大量緩存失效的弊端。當(dāng)時(shí),如果你去面試,你說你有Memcached經(jīng)驗(yàn),肯定會(huì)加分的。

Mysql主從讀寫分離

由于數(shù)據(jù)庫的寫入壓力增加,Memcached只能緩解數(shù)據(jù)庫的讀取壓力。讀寫集中在一個(gè)數(shù)據(jù)庫上讓數(shù)據(jù)庫不堪重負(fù),大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達(dá)到讀寫分離,以提高讀寫性能和讀庫的可擴(kuò)展性。Mysql的master-slave模式成為這個(gè)時(shí)候的網(wǎng)站標(biāo)配了。

分表分庫隨著web2.0的繼續(xù)高速發(fā)展,在Memcached的高速緩存,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上,這時(shí)MySQL主庫的寫壓力開始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會(huì)出現(xiàn)嚴(yán)重的鎖問題,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM。同時(shí),開始流行使用分表分庫來緩解寫壓力和數(shù)據(jù)增長(zhǎng)的擴(kuò)展問題。這個(gè)時(shí)候,分表分庫成了一個(gè)熱門技術(shù),是面試的熱門問題也是業(yè)界討論的熱門技術(shù)問題。也就在這個(gè)時(shí)候,MySQL推出了還不太穩(wěn)定的表分區(qū),這也給技術(shù)實(shí)力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但是由于在互聯(lián)網(wǎng)幾乎沒有成功案例,性能也不能滿足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。

MySQL的擴(kuò)展性瓶頸

在互聯(lián)網(wǎng),大部分的MySQL都應(yīng)該是IO密集型的,事實(shí)上,如果你的MySQL是個(gè)CPU密集型的話,那么很可能你的MySQL設(shè)計(jì)得有性能問題,需要優(yōu)化了。大數(shù)據(jù)量高并發(fā)環(huán)境下的MySQL應(yīng)用開發(fā)越來越復(fù)雜,也越來越具有技術(shù)挑戰(zhàn)性。分表分庫的規(guī)則把握都是需要經(jīng)驗(yàn)的。雖然有像淘寶這樣技術(shù)實(shí)力強(qiáng)大的公司開發(fā)了透明的中間件層來屏蔽開發(fā)者的復(fù)雜性,但是避免不了整個(gè)架構(gòu)的復(fù)雜性。分庫分表的子庫到一定階段又面臨擴(kuò)展問題。還有就是需求的變更,可能又需要一種新的分庫方式。

MySQL數(shù)據(jù)庫也經(jīng)常存儲(chǔ)一些大文本字段,導(dǎo)致數(shù)據(jù)庫表非常的大,在做數(shù)據(jù)庫恢復(fù)的時(shí)候就導(dǎo)致非常的慢,不容易快速恢復(fù)數(shù)據(jù)庫。比如1000萬4KB大小的文本就接近40GB的大小,如果能把這些數(shù)據(jù)從MySQL省去,MySQL將變得非常的小。

關(guān)系數(shù)據(jù)庫很強(qiáng)大,但是它并不能很好的應(yīng)付所有的應(yīng)用場(chǎng)景。MySQL的擴(kuò)展性差(需要復(fù)雜的技術(shù)來實(shí)現(xiàn)),大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難,正是當(dāng)前使用MySQL的開發(fā)人員面臨的問題。

NOSQL的優(yōu)勢(shì)易擴(kuò)展NoSQL數(shù)據(jù)庫種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴(kuò)展。也無形之間,在架構(gòu)的層面上帶來了可擴(kuò)展的能力。

大數(shù)據(jù)量,高性能

NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡(jiǎn)單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對(duì)web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來說就要性能高很多了。

靈活的數(shù)據(jù)模型

NoSQL無需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡(jiǎn)直就是一個(gè)噩夢(mèng)。這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)代尤其明顯。

高可用NoSQL在不太影響性能的情況,就可以方便的實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過復(fù)制模型也能實(shí)現(xiàn)高可用。

總結(jié)NoSQL數(shù)據(jù)庫的出現(xiàn),彌補(bǔ)了關(guān)系數(shù)據(jù)(比如MySQL)在某些方面的不足,在某些方面能極大的節(jié)省開發(fā)成本和維護(hù)成本。

MySQL和NoSQL都有各自的特點(diǎn)和使用的應(yīng)用場(chǎng)景,兩者的緊密結(jié)合將會(huì)給web2.0的數(shù)據(jù)庫發(fā)展帶來新的思路。

java面試中redis,mongodb類的,會(huì)問哪些問題,怎么回答

1、可能會(huì)問nosql和關(guān)系型數(shù)據(jù)庫的區(qū)別:

優(yōu)點(diǎn):

1)成本:nosql數(shù)據(jù)庫簡(jiǎn)單易部署,基本都是開源軟件,不需要像使用Oracle那樣花費(fèi)大量成本購買使用,相比關(guān)系型數(shù)據(jù)庫價(jià)格便宜

2)查詢速度:nosql數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)于緩存之中,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在硬盤中,自然查詢速度遠(yuǎn)不及nosql數(shù)據(jù)庫

3)存儲(chǔ)數(shù)據(jù)的格式:nosql的存儲(chǔ)格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲(chǔ)基礎(chǔ)類型以及對(duì)象或者是集合等各種格式,而數(shù)據(jù)庫則只支持基礎(chǔ)類型

4)擴(kuò)展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機(jī)制的限制導(dǎo)致擴(kuò)展很艱難

缺點(diǎn):

1)維護(hù)的工具和資料有限,因?yàn)閚osql是屬于新的技術(shù),不能和關(guān)系型數(shù)據(jù)庫10幾年的技術(shù)同日而語。

2)不提供對(duì)sql的支持,如果不支持sql這樣的工業(yè)標(biāo)準(zhǔn),將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本

3)不提供關(guān)系型數(shù)據(jù)庫對(duì)事物的處理

2、介紹下redis和mongodb:

自行g(shù)oogle。

3、應(yīng)用場(chǎng)景:

redis:

a.主要是做熱點(diǎn)數(shù)據(jù)緩存。

b.數(shù)據(jù)過期處理。

c.消息隊(duì)列等功能。

d.計(jì)數(shù),例如投票等。

mongodb:

mongodb的主要目標(biāo)是在鍵/值存儲(chǔ)方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢(shì)于一身。mongo適用于以下場(chǎng)景:

a.網(wǎng)站數(shù)據(jù):mongo非常適合實(shí)時(shí)的插入,更新與查詢,并具備網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需的復(fù)制及高度伸縮性。

b.緩存:由于性能很高,mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由mongo搭建的持久化緩存可以避免下層的數(shù)據(jù)源過載。

c.大尺寸、低價(jià)值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲(chǔ)一些數(shù)據(jù)時(shí)可能會(huì)比較貴,在此之前,很多程序員往往會(huì)選擇傳統(tǒng)的文件進(jìn)行存儲(chǔ)。

d.高伸縮性的場(chǎng)景:mongo非常適合由數(shù)十或者數(shù)百臺(tái)服務(wù)器組成的數(shù)據(jù)庫。

e.用于對(duì)象及JSON數(shù)據(jù)的存儲(chǔ):mongo的BSON數(shù)據(jù)格式非常適合文檔格式化的存儲(chǔ)及查詢。

4、支持的數(shù)據(jù)類型:

內(nèi)容比較多,自行將網(wǎng)上的信息整理一下。


網(wǎng)頁題目:nosql面試,nosql數(shù)據(jù)庫面試題
路徑分享:http://weahome.cn/article/hooocc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部