Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

Ei Habr! Ou te faailoa atu ia te outou le faaliliuga o le tusiga
"E fa'afefea ona galue le database relational".

A o'o mai i fa'amaumauga tu'ufa'atasiga e le mafai ona 'ou manatu e iai se mea o misi. E fa'aaogaina i so'o se mea. E tele faʻamaumauga eseese o loʻo maua, mai le SQLite laʻititi ma aoga i le Teradata malosi. Ae e na'o ni nai tala e fa'amatalaina pe fa'apefea ona galue le database. E mafai ona e su'esu'e mo oe lava e fa'aaoga le "howdoesarelationaldatabasework" e va'ai pe fa'afia ni fa'ai'uga. E le gata i lea, o nei tusiga e pupuu. Afai o lo'o e su'eina ni fa'amatalaga fa'aonaponei fou (BigData, NoSQL po'o le JavaScript), o le a e mauaina nisi fa'amatalaga loloto e fa'amatala ai pe fa'apefea ona galue.

O fa'amaumauga o feso'ota'iga ua tuai tele ma e le'i fa'amatalaina i fafo atu o a'oa'oga a le iunivesite, pepa su'esu'e ma tusi?

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

I le avea ai ma se atinaʻe, ou te le fiafia i le faʻaaogaina o se mea ou te le malamalama. Ma afai na faʻaaogaina faʻamaumauga mo le silia ma le 40 tausaga, e tatau ona i ai se mafuaʻaga. I le aluga o tausaga, ua ou faʻaaluina le faitau selau o itula e malamalama moni ai i nei pusa uliuli uiga ese ou te faʻaaogaina i aso uma. Fa'amaumauga o feso'ota'iga manaia tele aua latou faʻavae i luga o manatu aoga ma toe faʻaaogaina. Afai e te manaʻo e malamalama i se faʻamaumauga, ae e te leʻi maua lava se taimi poʻo se manaʻoga e suʻesuʻe i lenei autu lautele, e tatau ona e fiafia i lenei tusiga.

E ui ina manino le ulutala o lenei tusiga, o le faʻamoemoe o lenei tusiga e le o le malamalama i le faʻaogaina o le database. O lea, e tatau ona e iloa pe faapefea ona tusi se talosaga fesoʻotaʻiga faigofie ma fesili faʻavae RAW; a leai atonu e te le malamalama i lenei tusiga. Pau lena o le mea e tatau ona e iloa, o le a ou faʻamatalaina isi mea.

O le a ou amata i nisi faʻamatalaga faʻasaienisi komepiuta, e pei o le lavelave taimi o algorithms (BigO). Ou te iloa o nisi o outou e inoino i lenei manatu, ae a aunoa ma lea mea o le a le mafai ona e malamalama i lavelave i totonu o le database. Talu ai o se mataupu tele lenei, O le a ou taulai atu i ai mea ou te manatu e taua: fa'afefea le fa'agaioiina o fa'amaumauga SQL fesili. Na ona ou faailoa atu manatu faavae fa'amaumaugaina ia i le faaiuga o le tusiga e te maua se manatu i le mea o loʻo tupu i lalo o le pulou.

Talu ai o se tusiga umi ma faʻapitoa lea e aofia ai le tele o algorithms ma faʻamaumauga faʻamaumauga, faʻaalu lou taimi e faitau ai. O nisi manatu atonu e faigata ona malamalama i ai; e mafai ona e faamisi ma maua pea le manatu lautele.

Mo le tele o le malamalama i totonu o outou, o lenei tusiga ua vaevaeina i vaega e 3:

  • Va'aiga lautele o vaega o fa'amaumauga maualalo ma maualuga
  • Va'aiga lautele ole Fa'asologa ole Fa'atonuga ole fesili
  • Va'aiga lautele o Fefa'atauaiga ma le Pulea o le Pusa

Toe fo'i i fa'avae

I tausaga ua mavae (i se galaxy mamao, mamao mamao...), sa tatau ona iloa tonu e le au atiaʻe le numera o gaioiga na latou faʻaogaina. Na latou iloa a latou algorithms ma faʻamaumauga faʻamaumauga i le loto ona e le mafai ona latou faʻaumatia le PPU ma le manatua oa latou komepiuta tuai.

