久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

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

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

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

      不知道什么是更好的

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

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

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

      您永遠不會忘記您的第一次CRUD應用

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

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

      你也永遠不會忘記你的第一個搜索系統(tǒng)

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

      我學到的

      算法真的很重要

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

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

      表現(xiàn)也很重要

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

      對于數(shù)據(jù)庫,情況并非如此。
      性能不僅僅是一項功能。這是一個要求。那些愿意為數(shù)據(jù)庫掏錢的人經(jīng)常這樣做,因為他們擁有大量的數(shù)據(jù)。如果數(shù)據(jù)庫在這種情況下不能很好地執(zhí)行—如果它不能快速有效地返回結果—那么它可能根本不工作。

      你認為寫系統(tǒng)很復雜嗎?

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

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

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

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

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

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

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

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

      編程遺愿清單

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

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

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

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