費(fèi)用管理公司Expensify第一次設(shè)計(jì)數(shù)據(jù)庫結(jié)構(gòu),是為了建立自己的公司信用卡系統(tǒng)。與金融機(jī)構(gòu)合作有著嚴(yán)格的要求:響應(yīng)時(shí)間在毫秒內(nèi)、多臺(tái)服務(wù)器實(shí)時(shí)復(fù)制、每一個(gè)交易都必須記錄,并進(jìn)行身份驗(yàn)證等。當(dāng)時(shí),這些要求對于一個(gè)想要建立一個(gè)高層次、企業(yè)級架構(gòu)的創(chuàng)業(yè)公司來說無疑是矯枉過正的。當(dāng)公司把精力耗費(fèi)在昂貴的報(bào)告上時(shí),強(qiáng)大的技術(shù)處理也是必不可少的。創(chuàng)業(yè)公司往往不知道,他們的早期決策是多么得有價(jià)值。Expensify的創(chuàng)始人兼CEO David Barrett(大衛(wèi)·巴雷特)也是在后來才意識(shí)到早期限制Expensify的數(shù)據(jù)庫架構(gòu)關(guān)系著企業(yè)的許多關(guān)鍵性競爭優(yōu)勢。
在超過八年的時(shí)間里,巴雷特見證了數(shù)據(jù)庫設(shè)計(jì)早期的大量投資所帶來的優(yōu)勢。這種優(yōu)勢不僅體現(xiàn)在產(chǎn)品的功能,也創(chuàng)新了一個(gè)激進(jìn)的商業(yè)模式,以此來贏得不同于競爭對手的客戶青睞。客戶量在2015增長了超過120%,超過同行業(yè)競爭對手近70%。費(fèi)用管理公司現(xiàn)在服務(wù)著超過20000家公司。巴雷特認(rèn)為,公司的成功,很大一部分應(yīng)該歸功于技術(shù)決策,特別是得以依靠非常強(qiáng)大的數(shù)據(jù)庫體系。
First Round Review對巴雷特進(jìn)行了獨(dú)家專訪,談到了數(shù)據(jù)庫系統(tǒng)和一個(gè)創(chuàng)業(yè)公司是怎樣因此陷入危機(jī)的。并且就一些應(yīng)該要避免的錯(cuò)誤進(jìn)行了解釋性說明。他分享了創(chuàng)業(yè)公司技術(shù)和商業(yè)模式的規(guī)模化和實(shí)現(xiàn)成功的三個(gè)關(guān)鍵步驟。最后,他還分享了校正數(shù)據(jù)庫體系結(jié)構(gòu)的方法。
許多初創(chuàng)公司在數(shù)據(jù)庫體系的建立一事上會(huì)存在動(dòng)搖
初創(chuàng)公司都知道,他們應(yīng)該是“數(shù)據(jù)驅(qū)動(dòng)”型的公司,但很少能在做出關(guān)鍵技術(shù)決策時(shí)知道這究竟意味著什么。“當(dāng)您剛開始創(chuàng)業(yè)時(shí),您沒有數(shù)據(jù),也沒有客戶。您所做的一切都可以簡單地用一個(gè)由單一的Web服務(wù)器支持的單一數(shù)據(jù)庫搞定。你會(huì)選擇使用舊式機(jī)器,或者是目前流行的那款,然后還會(huì)覺得這是最好的選擇了。“巴雷特說。“隨著公司的發(fā)展,慢慢地,單個(gè)服務(wù)器的性能或可靠性不再適用,您開始需要多臺(tái)服務(wù)器。接著,你會(huì)把一臺(tái)臺(tái)的服務(wù)器增加到你曾經(jīng)單一的數(shù)據(jù)中心,公司的產(chǎn)能也會(huì)隨著規(guī)模的逐漸擴(kuò)大而增加。”
這就是為什么一些方法會(huì)讓許多創(chuàng)業(yè)者落入陷阱:
到處都是松鼠。在皮克斯的一個(gè)電影《飛屋環(huán)游記》中,主人公在聊金毛獵犬道格時(shí),話說到一半,突然停下來,大叫“松鼠!很多時(shí)候想到的不一定就是看到的。“大多數(shù)公司都會(huì)在他們最熟悉的領(lǐng)域來創(chuàng)業(yè)。這是一個(gè)安全的選擇,它有效地在最開始讓風(fēng)險(xiǎn)最小化。不幸的是,人們對過去熟悉,但是世界屬于未來,“巴雷特說。“有膽識(shí)的公司總是退后一步,看看有什么新鮮的或者比熟悉的更好的東西。這當(dāng)然是好的。但是,很多公司把“時(shí)髦”誤認(rèn)為是“好”,然后在他們猶豫用什么時(shí),選擇一些恰好流行但卻未經(jīng)檢驗(yàn)的技術(shù)。事實(shí)上。這種做法會(huì)慢慢地將你的創(chuàng)業(yè)公司置于死地的。
幾年前,巴雷特曾就職于一個(gè)公司。這個(gè)公司試圖建立一個(gè)早期版本的Dropbox。“所有的技術(shù)是當(dāng)時(shí)有的,但他們堅(jiān)持不用簡單的集中式系列服務(wù)器而要用那個(gè)名叫JXTA的糟糕透頂?shù)腜2P技術(shù)。我們那時(shí)候沒有客戶,也沒有多少數(shù)據(jù)需要來存儲(chǔ),但我們的首席技術(shù)官偏要把整個(gè)公司賭上來用這個(gè)分布式系統(tǒng),并且聲稱這是得以擴(kuò)展到PB級數(shù)據(jù)的唯一途徑,”巴雷特說。“跟很多看上去不錯(cuò),綜合性很強(qiáng)的解決方法一樣,它根本不可能實(shí)現(xiàn)預(yù)期目標(biāo)。這種技術(shù)簡直是一個(gè)噩夢,之后也再?zèng)]有在生產(chǎn)環(huán)境中使用過。公司幾次調(diào)整戰(zhàn)略,最終,在四年后一個(gè)融合新舊,新一代Dropbox的解決方案問世了。”
任何初創(chuàng)公司的關(guān)鍵挑戰(zhàn)是新舊結(jié)合,保證最新科技不會(huì)被扼殺在搖籃里。
你不是Google。這并不是說你將來不能或者不會(huì)成為像Google那樣。但不要一開始就做這個(gè)假設(shè)。“當(dāng)下流行的技術(shù)是給那些已經(jīng)出現(xiàn)規(guī)模效應(yīng)、有著復(fù)雜需求的成熟公司的。那些都是理想中的新技術(shù)。你作為一個(gè)新創(chuàng)的品牌公司,需求跟像Google這樣的大公司相同的可能性是微乎其微的,”巴雷特說,“像Postgres的數(shù)據(jù)庫也不錯(cuò),但是它們都不夠酷炫。Google用的那種有特色的數(shù)據(jù)庫技術(shù)聽上去更有意思。我想要像Google,所有我就要選擇那種技術(shù)。”
但人們往往忽略了,Google以他那種方式發(fā)展技術(shù)基礎(chǔ)是因?yàn)樗\(yùn)行世界上最大的搜索引擎。“搜索引擎的驅(qū)動(dòng)技術(shù)是跟其他商業(yè)網(wǎng)站的驅(qū)動(dòng)不一樣的。Google每天需要吸收大量的數(shù)據(jù),而其中只有一小部分是變化或有趣的。也就是說,Google基本上每天都會(huì)拷貝一份互聯(lián)網(wǎng)數(shù)據(jù)。這意味著它能夠使用數(shù)據(jù)索引的方法,非??焖俚厮阉骱吞砑訑?shù)據(jù),但數(shù)據(jù)一旦添加,選擇性地刪除或更改就會(huì)非常緩慢。這對Google來說沒有太大影響,因?yàn)檫@種事情他們每天都會(huì)做一遍。”巴雷特說,“絕大多數(shù)企業(yè)都不能這么做。相反,他們需要慢慢積累更密集的數(shù)據(jù)集,包括帳戶、密碼和可編輯的文件,這些原始的數(shù)據(jù)你都不能只是扔掉,然后重新開始收集,它是需要時(shí)間,不斷更新積累的。”
你的創(chuàng)業(yè)公司每天都在做網(wǎng)上的一份拷貝嗎?如果不是,停止試圖模仿Google的數(shù)據(jù)庫架構(gòu)。
如何明智地選擇數(shù)據(jù)庫體系結(jié)構(gòu)
復(fù)制許多流行的或你喜歡的公司的技術(shù)基礎(chǔ)的危險(xiǎn)之處就在于,這些公司很可能與你的公司非常不同。他們的決定對于你來說可能是種約束。但對于他們來說需要小心翼翼的限制因素,可能成為你的亮點(diǎn)。這里列舉幾項(xiàng)設(shè)計(jì)數(shù)據(jù)庫架構(gòu)時(shí)能夠減輕這種風(fēng)險(xiǎn)的方法。
拒絕被引誘,做好你的打算。人們很容易驚異于數(shù)據(jù)庫的強(qiáng)大性能,而不考慮自己的實(shí)際需要。“當(dāng)你聽到一個(gè)數(shù)據(jù)庫可以控制一千多臺(tái)電腦和處理PB級數(shù)據(jù)的時(shí)候,不要昏頭了。首先,問自己:“我可能會(huì)有多少數(shù)據(jù)需要處理?”,你是不大可能需要那么大的處理量的,”巴雷特說,“即使在今天,如果我們不關(guān)心的可靠性和可維護(hù)性,我們公司可能現(xiàn)在用的還是建立公司五年時(shí)的那套數(shù)據(jù)庫服務(wù)器。人們忘記了,今天的電腦功能是如此強(qiáng)大卻又如此廉價(jià)。你的手機(jī)處理的數(shù)據(jù)量是美國宇航局去月球上帶的電腦的10000倍,甚至一個(gè)簡單的服務(wù)器處理的數(shù)據(jù)量也是它的1000倍。對于一般的創(chuàng)業(yè)公司,幾年內(nèi),單一的服務(wù)器難以處理所需數(shù)據(jù)的可能性是微乎其微的。
優(yōu)先維護(hù)生產(chǎn)能力。“今天,最便宜的戴爾服務(wù)器有一個(gè)雙核2.8ghz處理器和500gb磁盤陣列存儲(chǔ),價(jià)格剛剛超過700美元。升級到一個(gè)有著64GB的RAM和10TB存儲(chǔ)的8核3.7ghz處理器版本,只需要約3200美元,花銷遠(yuǎn)小于Expensify每個(gè)月在咖啡上的花費(fèi)。大多數(shù)創(chuàng)業(yè)公司在提高自己市場上最便宜的服務(wù)器前就倒閉或者被收購了。特別是現(xiàn)在存儲(chǔ)成本下降的速度遠(yuǎn)遠(yuǎn)快于大多數(shù)創(chuàng)業(yè)公司成長速度。即使使用EC2付費(fèi)云托管,它仍然需要支付兩倍的違約金。無論你的硬件是租的還是買的,機(jī)器容量永遠(yuǎn)不會(huì)成為絕大多數(shù)創(chuàng)業(yè)公司的一個(gè)真正的問題。維修保養(yǎng)才是最難的部分。如果你的單個(gè)服務(wù)器出問題了-或者你只是需要升級一下-當(dāng)你重新啟動(dòng)它之后又會(huì)發(fā)生什么?你的整個(gè)服務(wù)就癱瘓了。總而言之,現(xiàn)在的電腦這么地便宜,多備幾臺(tái),不是在提高生產(chǎn)能力,而是純屬多余。”
為安全問題鉆牛角尖兒。“大多數(shù)數(shù)據(jù)庫可以以兩種方式訪問。第一個(gè)是在數(shù)據(jù)庫上做一個(gè)通用查詢。另一種方法是通過存儲(chǔ)過程來訪問。誠然,所有的數(shù)據(jù)庫都有安全措施,但他們也存在區(qū)別,“巴雷特說。“最流行的新數(shù)據(jù)庫依賴于內(nèi)置到Web服務(wù)器的代碼。它的問題是,你的Web服務(wù)器十分有可能被攻破,因?yàn)樗麄冎苯舆B在互聯(lián)網(wǎng)上。不懷好意者可以繞過安全措施,并不受限制地訪問數(shù)據(jù)庫。但如果一個(gè)存儲(chǔ)過程在數(shù)據(jù)庫內(nèi)執(zhí)行,網(wǎng)絡(luò)黑客難以觸及,這樣能夠保證在數(shù)據(jù)庫層面的安全性。然而,絕大多數(shù)的創(chuàng)業(yè)公司-尤其是消費(fèi)類公司-卻選擇使用不夠安全的技術(shù)。這樣一旦他們有了客戶,在不停機(jī)的前提下進(jìn)行安全改造的成本遠(yuǎn)比從一開始就做好安全工作高得多。”
初創(chuàng)公司在數(shù)據(jù)庫安全方面還是應(yīng)該保證,如果有閑置資金,最好買一個(gè)更安全的服務(wù)器。下面是應(yīng)該怎么做。
早期,成長期。消費(fèi)者,企業(yè)。每一家創(chuàng)業(yè)公司都有自己的情況,但巴雷特認(rèn)為,有一個(gè)經(jīng)驗(yàn)法則的方法,可以服務(wù)于一系列正在尋求智能化和實(shí)現(xiàn)目的性數(shù)據(jù)庫架構(gòu)的技術(shù)公司。下面是如何做:
從三個(gè)數(shù)據(jù)庫開始。巴雷特認(rèn)為,今天的技術(shù)讓這成為可能,每一個(gè)初創(chuàng)公司應(yīng)該在創(chuàng)業(yè)第一天就有三個(gè)數(shù)據(jù)中心。“三是一個(gè)神奇的數(shù)字,”他說。“一個(gè)還不夠,因?yàn)樗鼔牡糁皇菚r(shí)間問題??赡苓B不上網(wǎng)或者主機(jī)癱瘓。不管是哪種情況出現(xiàn),都是問題,一個(gè)單一的數(shù)據(jù)庫是無法解決這個(gè)問題的。兩個(gè)數(shù)據(jù)中心存在的問題是,你很容易受到所謂的“分裂大腦綜合癥”的影響,如果兩個(gè)數(shù)據(jù)中心的服務(wù)器之間失去了聯(lián)系,一旦兩者之一完全或暫時(shí)無法訪問,一切就都陷入了混亂。如果,在同一時(shí)間,他們都認(rèn)為對方死機(jī)了,那么他們都認(rèn)為他們是在充當(dāng)主機(jī),然后一直做著備份。在我們看來,就是他們都在消耗著相同的費(fèi)用,成本會(huì)翻倍。顯然這是不劃算的。”
用一個(gè)時(shí)鐘,你總是能夠知道時(shí)間。但是如果有兩個(gè)不同的時(shí)鐘,你永遠(yuǎn)不會(huì)知道確切的時(shí)間,因?yàn)槟悴恢滥囊粋€(gè)才是正確的。
由于一個(gè)數(shù)據(jù)中心是脆弱的,兩個(gè)容易出現(xiàn)責(zé)任不明的問題,那就選擇使用三個(gè)數(shù)據(jù)中心的服務(wù)器。“如果你有三個(gè)數(shù)據(jù)中心,這意味著在任何一時(shí)間點(diǎn)上,你可以失去一個(gè)完整的數(shù)據(jù)中心,還有兩個(gè)剩余的。兩個(gè)數(shù)據(jù)中心是足以正常運(yùn)行的,“巴雷特說。“這聽起來已經(jīng)挺多了,但它同樣可能出現(xiàn)問題。但是,即使問題出現(xiàn)了,在沒有人催促逼迫的時(shí)候,正面解決問題會(huì)更有效一些。這種情況下,投資者不至于對你失望,客戶也不用擔(dān)心。因?yàn)榍捌谝?guī)模已經(jīng)奠定了基礎(chǔ)。所以準(zhǔn)備三個(gè)不同的數(shù)據(jù)中心或在AWS內(nèi)準(zhǔn)備三個(gè)不同的可用性區(qū)域吧。這一點(diǎn)都不貴,而且還簡單,只是需要不凡的遠(yuǎn)見。”
查找和使用復(fù)制技術(shù)。為什么更多的創(chuàng)業(yè)公司創(chuàng)業(yè)時(shí)不用三個(gè)數(shù)據(jù)中心?公司創(chuàng)立初期建立三個(gè)數(shù)據(jù)中心意味著,在你有數(shù)據(jù)需要處理之前,-你得要先復(fù)制。每個(gè)數(shù)據(jù)中心中的每個(gè)服務(wù)器都需要不斷地互相之間共享數(shù)據(jù),這樣每個(gè)服務(wù)器才能共享同一級別的信息。
“但備用或備份服務(wù)器可以很大程度上優(yōu)化原始的復(fù)制技術(shù)。主機(jī)癱瘓的時(shí)候,整體都喪失了工作能力。這種故障轉(zhuǎn)移過程要不是通過手動(dòng),要不就是隨著請求沿途自定義腳本的過程一起被攻擊。無論以哪種方式,都是全局性的問題,最終將會(huì)影響到客戶,“巴雷特說。“更現(xiàn)代的解決方案充分考慮到復(fù)制和故障轉(zhuǎn)移問題,這樣,一個(gè)服務(wù)器死機(jī)也不會(huì)產(chǎn)生太大影響,無需手動(dòng)操作,也不影響客戶。此外,不同于原始的解決方案被設(shè)計(jì)在一個(gè)單一的數(shù)據(jù)中心,依賴快速而可靠的網(wǎng)絡(luò),新的解決方案能使優(yōu)化工作在相對緩慢和不可靠的互聯(lián)網(wǎng)連接情況下也能實(shí)現(xiàn)。”
問題的一部分來自,過時(shí)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)仍然處于主導(dǎo)地位。“想要使用MySQL,是非常困難的。因?yàn)檫@是一個(gè)舊的數(shù)據(jù)庫,它最初是為小容量、運(yùn)行速度慢的磁盤設(shè)計(jì)的。文件系統(tǒng)不能大于4GB。而現(xiàn)在,情況與那時(shí)大不相同了,“巴雷特說。“今天,所有的一切都是在固態(tài)硬盤或緩存在內(nèi)存中,因此超快速。這是MySQL的難題。它還在不斷優(yōu)化,現(xiàn)在仍在被使用。所以它有所有的舊世界的包袱,但它著實(shí)不具備新世界的優(yōu)勢。”
有一些工具可以幫助在不同的數(shù)據(jù)中心同步服務(wù)器,但開放源代碼,易于安裝的工具才剛剛出現(xiàn)。“一些舊的解決方案與三個(gè)數(shù)據(jù)中心同步啟動(dòng)仍然是艱難的,這些在沒有預(yù)言機(jī)那么強(qiáng)大的機(jī)器之前的2007年是不可能實(shí)現(xiàn)的。公平地說,Percona可能會(huì)奏效,但那時(shí)它剛被開發(fā),我都沒聽說過,”巴雷特說。“因?yàn)槲矣凶鯬toP網(wǎng)絡(luò)軟件的背景,所以決定建立一個(gè)我們自己的解決方案。由此,產(chǎn)生了calledbedrock,它易于操作,并能實(shí)時(shí)復(fù)制,也不像Oracle或MySQL那么復(fù)雜。就每一個(gè)服務(wù)器而言,只是在它的本地有一個(gè)單一的數(shù)據(jù)庫,該技術(shù)將它們連接起來,并實(shí)現(xiàn)所有的復(fù)制功能。為了好玩,我們也會(huì)讓它運(yùn)行MySQL協(xié)議,它幾乎可以作為一種簡易替換器件。”
“如果還有其他的解決方案可供選擇,Expensify計(jì)劃無償放棄這項(xiàng)技術(shù)。“最初,它只是一個(gè)專有的解決方案,因?yàn)槲覀冋也坏浆F(xiàn)成的。但隨著時(shí)間的推移,我們意識(shí)到他強(qiáng)大的功能,任何人都可以用它。由于自動(dòng)無縫聚類的思想,那些關(guān)心性能和可用性的人十分在意無損故障轉(zhuǎn)移”巴雷特說,“但很少有人會(huì)因此來自行建立。因?yàn)槠浜诵募夹g(shù)-Paxos的分布式一致性算法,很難得到正解。也正是它使得一組同等服務(wù)器能夠可靠地選出一個(gè)主機(jī),來協(xié)調(diào)分布式事務(wù)和平衡流量,并在故障發(fā)生的0毫秒之內(nèi)做出反應(yīng)。但我們已經(jīng)花了八年的時(shí)間來讓它跨過幾個(gè)數(shù)量級,所以它還并不適用于很多現(xiàn)實(shí)世界的情況,因此,我們還在不斷做出改進(jìn)和準(zhǔn)備,讓它被更廣泛的使用。”
決定你的數(shù)據(jù)是否需要分區(qū)。在從不同的數(shù)據(jù)中心選擇三個(gè)服務(wù)器并選擇一個(gè)復(fù)制技術(shù)后,還要決定是否將數(shù)據(jù)分區(qū)。分區(qū)涉及將一個(gè)數(shù)據(jù)庫分解成完整的獨(dú)立部分。這種選擇會(huì)影響很多未來的決定。
提到分區(qū),需要問一個(gè)問題:我想讓每一位用戶與其他用戶共享數(shù)據(jù)還是將用戶群互相分割開?
“幾乎每個(gè)人開始都是“脫節(jié)的群體”,這是最簡單的概念。無論你是為個(gè)人提供消費(fèi)品還是為企業(yè)提供商品,用戶之間的關(guān)系在開始時(shí)就已經(jīng)很明顯,“巴雷特說。“例如,如果你正在做企業(yè)文檔存儲(chǔ),事情一開始就很明朗,你只需要在公司內(nèi)部的員工之間共享文檔。你甚至可能與企業(yè)客戶簽訂合同,這也要求數(shù)據(jù)被物理隔離-不管如何,這樣做總沒壞處。”
風(fēng)險(xiǎn)是有一天你可能遇到一個(gè)意外情況,需要將以前你覺得不會(huì)有聯(lián)系的幾方聯(lián)系起來。“想象一個(gè)法律公司為兩個(gè)不同的客戶工作,每一個(gè)都托管在兩個(gè)不同的數(shù)據(jù)庫上。突然分托的模型不適用了,因?yàn)檎谑褂靡粋€(gè)數(shù)據(jù)庫的公司不能調(diào)閱另一個(gè)數(shù)據(jù)庫中的文件。你的技術(shù)現(xiàn)在阻礙了這一關(guān)鍵用例來提供產(chǎn)品支持-糟糕的是,你可能已經(jīng)在此前提下通過簽署企業(yè)協(xié)議鞏固了這項(xiàng)技術(shù)。
另一種方法是提前設(shè)計(jì)一個(gè)通道,以備用戶之間有朝一日共享數(shù)據(jù),也就是從一開始就設(shè)計(jì)一個(gè)共享的數(shù)據(jù)庫。“這需要你采用完全不同的技術(shù)路徑,因?yàn)槟悴荒茉購挠布用娼鉀Q問題。如果你的數(shù)據(jù)庫滿了,你不能再為你的下一批客戶買一個(gè),你需要找到一種方法來升級整個(gè)系統(tǒng)-而不是單純只為某個(gè)客戶,“巴雷特說。“為所有用戶保持一個(gè)單一的連續(xù)數(shù)據(jù)庫的好處是,你可以消除客戶之間資源分享的約束,無論是立刻還是在未來的任何時(shí)間。缺點(diǎn)是一個(gè)單一的巨大的數(shù)據(jù)庫,比一堆小的數(shù)據(jù)庫更難維護(hù)-尤其是如果你正在使用一個(gè)舊的數(shù)據(jù)庫解決方案的時(shí)候。”
正確的入門課程
不是每一次的創(chuàng)業(yè)都能華麗地從頭開始。如果你已經(jīng)做了一些其他的選擇-故意或不知情的-還有方法來走回正道。撞擊道岔,轉(zhuǎn)換方向可能不那么輕松,但火車其實(shí)還沒有駛離車站。
· 選擇在多個(gè)可用性區(qū)域中復(fù)制的數(shù)據(jù)庫。“很多公司會(huì)說,“我已經(jīng)有了一個(gè)EC2,立馬就能運(yùn)行我的web服務(wù)器,一個(gè)單一的RDS就是我的數(shù)據(jù)庫,或者我把一些數(shù)據(jù)存儲(chǔ)在S3里。這都是一個(gè)單一的可用性區(qū)域。“不要一開始就讓自己陷入困境:與亞馬遜一起構(gòu)建能支持多個(gè)可用性區(qū)域或完全不同的數(shù)據(jù)中心。”
· 嘗試Expensify的復(fù)制技術(shù)。“從MySQL換到Bedrock很簡單:如果數(shù)據(jù)量小,你可以在深夜關(guān)掉你的服務(wù)器,把數(shù)據(jù)導(dǎo)出,再導(dǎo)入到Bedrock。您的Web服務(wù)器不會(huì)受到任何影響。因?yàn)锽edrock執(zhí)行的也是MySQL協(xié)議。”
· 從存儲(chǔ)過程開始。“問問你自己:“如果黑客襲擊我的服務(wù)器,后果會(huì)有多嚴(yán)重?如果答案是“特別糟糕”,那么將您的驗(yàn)證邏輯移到數(shù)據(jù)庫中的存儲(chǔ)過程中。它會(huì)更安全,能保持更好的分層,并為最終用戶提供更好的服務(wù)。”
結(jié)合
大多數(shù)人不會(huì)覺得數(shù)據(jù)庫結(jié)構(gòu)很酷。但在擁有客戶和他們的數(shù)據(jù)之前,充分了解也是很重要的。你如何組織,規(guī)劃和保證這些數(shù)據(jù)的安全不僅會(huì)對你的技術(shù)產(chǎn)生作用,而且還會(huì)影響你的商業(yè)模式的可擴(kuò)展性。保證在每三個(gè)不同的數(shù)據(jù)中心或可用性區(qū)域中至少有一個(gè)服務(wù)器。選擇一個(gè)允許它們精確、可靠地相互通信的復(fù)制技術(shù)。檢查您的用戶之間的關(guān)系,以決定是否應(yīng)分區(qū)您的數(shù)據(jù)。充分考慮存儲(chǔ)的程序來保護(hù)您的數(shù)據(jù)。最大的挑戰(zhàn)不是決定去采取這種做法,而是怎樣順利地從MySQL一類的流行數(shù)據(jù)庫管理系統(tǒng)中轉(zhuǎn)變過來。
“不要把自己的角色設(shè)定為Google,以此來圍繞數(shù)據(jù)庫架構(gòu)做決定。但也不要把在創(chuàng)業(yè)時(shí)有太多拘束,這會(huì)阻礙公司發(fā)展成為像 Google一樣成熟的公司。事實(shí)上,許多初創(chuàng)公司在這些問題出現(xiàn)前,就已經(jīng)失敗了。你需要問問自己:你是在變得更好還是更壞?”巴雷特說。“嚴(yán)格的要求和機(jī)會(huì),其實(shí)早就迫使我們做出更多關(guān)于數(shù)據(jù)庫架構(gòu)的思考。我們現(xiàn)在知道,堅(jiān)實(shí)的基礎(chǔ)不僅幫助我們按著預(yù)期的目標(biāo)擴(kuò)大規(guī)模,也為我們從未想過的深數(shù)據(jù)和人工智能技術(shù)提供支持。這些可能在我們第一次作出數(shù)據(jù)庫架構(gòu)的決定的時(shí)候就確定好了。這個(gè)系統(tǒng)架構(gòu)像一個(gè)大桶,收納了以任何你能想象的方式存在的數(shù)據(jù)。而另一個(gè)選擇則是糟糕的。如果你沒有意識(shí)到你在第一天就建立了一個(gè)監(jiān)獄,將來遇到的困難可能是無法解決的。”