I lenei vaega, o le a ou faamanatu atu ia te oe nisi o nei manatu ona e taua tele i le malamalama i le database. O le a ou faailoa atu foi le manatu fa'ailoga fa'amaumauga.

O(1) vs O(n2)

I aso nei, o le tele o atinaʻe e le popole i le lavelave taimi o algorithms ... ma e saʻo!

Ae a e feagai ma le tele o faʻamatalaga (Ou te le o tautala i le afe) pe afai o loʻo e tauivi i milliseconds, e taua tele le malamalama i lenei manatu. Ma e pei ona mafai ona e mafaufauina, o faʻamaumauga e tatau ona feagai ma tulaga uma e lua! O le a ou le faia oe e faʻaalu se isi taimi nai lo le mea e manaʻomia e faʻamatala ai le manatu. O lenei mea o le a fesoasoani ia i matou e malamalama ai i le manatu o le faʻatatauina o tau mulimuli ane (tau faavae Taumatematega).

Manatu

Taimi faigata o le algorithm fa'aaoga e va'ai pe o le a le umi e fa'atino ai se algorithm mo se aofa'i o fa'amaumauga. Ina ia faʻamatalaina lenei lavelave, matou te faʻaogaina le numera numera tele O. O lenei faʻamatalaga e faʻaaogaina ma se galuega e faʻamatalaina ai le tele o gaioiga e manaʻomia e le algorithm mo se numera o mea e tuʻuina atu.

Mo se faʻataʻitaʻiga, pe a ou fai atu "o lenei algorithm e lavelave O(some_function())", o lona uiga o le algorithm e manaʻomia nisi_function(a_certain_amount_of_data) faʻagaioiga e faʻagasolo ai se aofaʻi o faʻamaumauga.

lea E le o le aofaʻi o faʻamatalaga e taua**, a leai ** pe faʻafefea ona faʻatuputeleina le numera o gaioiga i le faʻateleina o faʻamaumauga. Ole lavelave ole taimi e le maua ai se numera sa'o o fa'agaioiga, ae ose auala lelei e fa'atatau ai le taimi ole fa'atinoina.

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

I lenei kalafi e mafai ona e vaʻai i le numera o gaioiga faʻatusatusa i le aofaʻi o faʻamatalaga faʻapipiʻi mo ituaiga eseese o faʻalavelave taimi algorithm. Sa ou fa'aogaina se fua fa'atatau e fa'aali ai. I se isi faaupuga, o le aofaʻi o faʻamatalaga vave faʻateleina mai le 1 i le 1 piliona. E mafai ona tatou vaʻaia e:

  • O(1) po'o le lavelave faifai pea e tumau pea (a leai e le ta'ua o le lavelave faifai pea).
  • O(log(n)) tumau maualalo e tusa lava pe faitau piliona o faʻamaumauga.
  • Faigata sili ona leaga- O(n2), lea e faatupulaia vave ai le numera o galuega.
  • O isi faʻalavelave e lua e faʻateleina vave.

faataitaiga

Faatasi ai ma se aofaiga itiiti o faʻamaumauga, o le eseesega i le va o le O (1) ma le O (n2) e faʻatauvaʻa. Mo se faʻataʻitaʻiga, faʻapea o loʻo i ai sau algorithm e manaʻomia le faʻaogaina o elemene 2000.

  • O le O(1) algorithm o le a tau ai le 1 le taotoga
  • O le O(log(n)) algorithm o le a tau 7 gaioiga
  • Ole O(n) algorithm ole a tau 2 galuega
  • Ole O(n*log(n)) algorithm ole a tau 14 galuega
  • Ole O(n2) algorithm ole a tau 4 galuega

O le eseesega i le va o le O(1) ma le O(n2) e foliga tele (4 miliona gaioiga) ae o le a leiloa le maualuga o le 2 ms, naʻo le taimi e emo ai ou mata. O le mea moni, e mafai e tagata faʻaonaponei ona faʻatautaia fiaselau miliona o gaioiga i le sekone. O le mea lea e le o se faʻafitauli i le tele o poloketi IT le faʻatinoga ma le faʻaleleia atili.

