久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Go rqlite作者告訴你:開(kāi)發(fā)數(shù)據(jù)庫(kù)軟件,算法多重要!

      本文由golang教程欄目給大家介紹關(guān)于《Go rqlite作者告訴你:開(kāi)發(fā)數(shù)據(jù)庫(kù)軟件,算法多重要!》,希望對(duì)需要的朋友有所幫助!

      編寫數(shù)據(jù)庫(kù)程序是一項(xiàng)迷人的工作。在過(guò)去的兩年里,我一直深度參與開(kāi)源數(shù)據(jù)庫(kù)的開(kāi)發(fā),而數(shù)據(jù)庫(kù)編程可能是作為一個(gè)軟件開(kāi)發(fā)者所能完成的最有啟發(fā)性的項(xiàng)目了。

      然而,真正令人震驚的是, 在過(guò)去的 6 年里,我對(duì)數(shù)據(jù)庫(kù)的態(tài)度發(fā)生了很大的變化。 從一開(kāi)始不感興趣的狀態(tài),到現(xiàn)在我開(kāi)始認(rèn)為數(shù)據(jù)庫(kù)系統(tǒng)是軟件工程的一個(gè)巔峰。

      不知道什么是更好的

      在我的職業(yè)生涯的大部分時(shí)間里, 我對(duì)數(shù)據(jù)庫(kù)的唯一經(jīng)驗(yàn)就是閱讀有關(guān)它們的資料。 通常是在想當(dāng)枯燥的背景下 — 打開(kāi)任何一本有關(guān)數(shù)據(jù)庫(kù)的本科教科書,就能明白我的意思。 通常你會(huì)看到如下表格,作為關(guān)系型數(shù)據(jù)庫(kù)的典型用例:

      ID FIRST LAST TITLE DEPARTMENT
      1 Robert Kelly Director Marketing
      2 Tom Burke Representative Sales
      3 John Smith Vice President Sales

      你能再多讀些無(wú)聊的東西嗎?如果這些都是關(guān)于數(shù)據(jù)庫(kù)的,我不想和它們有任何關(guān)系。重點(diǎn)是什么?軟件比這酷多了,對(duì)吧?所以我在很長(zhǎng)一段時(shí)間里完全避免了與數(shù)據(jù)庫(kù)有關(guān)的任何事情

      您永遠(yuǎn)不會(huì)忘記您的第一次CRUD應(yīng)用

      2009年,經(jīng)過(guò)多年的寫作 嵌入式軟件, Linux 設(shè)備驅(qū)動(dòng)程序, 和 網(wǎng)絡(luò)軟件, 我發(fā)現(xiàn)自己領(lǐng)導(dǎo)的團(tuán)隊(duì)需要構(gòu)建一個(gè)基于web的系統(tǒng)。你看,這個(gè) AWS 云計(jì)算已經(jīng)到來(lái),基于云計(jì)算的許可技術(shù) MAC 地址 不再有效。我的團(tuán)隊(duì)必須建立一個(gè) 許可門戶 用于我們新的基于EC2的軟件設(shè)備。因?yàn)槲覀冊(cè)谶@方面有很多經(jīng)驗(yàn) Python, 我們選擇了 Django, 運(yùn)行在 MySQL. 發(fā)生了一些新的事情。實(shí)際上,我是從數(shù)據(jù)庫(kù)開(kāi)始工作的。

      隨著我國(guó)平原地區(qū)的發(fā)展CRUD應(yīng)用程序繼續(xù)運(yùn)行,我開(kāi)始意識(shí)到數(shù)據(jù)庫(kù)是多么重要——它對(duì)我們的系統(tǒng)是多么重要。如果我們丟失了數(shù)據(jù)庫(kù),我們的軟件開(kāi)發(fā)就白費(fèi)了。如果數(shù)據(jù)庫(kù)損壞了數(shù)據(jù),我們客戶的設(shè)備可能會(huì)未經(jīng)許可,他們的網(wǎng)絡(luò)將停止運(yùn)行。如果數(shù)據(jù)庫(kù)不能正常運(yùn)行,成千上萬(wàn)的人將同時(shí)受到影響。但這些事情都沒(méi)有發(fā)生過(guò)。數(shù)據(jù)庫(kù)始終工作。它從不讓我們失望。我印象深刻。
      后來(lái)我發(fā)現(xiàn)了外鍵約束,唯一約束,引用完整性,索引,(記住,在這個(gè)時(shí)候我什么都不知道關(guān)于這些事情)-數(shù)據(jù)庫(kù)可以通過(guò)各種方式幫助我構(gòu)建一個(gè)更健壯的系統(tǒng)。我終于意識(shí)到現(xiàn)代數(shù)據(jù)庫(kù)是驚人的-數(shù)據(jù)庫(kù)是世界上最無(wú)聊的東西直到你真的必須用它們來(lái)構(gòu)建一個(gè)系統(tǒng)

      你也永遠(yuǎn)不會(huì)忘記你的第一個(gè)搜索系統(tǒng)

      到2012年,我領(lǐng)導(dǎo)了一個(gè)團(tuán)隊(duì),建立了一個(gè)大型索引和搜索系統(tǒng)基礎(chǔ)上的大型鍵值數(shù)據(jù)庫(kù),帶有彈性搜索在其核心??纯磂lasticsearch這樣的系統(tǒng)能做什么 —— 一個(gè)建立在世界級(jí)索引這項(xiàng)技術(shù)——即使其下有TB級(jí)的日志數(shù)據(jù),也讓人大開(kāi)眼界。
      到現(xiàn)在為止,我甚至看到數(shù)據(jù)庫(kù)和搜索系統(tǒng)也失敗了,但我被數(shù)據(jù)庫(kù)技術(shù)迷住了。到2014年,我加入了一個(gè)小型專門團(tuán)隊(duì),開(kāi)發(fā)[開(kāi)源時(shí)間序列數(shù)據(jù)庫(kù)]的核心(github.com/influxdata/influxdb).

      我學(xué)到的

      算法真的很重要

      只有在數(shù)據(jù)庫(kù)開(kāi)發(fā)中才有大O分析真的活過(guò)來(lái)了。數(shù)據(jù)庫(kù)是程序員仍然需要循環(huán)、排序和過(guò)濾數(shù)百萬(wàn)對(duì)象的少數(shù)應(yīng)用程序之一。這是少數(shù)幾個(gè)在CS課上學(xué)到的很多枯燥材料都很重要的地方之一。

      其他許多軟件開(kāi)發(fā)都不是這樣。寫入啟動(dòng)ROM固件?不,算法對(duì)我來(lái)說(shuō)從來(lái)都不重要。調(diào)諧器設(shè)備驅(qū)動(dòng)程序? 不,沒(méi)關(guān)系。網(wǎng)絡(luò)設(shè)備管理軟件? CRUD應(yīng)用程序?幾乎不所有這些學(xué)科都需要不同的技能和知識(shí)。大多數(shù)時(shí)候,我只是在面試中討論了運(yùn)行時(shí)的復(fù)雜性。
      但隨著數(shù)據(jù)庫(kù)的發(fā)展,這一切都發(fā)生了變化。實(shí)際上看到一個(gè)系統(tǒng)返回正確的結(jié)果,但是由于算法的改變,只在以前的一小部分時(shí)間內(nèi),看到它發(fā)生在您的代碼中,在您構(gòu)建的系統(tǒng)中,這是一件美妙的事情。

      表現(xiàn)也很重要

      軟件中有一個(gè)老故事是這樣的:程序員編寫的一些代碼的運(yùn)行速度比以前的版本快十倍。他展示了它,但有人指出,它產(chǎn)生的數(shù)據(jù)與正確的數(shù)據(jù)略有不同?!暗撬俣瓤炝耸??!背绦騿T指出?!昂冒?,如果它不需要是正確的,我可以制作一個(gè)完全不占用空間、運(yùn)行速度無(wú)限快的版本”,另一個(gè)回答說(shuō)。
      這個(gè)道德故事一直對(duì)我影響很大。正確總是比什么都重要。這是真的。但這也讓我相信,項(xiàng)目之所以有價(jià)值,僅僅是因?yàn)樗鼈儺a(chǎn)生了正確的結(jié)果。

      對(duì)于數(shù)據(jù)庫(kù),情況并非如此。
      性能不僅僅是一項(xiàng)功能。這是一個(gè)要求。那些愿意為數(shù)據(jù)庫(kù)掏錢的人經(jīng)常這樣做,因?yàn)樗麄儞碛写罅康臄?shù)據(jù)。如果數(shù)據(jù)庫(kù)在這種情況下不能很好地執(zhí)行—如果它不能快速有效地返回結(jié)果—那么它可能根本不工作。

      你認(rèn)為寫系統(tǒng)很復(fù)雜嗎?

      我認(rèn)為開(kāi)發(fā)數(shù)據(jù)庫(kù)最讓我震驚的是查詢引擎變得如此復(fù)雜。我有很多構(gòu)建系統(tǒng)的經(jīng)驗(yàn),可以將數(shù)據(jù)寫入并存儲(chǔ)到磁盤。使這些系統(tǒng)運(yùn)行良好可能是一項(xiàng)重大挑戰(zhàn)。
      但這種復(fù)雜性通常比查詢引擎的復(fù)雜性要小得多。一個(gè)靈活的查詢系統(tǒng)——有效地構(gòu)建一個(gè)系統(tǒng)來(lái)回答問(wèn)題,當(dāng)你不知道問(wèn)題會(huì)是什么的時(shí)候——需要認(rèn)真的設(shè)計(jì)思想。查詢計(jì)劃器必須有效。查詢系統(tǒng)必須支持許多正交需求——按某些維度過(guò)濾,按其他維度分組,連接來(lái)自不同表的數(shù)據(jù)——有時(shí)還支持來(lái)自外部源的數(shù)據(jù)。最后,查詢系統(tǒng)必須高效且性能良好。這導(dǎo)致了設(shè)計(jì)和實(shí)現(xiàn)中抽象和優(yōu)化之間的緊張關(guān)系,這需要真正的技巧才能很好地管理。

      在現(xiàn)實(shí)世界中,它必須被操作

      任何重要的數(shù)據(jù)庫(kù)都必須支持備份、恢復(fù)、碎片管理和監(jiān)視等基本操作。
      如果我,作為一個(gè)嚴(yán)肅的操作員,不能備份你的數(shù)據(jù)庫(kù),我不能使用它,就這么簡(jiǎn)單。數(shù)據(jù)庫(kù)接受寫操作的速度有多快并不重要。在查詢過(guò)程中,它的內(nèi)存占用有多小并不重要。如果我不能保護(hù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)不受數(shù)據(jù)庫(kù)創(chuàng)建者您無(wú)法控制的故障的影響,我將永遠(yuǎn)無(wú)法舒適地運(yùn)行它。
      當(dāng)然,有很多方法可以備份數(shù)據(jù)庫(kù),而不需要數(shù)據(jù)庫(kù)的合作。但內(nèi)置方法通常是最好的。這也是我向 rqlite v2.0.如果我想讓任何人認(rèn)真地使用rqlite,我必須解決現(xiàn)實(shí)世界中的問(wèn)題,即系統(tǒng)可能完全失敗,并將數(shù)據(jù)拖得很長(zhǎng)時(shí)間。

      因此,在設(shè)計(jì)和實(shí)現(xiàn)數(shù)據(jù)庫(kù)時(shí),從一開(kāi)始就要構(gòu)建操作支持。將其作為設(shè)計(jì)的基本部分。您的用戶將為此感謝您。

      答案通常是“視情況而定”

      當(dāng)您第一次開(kāi)始使用數(shù)據(jù)庫(kù)時(shí),尤其是作為一名操作員,您經(jīng)常會(huì)問(wèn)這樣的問(wèn)題:系統(tǒng)可以以什么速率索引?它對(duì)查詢的響應(yīng)速度有多快?我需要多少磁盤空間?一塊碎片能有多大,而且還能正常工作?我怎樣才能加快速度?所有人都毫無(wú)保留地問(wèn)。我過(guò)去常常自己做。
      也許你可以和數(shù)據(jù)庫(kù)程序員談?wù)?,?wèn)他們這些問(wèn)題。而你經(jīng)?!苍S永遠(yuǎn)——得到的回答是:這取決于你。你必須基準(zhǔn),你必須衡量。聽(tīng)到這個(gè)消息可能會(huì)很惱火,而且可能看起來(lái)像是在逃避責(zé)任。

      但事實(shí)并非如此。
      現(xiàn)在,當(dāng)我聽(tīng)到這樣的問(wèn)題時(shí),我會(huì)微笑。太天真了。
      索引率可能取決于數(shù)據(jù)的大小,而不僅僅是文檔或數(shù)據(jù)點(diǎn)的數(shù)量。這可能取決于批處理、數(shù)據(jù)的基數(shù)、數(shù)據(jù)庫(kù)是否群集、數(shù)據(jù)中的哪些列和字段被索引、是新數(shù)據(jù)還是對(duì)現(xiàn)有數(shù)據(jù)的更新、運(yùn)行數(shù)據(jù)庫(kù)的機(jī)器、RAM、IO性能以及使用的復(fù)制。
      控制性能的變量永遠(yuǎn)不會(huì)結(jié)束。
      對(duì)于查詢,可能取決于時(shí)間序列數(shù)據(jù)的時(shí)間范圍。它取決于命中的記錄數(shù)、查詢的字段數(shù)、是否涉及范圍掃描、數(shù)據(jù)是否索引、使用的索引類型、可能訪問(wèn)的碎片數(shù)、數(shù)據(jù)是否為本地?cái)?shù)據(jù)。以及機(jī)器的特點(diǎn)。它有貨嗎?它正在進(jìn)行維護(hù)嗎?網(wǎng)絡(luò)忙嗎?

      所以答案總是, 視情況而定。 數(shù)據(jù)庫(kù)設(shè)計(jì)者是誠(chéng)實(shí)的。 他們可以知道他們建立的系統(tǒng)的一切, 但仍然不知道您的問(wèn)題的答案。

      編程遺愿清單

      如果給那些希望提高編程能力的開(kāi)發(fā)人員一條建議的話,那就是加入數(shù)據(jù)庫(kù)開(kāi)發(fā)團(tuán)隊(duì)。因?yàn)閿?shù)據(jù)庫(kù)開(kāi)發(fā),我的編程技能大大提高了——這是一次美妙的編碼體驗(yàn)。

      原文地址:https://www.philipotoole.com/what-i-learned-from-programming-a-database/

      譯文地址:https://learnku.com/go/t/64605

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)