E pei ona ou fai atu, e taua pea le iloa o lenei manatu pe a galue ma le tele o faʻamaumauga. Afai o le taimi lenei e tatau ona faʻagasolo e le algorithm le 1 elemene (e leʻo tele mo se faʻamaumauga):

  • O le O(1) algorithm o le a tau ai le 1 le taotoga
  • O le O(log(n)) algorithm o le a tau 14 gaioiga
  • Ole O(n) algorithm ole a tau 1 galuega
  • Ole O(n*log(n)) algorithm ole a tau 14 gaioiga
  • Ole O(n2) algorithm ole a tau 1 gaioiga.

Ou te leʻi faia le numera, ae ou te fai atu i le O(n2) algorithm e iai lou taimi e inu ai se kofe (e tusa lava pe lua!). Afai e te faʻaopoopoina le isi 0 i le tele o faʻamatalaga, o le ae maua le taimi e te malolo ai.

Sei o tatou loloto atili

Mo se faʻamatalaga:

  • O se su'esu'ega lelei o le laulau e maua ai se elemene ile O(1).
  • O le su'eina o se la'au paleni lelei e maua ai i'uga ile O(log(n)).
  • O le su'eina o se laina e maua ai i'uga ile O(n).
  • Ole fa'avasegaga sili ona lelei e iai le lavelave O(n*log(n)).
  • O se algorithm fa'avasega leaga e iai le lavelave O(n2).

Manatua: I vaega nei o le a tatou vaʻai i nei algorithms ma faʻamaumauga faʻamaumauga.

E tele ituaiga o algorithm taimi faigata:

  • fa'asologa masani
  • tulaga sili ona lelei
  • ma le tulaga sili ona leaga

Ole lavelave ole taimi ole fa'aaliga sili ona leaga.

Na ou talanoa e uiga i le faigata o le taimi o le algorithm, ae o le lavelave e faʻaaoga foi i:

  • taumafaina manatua ole algorithm
  • tisiki I/O fa'aaogaina algorithm

Ioe, e iai faʻafitauli e sili atu le leaga nai lo le n2, mo se faʻataʻitaʻiga:

  • n4: leaga tele! O nisi o algorithms ua taʻua e iai lenei lavelave.
  • 3n: e sili atu le leaga! O se tasi o algorithms o le a tatou vaʻaia i le ogatotonu o lenei tusiga o loʻo i ai lenei lavelave (ma o loʻo faʻaaogaina moni i le tele o faʻamaumauga).
  • factorial n: e te le maua lava au fa'ai'uga e tusa lava pe la'ititi fa'amaumauga.
  • nn: Afai e te fetaiaʻi ma lenei lavelave, e tatau ona e fesili ifo ia te oe lava pe o le mea moni lea o lau vaega o gaioiga...

Manatua: Ou te leʻi tuʻuina atu ia te oe le faʻamatalaga moni o le igoa tele O, naʻo se manatu. E mafai ona e faitau i lenei tusiga i Wikipedia mo le fa'amatalaga moni (asymptotic).

MergeSort

O le a sau mea e fai pe a mana'omia le fa'avasegaina o se aofa'iga? O le ā? E te taʻua le sort() function... Ok, lelei tali... Ae mo se database, e tatau ona e malamalama pe faʻapefea ona galue lenei ituaiga () galuega.

E tele fa'avasega lelei algorithms, o lea o le a ou taulai atu i le mea e sili ona taua: tu'u fa'avasega. Atonu e te le malamalama pe aisea e aoga ai le fa'avasegaina o fa'amaumauga i le taimi nei, ae e tatau ona e mae'a le vaega ole su'esu'ega. E le gata i lea, o le malamalama i le merge sort o le a fesoasoani ia i tatou i se taimi mulimuli ane e malamalama ai i le faʻaogaina o faʻamaumauga masani e taʻua soʻo faʻatasi auai (asosi fa'atasi).

Tuufaatasi

E pei o le tele o algorithms aoga, e fa'alagolago le tu'ufa'atasia i se togafiti: tu'ufa'atasia fa'asologa fa'avasegaina e 2 o le lapo'a N/2 i se fa'asologa fa'avasega N-element e tau na'o N fa'agaioiga. O lenei gaioiga e taʻua o le tuufaatasia.

Sei o tatou vaai po o le a le uiga o lenei mea i se faataitaiga faigofie:

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

O le ata lea o lo'o fa'aalia ai ina ia fausia le fa'asologa mulimuli 8-element array, e na'o le tasi lava le mea e te mana'omia i luga ole 2 4-element arrays. Talu ai ua uma ona fa'avasega fa'asologa o elemene e 4:

  • 1) e te faʻatusatusa uma elemene o loʻo i ai nei i ni laina se lua (i le amataga o le taimi nei = muamua)
  • 2) ona ave lea o le laʻititi laʻititi e tuʻu i totonu o le 8 elemene elemene
  • 3) ma alu i le isi elemene i le laina lea na e ave ai le elemene aupito itiiti
  • ma toe fai le 1,2,3 seia e oʻo i le elemene mulimuli o se tasi o faʻasologa.
  • Ona e ave lea o elemene o loʻo totoe o le isi laina e tuʻu i totonu o le 8 elemene elemene.

E aoga lenei mea ona o le 4-element arrays o loʻo faʻavasega ma o lea e te le tau toe "toe foʻi" i na laina.

O lea ua tatou malamalama i le togafiti, o laʻu pseudocode lenei mo le tuʻufaʻatasia:

array mergeSort(array a)
   if(length(a)==1)
      return a[0];
   end if

   //recursive calls
   [left_array right_array] := split_into_2_equally_sized_arrays(a);
   array new_left_array := mergeSort(left_array);
   array new_right_array := mergeSort(right_array);

   //merging the 2 small ordered arrays into a big one
   array result := merge(new_left_array,new_right_array);
   return result;

Fa'asoa fa'avasega e malepe se fa'afitauli i fa'afitauli laiti ona maua lea o fa'ai'uga o fa'afitauli laiti e maua ai le fa'ai'uga o le fa'afitauli muamua (fa'aaliga: o lenei ituaiga algorithm e ta'ua o le divide and conquer). Afai e te le malamalama i lenei algorithm, aua e te popole; Ou te lei malamalama i ai i le taimi muamua na ou vaai ai i ai. Afai e mafai ona fesoasoani ia te oe, ou te vaʻai i lenei algorithm o se algorithm e lua-vase:

  • Vaega vaevaega, lea e vaevaeina ai le laina i vaega laiti
  • Ole vaega ole fa'avasegaina ole mea e tu'ufa'atasia ai fa'asologa laiti (fa'aaogā fa'atasi) e fai ai se fa'asologa tele.

Vaega vaega

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

I le vaega o le vaevaega, o le laina e vaevaeina i ni laina tutusa i laasaga e 3. Ole numera aloa'ia o la'asaga o le log(N) (talu le N=8, log(N) = 3).

Faʻafefea ona ou iloa lenei?

Ou te atamai! I se upu - matematika. O le manatu o laʻasaga taʻitasi e vaevaeina le tele o le faʻasologa muamua i le 2. O le numera o laasaga o le aofaʻi o taimi e mafai ai ona e vaevaeina le faʻasologa muamua i le lua. Ole fa'amatalaga tonu lea ole logarithm (fa'avae 2).

Vaega fa'avasega

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

I le vaega o le fa'avasegaina, e te amata ile autasi (elemene-tasi). I laʻasaga taʻitasi e te faʻaaogaina le tele o faʻagasologa faʻatasi ma o le tau atoa o le N = 8 gaioiga:

  • I le la'asaga muamua e 4 au fa'afefiloi e tau 2 fa'agaioiga ta'itasi
  • I le laasaga lona lua e 2 au fa'atasi e tau 4 fa'agaioiga ta'itasi
  • I le laasaga lona tolu o loʻo ia te oe le 1 merge lea e tau ai le 8 gaioiga

Talu ai o loʻo i ai le log(N) laasaga, tau atoa N * fa'agaioiga o log(N)..

Tulaga lelei o le tu'u fa'atasi

Aisea e malosi tele ai lenei algorithm?

Ona:

  • E mafai ona e suia e faʻaitiitia ai le tulagavae manatua ina ia e le faia ni faʻasologa fou ae suia saʻo le laina faʻaoga.

Manatua: o lenei ituaiga algorithm e taʻua in-mea (faavasega e aunoa ma se manatua faaopoopo).

  • E mafai ona e suia e fa'aoga ai le va o le disk ma sina vaega itiiti o manatua i le taimi e tasi e aunoa ma le fa'atupuina o le tele o le I/O i luga ole laiga. Ole manatu ole uta ile manatua na'o vaega o lo'o fa'agasolo nei. E taua tele pe a mana'omia le fa'avasegaina o se laulau tele-gigabyte ma na'o le 100-megabyte memory buffer.

Manatua: o lenei ituaiga algorithm e taʻua ituaiga fafo.

  • E mafai ona e suia e tamoe i luga o le tele o faagasologa / filo / servers.

Mo se fa'ata'ita'iga, fa'asoa fa'asoa tu'ufa'atasiga o se tasi lea o vaega taua Hadoop (o se fausaga i faʻamatalaga tetele).

  • O lenei algorithm e mafai ona liliu le taʻitaʻi i auro (moni!).

O lenei fa'avasegaga algorithm e fa'aogaina i le tele (pe a le o fa'amaumauga uma), ae le na'o le tasi. Afai e te fia iloa atili, e mafai ona e faitau i ai galuega su'esu'e, lea e talanoaina ai le lelei ma le le lelei o faʻamaumauga masani faʻavasega algorithms.

Fa'asologa, La'au ma Hash Table

I le taimi nei ua matou malamalama i le manatu o le faigata o le taimi ma le faʻavasegaina, e tatau ona ou taʻu atu ia te oe le 3 faʻamaumauga faʻamaumauga. E taua lenei mea aua latou o fa'avae o fa'amaumauga fa'aonaponei. O le a ou faailoa atu foi le manatu fa'ailoga fa'amaumauga.

Faʻasologa

O se fa'asologa e lua-dimensional o le fausaga fa'amaumauga sili ona faigofie. O se laulau e mafai ona manatu o se laina. Faataitaiga:

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

O lenei fa'asologa 2-dimensional o se laulau ma laina ma koluma:

  • O laina ta'itasi e fa'atusalia ai se fa'alapotopotoga
  • O koluma e teu ai meatotino e fa'amatala ai le vaega.
  • O koluma taʻitasi e teu ai faʻamatalaga o se ituaiga faʻapitoa (integer, manoa, aso...).

E faigofie lenei mea mo le teuina ma le vaʻaia o faʻamatalaga, peitaʻi, pe a manaʻomia le suʻeina o se tau faʻapitoa, e le talafeagai.

Mo se faʻataʻitaʻiga, afai e te manaʻo e suʻe tama uma o loʻo galulue i Peretania, e tatau ona e vaʻavaʻai i laina taʻitasi e iloa ai pe o lena laina e patino i Peretania. E tau ia oe N fefa'atauaigafea N - numera o laina, e le leaga, ae mafai ona i ai se auala vave? Ua oo nei i le taimi tatou te faamasani ai i laau.

Fa'aaliga: O le tele o fa'amaumauga fa'aonaponei o lo'o tu'uina atu ai fa'asologa fa'alautele mo le teuina lelei o laulau: fa'aputu-fa'atonu laulau ma fa'asino-fa'atonu laulau. Ae e le suia ai le faʻafitauli o le vave maua o se tulaga faʻapitoa i se vaega o koluma.

Laau fa'amaumauga ma fa'asino igoa

O se la'au su'esu'e binary o se la'au fa'atasi ma se meatotino fa'apitoa, o le ki i node ta'itasi e tatau ona:

  • sili atu nai lo ki uma o lo'o teuina i le pito i lalo agavale
  • itiiti ifo nai lo ki uma o lo'o teuina i le la'au sa'o

Sei o tatou vaai po o le a le uiga o lenei mea i le vaai

Manatu

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

O lenei laau e iai N = 15 elemene. Fa'apea o lo'o ou su'eina le 208:

  • Ou te amata i le aʻa o lona ki o le 136. Talu mai le 136<208, ou te tilotilo i le laʻau taumatau o le node 136.
  • 398> 208 o lea o loʻo ou vaʻavaʻai i le itu tauagavale o le node 398
  • 250> 208 o lea o loʻo ou vaʻavaʻai i le itu tauagavale o le node 250
  • 200<208, o le mea lea o lo'o ou va'ava'ai ai i le la'au sa'o o le node 200. A o le 200 e leai se la'au sa'o, e leai se taua (aua afai e i ai, o le a i ai i le la'au sa'o 200).

Ia tatou fa'apea o lo'o ou su'eina le 40

  • Ou te amata i le aʻa o lona ki o le 136. Talu mai le 136> 40, ou te tilotilo i le itu tauagavale o le node 136.
  • 80> 40, o lea o loʻo ou vaʻavaʻai i le itu tauagavale o le node 80
  • 40= 40, e iai le node. Ou te toe aumaia le ID laina i totonu o le node (e le o faʻaalia i le ata) ma vaʻai i le laulau mo le ID laina ua tuʻuina atu.
  • O le iloaina o le laina ID e mafai ai ona ou iloa tonu le mea o loʻo i ai faʻamatalaga i le laulau, ina ia mafai ona ou toe maua vave.

I le fa'ai'uga, o su'esu'ega uma e lua o le a tau ai a'u i le aofa'i o tulaga i totonu o le la'au. Afai e te faitauina ma le faaeteete le vaega e uiga i le tuufaatasia, e tatau ona e vaʻai o loʻo i ai ogalaau (N) tulaga. Ua aliali mai, fa'amaumauga o tau su'esu'e(N), e leai se leaga!

Tatou toe foi i lo tatou faafitauli

Ae o lenei mea e matua manino lava, o lea tatou toe foi i le tatou faafitauli. Nai lo o se numera faigofie, mafaufau i se manoa e faʻatusalia le atunuu o se tasi i le laulau muamua. Fa'apea o lo'o iai sau la'au o lo'o i ai le fanua "atunuu" (koluma 3) o le laulau:

  • Afai e te fia iloa po o ai e faigaluega i Peretania
  • e te tilotilo i le laau e maua ai le node e fai ma sui o Peretania Tele
  • i totonu o le "UKnode" o le ae maua ai le nofoaga o faamaumauga a tagata faigaluega a Peretania.

Ole su'esu'ega lea ole tau ole log(N) fa'agaioiga nai lo N fa'agaioiga pe afai e te fa'aoga sa'o le laina. O le mea na e tuʻuina atu fa'ailoga fa'amaumauga.

E mafai ona e fausia se la'au fa'asino mo so'o se vaega o fanua ( manoa, numera, 2 laina, numera ma manoa, aso...) pe afai e iai sau galuega e fa'atusatusa ai ki (ie vaega fanua) ina ia mafai ona e setiina. faatulagaina i totonu o ki (o le tulaga lea mo soʻo se ituaiga faʻavae i totonu o faʻamaumauga).

B+ToeLa'au

E ui o lenei laau e aoga lelei mo le mauaina o se tau faʻapitoa, e iai se faʻafitauli TELE pe a manaʻomia maua ni elemene se tele i le va o tau e lua. Ole tau ole O(N) aua e tatau ona e va'ai i node ta'itasi i totonu ole la'au ma siaki pe o iai i le va o nei tau e lua (fa'ata'ita'iga ma se fa'atonuga o le la'au). E le gata i lea, o lenei gaioiga e le o le disk I / O faauo talu ai e tatau ona e faitauina le laau atoa. E tatau ona tatou sailia se auala e faʻatino lelei ai fa'atonuga. Ina ia foia lenei faʻafitauli, o faʻamaumauga faʻaonaponei o loʻo faʻaogaina ai se suiga o le laʻau muamua e taʻua o le B+Tree. I totonu o le B+Laau:

  • na'o pito pito i lalo (lau) teu faamatalaga (nofoaga o laina i le laulau fa'atatau)
  • o isi nodes o lo'o i ai iinei mo auala i le node sa'o i le taimi o sailiga.

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

E pei ona e vaʻaia, e tele atu nodes iinei (faalua). Ioe, o lo'o i ai au fa'aopoopoga fa'aopoopo, "nodes fa'ai'uga", o le a fesoasoani ia te oe e su'e le node sa'o (lea e teu ai le nofoaga o laina i le laulau fa'atasi). Ae ole lavelave ole sailiga ole O(log(N)) (e tasi lava le tulaga). O le eseesega tele o lena nodes i le tulaga pito i lalo e fesoʻotaʻi ma o latou sui.

Faatasi ai ma lenei B + Tree, pe afai o loʻo e suʻeina ni tau i le va o le 40 ma le 100:

  • E tatau lava ona e su'e le 40 (po'o le tau sili ona latalata pe a uma le 40 pe afai e le o iai le 40) e pei ona e faia i le la'au muamua.
  • Ona aoina lea o suli e 40 e faʻaaoga ai soʻotaga tuusaʻo seʻia e oʻo i le 100.

Se'i faapea e te maua M sui ma o le laau e N nodes. Su'eina o se tala fa'apitoa tau node (N) pei o le la'au muamua. Ae o le taimi lava e te maua ai lenei node, o le ae mauaina M sui i M ​​operations ma faʻamatalaga i latou sui. O lenei su'esu'ega na'o le tau M+log(N) galuega fa'atusatusa ile N fa'agaioiga ile la'au muamua. E le gata i lea, e te le tau faitauina le laau atoa (naʻo le M + log(N) nodes), o lona uiga e itiiti le faʻaogaina o le disk. Afai e laʻititi le M (eg 200 laina) ma le N e lapopoa (1 laina), e iai se eseesega TELE.

Ae o loʻo iai faʻafitauli fou iinei (toe!). Afai e te faʻaopoopo pe tape se laina i totonu o faʻamaumauga (ma o le mea lea i le faasino igoa B + Tree):

  • e tatau ona e fa'atumauina le fa'atonuga i le va o pona i totonu o le B+La'au, a leai o le a le mafai ona e mauaina fa'amau i totonu o se la'au e le'i fa'avasegaina.
  • e tatau ona e tausia le numera aupito maualalo o la'asaga ile B+Tree, a leai o le O(log(N)) taimi lavelave e avea ma O(N).

I se isi faaupuga, B+Tree e tatau ona faʻatonu ma paleni. O le mea e laki ai, e mafai lenei mea ile tapeina ma le faʻaofiina o gaioiga. Ae o lenei mea e sau i se tau: faʻaofi ma tapeina i se B+ laau tau O(log(N)). O le mafuaaga lena ua faalogo ai nisi o outou e le o se manatu lelei le fa'aaogaina o le tele o fa'asino igoa. E moni lava, o lo'o e fa'agesegese i lalo vave fa'aofi/fa'afou/tapē o se laina i se laulauaua o le database e manaʻomia le faʻafouina o faʻamatalaga o le laulau e faʻaaoga ai se taugata O(log(N)) faʻagaioiga mo faʻamaumauga taʻitasi. E le gata i lea, o le faʻaopoopoina o faʻasino igoa o lona uiga o le tele o galuega mo pule o fefa'atauaiga (o le a faamatalaina i le faaiuga o le tusiga).

Mo nisi faʻamatalaga, e mafai ona e vaʻai i le Wikipedia tusiga i luga B+Laʻau. Afai e te manaʻo i se faʻataʻitaʻiga o le faʻatinoina o le B + Tree i totonu o se faʻamaumauga, vaʻai lenei tusitusiga и lenei tusitusiga mai se ta'ita'i atina'e MySQL. Latou te taulaʻi uma i le auala e faʻaogaina ai e InnoDB (le MySQL engine) faʻamatalaga.

Faʻaaliga: Na taʻu mai e se tagata faitau ia te aʻu, ona o tulaga maualalo maualalo, o le B + laau e tatau ona paleni atoatoa.

Hashtable

O la matou fa'amaumauga taua mulimuli o le laulau hash. E aoga tele lenei mea pe a e mana'o e vave su'e tau. E le gata i lea, o le malamalama i se laulau hash o le a fesoasoani ia i tatou i se taimi mulimuli ane e malamalama ai i se faʻagaioiga faʻapipiʻi masani e taʻua o le hash join ( auai faatasi). O lenei fausaga faʻamaumauga o loʻo faʻaogaina foi e le database e teu ai nisi mea i totonu (eg. loka laulau poʻo vaita'ele puipui, o le a tatou vaʻai i nei manatu uma e lua mulimuli ane).

O le laulau hash o se fausaga faʻamaumauga e vave ona maua se elemene i lona ki. Ina ia fausia se laulau hash e tatau ona e faʻamalamalamaina:

  • le ki mo au elemene
  • galuega hash mo ki. O faʻailoga autu faʻatulagaina e tuʻuina atu ai le nofoaga o elemene (taʻua vaega ).
  • galuega mo le faatusatusaina o ki. O le taimi lava e te mauaina ai le vaega saʻo, e tatau ona e mauaina le elemene o loʻo e sailia i totonu o le vaega e faʻaaoga ai lenei faʻatusatusaga.

Fa'ata'ita'iga faigofie

Seʻi o tatou faia se faʻataʻitaʻiga manino:

Fa'afefea ona Galulue Fa'amaumauga Fa'amaumauga (Vaega 1)

O lenei laulau hash e 10 vaega. Ona ou te paie, na o le 5 vaega na ou ata ai, ae ou te iloa e te atamai, o lea o le a ou tuʻuina atu ia te oe le ata o le isi 5 na o oe. Na ou faʻaaogaina se faʻaoga faʻaogaina modulo 10 o le ki. I se isi faaupuga, ou te teuina naʻo le numera mulimuli o le ki elemene e suʻe ai lona vaega:

  • afai o le numera mulimuli o le 0, o le elemene e pa'ū i le vaega 0,
  • afai o le numera mulimuli o le 1, o le elemene e pa'ū i le vaega 1,
  • afai o le numera mulimuli o le 2, o le elemene e pa'ū i le vaega 2,
  • ...

Ole galuega fa'atusatusa na ou fa'aogaina ole tutusa lava ile va ole numera lua.

Seʻi tatou fai atu e te manaʻo e maua le elemene 78:

  • O le hash table e fa'atatau le hash code mo le 78, o le 8 lea.
  • O le laulau hash e tilotilo i le vaega 8, ma o le elemene muamua na te mauaina o le 78.
  • Na te toe faafoi atu le mea 78 ia te oe
  • Tau su'esu'e na'o le 2 galuega (o le tasi e faʻatatau le tau o le hash ma le isi e suʻe le elemene i totonu o le vaega).

Ia tatou fai atu e te manaʻo e maua elemene 59:

  • O le hash table e fa'atatau le hash code mo le 59, o le 9 lea.
  • E su'e le laulau hash i le vaega 9, o le elemene muamua na maua o le 99. Talu mai le 99!=59, o le elemene 99 e le o se elemene aoga.
  • I le faaaogaina o le manatu lava e tasi, o le elemene lona lua (9), o le lona tolu (79), ..., o le mea mulimuli (29) ua ave.
  • E le maua le elemene.
  • O le su'esu'ega e 7 gaioiga.

Lelei fa'aoga hash

E pei ona e vaʻai, faʻalagolago i le tau o loʻo e sailia, e le tutusa le tau!

Afai ou te suia nei le hash function modulo 1 o le ki (o lona uiga, ave le 000 numera mulimuli), o le suʻesuʻega lona lua e naʻo le 000 taʻaloga talu ai e leai ni elemene i le vaega 6. O le lu'itau moni lava o le su'eina lea o se fa'aoga lelei o le hash lea o le a fausia ai pakete o lo'o i ai se numera la'ititi o elemene.

I laʻu faʻataʻitaʻiga, o le sailia o se galuega lelei hash e faigofie. Ae o se faʻataʻitaʻiga faigofie lea, o le sailia o se galuega hash lelei e sili atu ona faigata pe a fai o le ki:

  • manoa (fa'ata'ita'iga - igoa fa'ai'u)
  • 2 laina (fa'ata'ita'iga - igoa fa'ai'u ma igoa muamua)
  • 2 laina ma aso (fa'ata'ita'iga - igoa fa'ai'u, igoa muamua ma le aso fanau)
  • ...

Fa'atasi ai ma se fa'aoga lelei o le hash, tau su'esu'ega i luga ole laulau O(1).

Array vs hash laulau

Aisea e le faʻaaogaina ai se faʻasologa?

Hmm, lelei fesili.

  • O le laulau hash e mafai utaina vaega i le manatua, ma o vaega o totoe e mafai ona tumau i luga o le tisiki.
  • Faatasi ai ma se laina e tatau ona e faʻaogaina avanoa vavalalata i le mafaufau. Afai o lo'o e utaina se laulau tele e matua faigata lava ona maua se avanoa faifai pea.
  • Mo se laulau hash, e mafai ona e filifilia le ki e te manaʻo ai (mo se faʻataʻitaʻiga, atunuu ma le igoa faaiu o le tagata).

Mo nisi faʻamatalaga, e mafai ona e faitau i le tusiga e uiga i JavaFaʻafanua, o se faʻatinoga lelei o se laulau hash; e te le manaʻomia le malamalama Java e malamalama ai i manatu o loʻo aofia i lenei tusiga.

puna: www.habr.com

Faaopoopo i ai se faamatalaga