Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL

Selelekela

Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL “U tlameha ho matha kapele kamoo u ka khonang hore feela u lule sebakeng,
’me e le hore u fihle sebakeng se itseng, u tlameha ho matha bonyane habeli!”
(c) Alice naheng ea Wonderland

Nakong e fetileng ke ile ka kōptjoa hore ke fane ka puo bahlahlobi khamphani ea rona ka taba ea ho qapa mehlala ea data, hobane ho lula mererong nako e telele (ka linako tse ling ka lilemo tse 'maloa) re lahleheloa ke pono ea se etsahalang ho re pota-pota lefats'eng la theknoloji ea IT. Khamphaning ea rona (ho etsahala joalo) merero e mengata ha e sebelise li-database tsa NoSQL (bonyane hajoale), kahoo puong ea ka ke ile ka ba ela hloko ka thoko ke sebelisa mohlala oa HBase mme ka leka ho lebisa tlhahiso ea litaba ho ba bang. ba so kang ba di sebedisa ba sebeditse. Haholo-holo, ke bontšitse tse ling tsa likarolo tsa moralo oa mohlala oa data ke sebelisa mohlala oo ke o balileng lilemong tse 'maloa tse fetileng sehloohong se reng "Selelekela sa HB ase Schema Design" ka Amandeep Khurana. Ha ke hlahloba mehlala, ke ile ka bapisa mekhoa e mengata ea ho rarolla bothata bo tšoanang e le hore ke fetisetse mehopolo ea sehlooho hamolemo ho bamameli.

Haufinyane tjena, "ho se na letho leo nka le etsang," ke ile ka ipotsa potso (beke-beke e telele ea Mots'eanong ho behelloa ka thoko ho molemong oa sena), lipalo tsa khopolo-taba li tla lumellana le boikoetliso bo bokae? Ha e le hantle, ke kamoo mohopolo oa sengoloa sena o hlahileng kateng. Moqapi ea sebelitseng le NoSQL matsatsi a 'maloa a kanna a se ke a ithuta letho le lecha ho eona (ka hona a ka tlola halofo ea sengoloa hanghang). Empa bakeng sa bahlahlobiBakeng sa ba e-s'o sebetse haufi-ufi le NoSQL, ke nahana hore ho tla ba molemo bakeng sa ho fumana kutloisiso ea motheo ea likarolo tsa ho qapa mehlala ea data bakeng sa HBase.

Tlhahlobo ea mohlala

Ka maikutlo a ka, pele o qala ho sebelisa marang-rang a NoSQL, o hloka ho nahana ka hloko le ho lekola melemo le likotsi. Hangata bothata bo ka rarolloa ka ho sebelisa li-DBMS tsa setso. Ka hona, ho molemo ho se sebelise NoSQL ntle le mabaka a bohlokoa. Haeba leha ho le joalo u nkile qeto ea ho sebelisa database ea NoSQL, joale u lokela ho ela hloko hore mekhoa ea moralo mona e batla e fapane. Haholo-holo tse ling tsa tsona li ka 'na tsa e-ba tse sa tloaelehang bakeng sa ba kileng ba sebetsana le li-DBMS tsa kamano (ho ea ka maikutlo a ka). Kahoo, lefats'eng la "kamano", hangata re qala ka ho etsa mohlala oa sebaka sa bothata, 'me feela, ha ho hlokahala, re senya mohlala. Ka NoSQL re e lokela ho ela hloko hang-hang maemo a lebelletsoeng a ho sebetsa ka data 'me qalong u nyenyefatse data. Ho phaella moo, ho na le tse ling tse ngata tse fapaneng, tse tla tšohloa ka tlase.

A re hlahlobeng bothata bo latelang ba "synthetic", boo re tla tsoelapele ho sebetsa ka bona:

Hoa hlokahala ho theha sebopeho sa polokelo bakeng sa lenane la metsoalle ea basebelisi ba marang-rang a mang a sa bonahaleng. Ho nolofatsa, re tla nka hore likhokahano tsohle tsa rona li lebisitsoe (joalo ka Instagram, eseng Linkedin). Sebopeho se lokela ho u lumella ho etsa hantle:

  • Araba potso ea hore na mosebelisi A o bala mosebelisi B (paterone ea ho bala)
  • Lumella ho kenyelletsa/ho tlosa likhokahano haeba ho ka ba le ho ingolisa/ho itokolla ho mosebelisi A ho tsoa ho mosebelisi B (sebopeho sa phetoho ea data)

Ha e le hantle, ho na le mekhoa e mengata ea ho rarolla bothata. Setsing sa kamehla sa likamano, re ka etsa tafole ea likamano (mohlomong e tšoantšoa haeba, mohlala, re hloka ho boloka sehlopha sa basebelisi: lelapa, mosebetsi, joalo-joalo, tse kenyelletsang "motsoalle" ona), le ho ntlafatsa. lebelo la phihlello le ka eketsa li-index/partitioning. Mohlomong tafole ea ho qetela e ka shebahala tjena:

Theneketso
motsoalle_id

Vasya
Petya

Vasya
Olya

ka mor'a mona, bakeng sa ho hlaka le kutloisiso e molemo, ke tla bontša mabitso ho e-na le li-ID

Tabeng ea HBase, rea tseba hore:

  • patlisiso e sebetsang hantle e sa hlahiseng tlhahlobo e felletseng ea tafole ea khoneha ka ho khetheha ka senotlolo
    • ha e le hantle, ke kahoo ho ngola lipotso tsa SQL tse tloaelehileng ho ba bangata ho databases tse joalo ke khopolo e mpe; ka botekgeniki, ehlile, o ka romella potso ea SQL ka Joins le lintlha tse ling ho HBase ho tsoa ho Impala e tšoanang, empa e tla sebetsa hakae ...

Ka hona, re qobelloa ho sebelisa ID ea mosebelisi joalo ka senotlolo. 'Me mohopolo oa ka oa pele ka sehlooho "hoka boloka li-ID tsa metsoalle le joang?" mohlomong mohopolo oa ho li boloka ka mela. Khetho ena e hlakileng ka ho fetesisa le "e sa tsebeng" e tla shebahala tjena (ha re e bitse Khetho ea 1 (ea kamehla)bakeng sa litšupiso tse ling):

RowKey
Libui

Vasya
1: Petya
2: Olya
3: Dasha

Petya
1: Masha
2: Vasya

Mona, mohala o mong le o mong o lumellana le mosebelisi a le mong oa marang-rang. Litšiea li na le mabitso: 1, 2, ... - ho ea ka palo ea metsoalle, 'me li-ID tsa metsoalle li bolokiloe likholomong. Ke habohlokoa ho hlokomela hore mola o mong le o mong o tla ba le palo e fapaneng ea litšiea. Mohlala o hlahang setšoantšong se ka holimo, mola o le mong o na le litšiea tse tharo (1, 2 le 3), 'me oa bobeli o na le tse peli feela (1 le 2) - mona rona ka borona re sebelisitse thepa e' meli ea HBase eo marang-rang a amanang le eona a se nang eona:

  • bokhoni ba ho fetola sebopeho sa likholomo (eketsa motsoalle -> eketsa kholomo, tlosa motsoalle -> hlakola kholomo)
  • mela e fapaneng e ka ba le liqapi tse fapaneng tsa kholomo

Ha re hlahlobeng sebopeho sa rona hore na se lumellana le litlhoko tsa mosebetsi:

  • Lintlha tsa ho bala: e le hore re utloisise hore na Vasya o ngolisitsoe ho Olya, re tla hloka ho tlosa mola kaofela ka senotlolo RowKey = "Vasya" 'me u hlophise litekanyetso ho fihlela re "kopana" le Olya ho tsona. Kapa u phete ka boleng ba likholomo tsohle, "ho se kopane" le Olya ebe u khutlisa karabo Bohata;
  • Ho hlophisa lintlha: ho eketsa motsoalle: bakeng sa mosebetsi o tšoanang re boetse re hloka ho tlosa mola kaofela ho sebelisa senotlolo RowKey = "Vasya" ho bala palo eohle ea metsoalle ea hae. Re hloka palo ena kaofela ea metsoalle ho tseba palo ea kholomo eo ho eona re hlokang ho ngola ID ea motsoalle e mocha.
  • Ho fetola data: ho phumula motsoalle:
    • Ho hlokahala ho tlosa mola kaofela ka senotlolo RowKey = "Vasya" 'me u hlophise litšiea e le hore u fumane eo motsoalle ea lokelang ho tlosoa ho eona a tlalehiloeng;
    • Ka mor'a moo, ka mor'a ho hlakola motsoalle, re lokela ho "fetola" lintlha tsohle ka kholomong e le 'ngoe e le hore re se ke ra fumana "likheo" lipalong tsa tsona.

Ha re hlahlobeng hore na li-algorithms tsena, tseo re tla hloka ho li kenya tšebetsong lehlakoreng la "conditional application", li tla hlahisa litholoana life, re sebelisa. O-symbolism. Ha re bolele boholo ba marang-rang a rona a inahaneloang joalo ka n. Joale palo e kholo ea metsoalle eo mosebelisi a ka bang le eona ke (n-1). Re ka tsoela pele ho hlokomoloha sena (-1) molemong oa rona, kaha ka har'a moralo oa tšebeliso ea matšoao a O ha ho bohlokoa.

  • Lintlha tsa ho bala: hoa hlokahala ho tlosa moeli oohle le ho pheta-pheta litšiea tsohle tsa eona moeling. Sena se bolela hore khakanyo e holimo ea litjeho e tla ba hoo e ka bang O(n)
  • Ho hlophisa lintlha: ho eketsa motsoalle: ho fumana palo ea metsoalle, o hloka ho pheta-pheta litšiea tsohle tsa mola, ebe o kenya kholomo e ncha => O(n)
  • Ho fetola data: ho phumula motsoalle:
    • Hoa tšoana le ho eketsa - o hloka ho feta likholomong tsohle moeling => O(n)
    • Ka mor'a hore re tlose litšiea, re lokela ho li "tsamaisa". Haeba u kenya ts'ebetsong "hlooho-on", joale moeling o tla hloka ho fihlela ho (n-1) ts'ebetso. Empa mona le ho feta karolong e sebetsang re tla sebelisa mokhoa o fapaneng, o tla kenya ts'ebetsong "pseudo-shift" bakeng sa palo e tsitsitseng ea ts'ebetso - ke hore, nako e sa khaotseng e tla sebelisoa ho eona, ho sa tsotellehe n. Nako ena e sa feleng (O(2) ho ba hantle) e ka hlokomolohuoa ha e bapisoa le O(n). Mokhoa o bontšitsoe setšoantšong se ka tlase: re kopitsa datha ho tsoa kholomong ea "ho qetela" ho ea ho eo re batlang ho hlakola data ho eona, ebe re hlakola kholomo ea ho qetela:
      Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL

Ka kakaretso, maemong ohle re fumane ho rarahana ha asymptotic ea O(n).
Mohlomong u se u hlokometse hore hoo e ka bang kamehla re tlameha ho bala mola oohle ho tloha polokelong ea litaba, 'me maemong a mabeli ho a mararo, ho feta litšiea tsohle le ho bala palo eohle ea metsoalle. Ka hona, e le boiteko ba ho ntlafatsa, o ka eketsa "bala" kholomo, e bolokang palo eohle ea metsoalle ea mosebedisi e mong le e mong oa marang-rang. Tabeng ena, re ke ke ra bala mola kaofela ho bala palo eohle ea metsoalle, empa bala "bala" kholomo e le 'ngoe feela. Ntho ea bohlokoa ke hore u se ke ua lebala ho ntlafatsa "palo" ha u sebelisa data. Seo. rea ntlafala Khetho ea 2 (palo):

RowKey
Libui

Vasya
1: Petya
2: Olya
3: Dasha
palo: 3

Petya
1: Masha
2: Vasya

palo: 2

Ha ho bapisoa le khetho ea pele:

  • Lintlha tsa ho bala: ho fumana karabo ea potso e reng "Na Vasya o bala Olya?" ha ho letho le fetohileng => O (n)
  • Ho hlophisa lintlha: ho eketsa motsoalle: Re nolofalitse ho kenngoa ha motsoalle e mocha, kaha hona joale ha ho hlokahale hore re bale mola kaofela le ho pheta-pheta holim'a litšiea tsa eona, empa re ka fumana feela boleng ba kholomo ea "bala", joalo-joalo. hang-hang fumana nomoro ea mohala ho kenya motsoalle e mocha. Sena se lebisa phokotsong ea ho rarahana ha likhomphutha ho O(1)
  • Ho fetola data: ho phumula motsoalle: Ha u hlakola motsoalle, re ka boela ra sebelisa kholomo ena ho fokotsa palo ea ts'ebetso ea I / O ha re "fetola" data sele e le 'ngoe ka ho le letšehali. Empa tlhoko ea ho pheta-pheta likholomo ho fumana e lokelang ho hlakoloa e ntse e le teng, kahoo => O(n)
  • Ka lehlakoreng le leng, hona joale ha re ntlafatsa data re hloka ho ntlafatsa kholomo ea "bala" nako le nako, empa sena se nka nako e sa khaotseng, e ka hlokomolohuoang ka har'a moralo oa O-symbols.

Ka kakaretso, khetho ea 2 e bonahala e nepahetse haholoanyane, empa e tšoana le "evolution ho fapana le phetohelo." Ho etsa "phetohelo" re tla e hloka Khetho ea 3 (col).
Ha re fetole ntho e 'ngoe le e' ngoe "e kheloha": re tla abela Lebitso la mosebedisi ID! Se tla ngoloa kholomong ka boeona ha se sa bohlokoa ho rona, e ke e be palo ea 1 (ka kakaretso, lintho tse molemo li ka bolokoa moo, mohlala, sehlopha "lelapa / metsoalle / joalo-joalo."). Mokhoa ona o ka 'na oa makatsa "motho ea sa itokisetsang" ea se nang phihlelo ea nakong e fetileng ea ho sebetsa le li-database tsa NoSQL, empa ke mokhoa ona o u lumellang ho sebelisa bokhoni ba HBase mosebetsing ona ka katleho haholoanyane:

RowKey
Libui

Vasya
Penya: 1
Olya: 1
Hlahisa: 1

Petya
Masha: 1
Phello: 1

Mona re fumana melemo e mengata ka nako e le 'ngoe. Ho li utloisisa, a re sekasekeng sebopeho se secha le ho hakanya ho rarahana ha khomphutha:

  • Lintlha tsa ho bala: e le ho araba potso ea hore na Vasya o ngolisitsoe ho Olya, ho lekane ho bala kholomo e le 'ngoe "Olya": haeba e le teng, joale karabo ke 'Nete, haeba e se - Bohata => O (1)
  • Ho hlophisa lintlha: ho eketsa motsoalle: Ho eketsa motsoalle: kenya feela kholomo e ncha "ID ea motsoalle" => O(1)
  • Ho fetola data: ho phumula motsoalle: tlosa feela kholomo ea ID ea Motsoalle => O(1)

Joalokaha u ka bona, molemo o moholo oa mohlala ona oa polokelo ke hore maemong ohle ao re a hlokang, re sebetsa ka kholomo e le 'ngoe feela, re qoba ho bala mola oohle ho tsoa ho database, ho feta moo, re bala litšiea tsohle tsa mola ona. Re ka emisa moo, empa...

U ka makala 'me ua tsoela pele hanyane tseleng ea ho ntlafatsa ts'ebetso le ho fokotsa ts'ebetso ea I/O ha u kena polokelong ea litaba. Ho thoe'ng haeba re ne re boloka boitsebiso bo feletseng ba kamano ka ho toba ka har'a senotlolo ka boeona? Ke hore, etsa motsoako oa bohlokoa joalo ka userID.friendID? Tabeng ena, ha ho hlokahale hore re bale litšiea tsa mola ho hang (Khetho ea 4(mola)):

RowKey
Libui

Vasya.Petya
Penya: 1

Vasya.Olya
Olya: 1

Vasya.Dasha
Hlahisa: 1

Petya.Masha
Masha: 1

Petya.Vasya
Phello: 1

Ho hlakile hore tlhahlobo ea maemo ohle a ho qhekella ha data ka sebopeho se joalo, joalo ka mofuta o fetileng, e tla ba O(1). Phapang ka khetho ea 3 e tla ba feela ts'ebetsong ea ts'ebetso ea I / O polokelong ea litaba.

Hantle, "seqha" sa ho qetela. Ho bonolo ho bona hore ho khetho ea 4, senotlolo sa mola se tla ba le bolelele bo fapaneng, bo ka 'nang ba ama ts'ebetso (mona re hopola hore HBase e boloka data e le sete sa li-byte le mela e litafoleng e hlophisoa ka senotlolo). Ho feta moo re na le karohano e ka hlokang ho sebetsoa maemong a mang. Ho felisa tšusumetso ena, o ka sebelisa li-hashes tse tsoang ho userID le friendID, 'me kaha li-hashe ka bobeli li tla ba le bolelele bo sa feleng, u ka li kopanya feela, ntle le karohano. Ebe data e tafoleng e tla shebahala tjena (Khetho ea 5(hash)):

RowKey
Libui

dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
Penya: 1

dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
Olya: 1

dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
Hlahisa: 1

1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
Masha: 1

1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
Phello: 1

Ho hlakile hore ho rarahana ha algorithm ea ho sebetsa le sebopeho se joalo maemong ao re a nahanang a tla tšoana le a khetho ea 4 - ke hore, O (1).
Ka kakaretso, ha re akaretseng likhakanyo tsohle tsa rona tsa ho rarahana ha likhomphutha tafoleng e le 'ngoe:

Ho eketsa motsoalle
Ho hlahloba motsoalle
Ho tlosa motsoalle

Khetho ea 1 (ea kamehla)
O (n)
O (n)
O (n)

Khetho ea 2 (palo)
O (1)
O (n)
O (n)

Khetho ea 3 (kholomo)
O (1)
O (1)
O (1)

Khetho ea 4 (mola)
O (1)
O (1)
O (1)

Khetho ea 5 (hash)
O (1)
O (1)
O (1)

Joalo ka ha u bona, likhetho tsa 3-5 li bonahala e le tsona tse ratoang ka ho fetesisa ebile li netefatsa ts'ebetso ea maemo ohle a bohlokoa a ho qhekella ha data ka nako e sa fetoheng. Maemong a mosebetsi oa rona, ha ho na tlhoko e hlakileng ea ho fumana lethathamo la metsoalle eohle ea mosebelisi, empa mesebetsing ea 'nete ea projeke, ho ka ba molemo ho rona, joalo ka bahlahlobisisi ba hantle, ho "lebella" hore mosebetsi o joalo o ka hlaha le “ jala lehlaka.” Ka hona, kutloelo-bohloko ea ka e ka lehlakoreng la khetho ea 3. Empa ho ka etsahala hore ebe morerong oa sebele kopo ena e ka be e se e rarollotsoe ka mekhoa e meng, ka hona, ntle le pono e akaretsang ea bothata bohle, ho molemo ho se etse. liqeto tsa ho qetela.

Tokisetso ea teko

Ke kopa ho leka likhang tse boletsoeng ka holimo ka ts'ebetso - ena e ne e le sepheo sa mohopolo o hlahileng mafelong a beke a malelele. Ho etsa sena, hoa hlokahala ho lekola lebelo la ts'ebetso ea "ts'ebeliso ea maemo" maemong ohle a hlalositsoeng bakeng sa ho sebelisa database, hammoho le keketseho ea nako ena ka boholo bo ntseng bo eketseha ba marang-rang a sechaba (n). Sepheo sa parameter se re khahlang le seo re tla se lekanya nakong ea teko ke nako e sebelisoang ke "ts'ebetso e nang le maemo" ho etsa "ts'ebetso ea khoebo" e le 'ngoe. Ka "khoebo ea khoebo" re bolela e 'ngoe ea tse latelang:

  • Ho eketsa motsoalle e mong e mocha
  • Ho lekola hore na Mosebelisi A ke motsoalle oa Mosebelisi B
  • Ho tlosa motsoalle a le mong

Kahoo, ha ho nahanoa ka litlhoko tse boletsoeng polelong ea pele, boemo ba netefatso bo hlaha ka tsela e latelang:

  • Ho rekota data. Hlahisa marang-rang a pele a boholo ba n. Ho atamela haufi le "lefatše la sebele", palo ea metsoalle eo mosebedisi e mong le e mong a nang le eona e boetse e fetoha e sa tloaelehang. Lekanya nako eo "ts'ebeliso ea maemo" e ngolang data eohle e hlahisitsoeng ho HBase. Ebe o arola nako e hlahisoang ka palo eohle ea metsoalle e ekelitsoeng - ke kamoo re fumanang nako e tloaelehileng ea "ts'ebetso ea khoebo" e le 'ngoe.
  • Lintlha tsa ho bala. Bakeng sa mosebelisi e mong le e mong, etsa lethathamo la "botho" boo u hlokang ho fumana karabo ea hore na mosebelisi o ngolisitsoe ho bona kapa che. Bolelele ba lenane = hoo e batlang e le palo ea metsoalle ea mosebedisi, 'me bakeng sa halofo ea metsoalle e hlahlojoang karabo e lokela ho ba "E", le bakeng sa halofo e' ngoe - "Che". Cheke e etsoa ka tatellano e le hore likarabo tsa "E" le "Che" li ka fapanyetsana (ke hore, molemong o mong le o mong oa bobeli re tla tlameha ho feta litšiea tsohle tsa mohala bakeng sa likhetho tsa 1 le 2). Kakaretso ea nako ea tlhahlobo e aroloa ka palo ea metsoalle e lekiloeng ho fumana kakaretso ea nako ea tlhahlobo thutong ka 'ngoe.
  • Ho hlakola data. Tlosa metsoalle eohle ho mosebedisi. Ho feta moo, taelo ea ho hlakola ha e iketsahalle feela (ke hore, re "shula" lenane la pele le sebelisetsoang ho rekota lintlha). Kakaretso ea nako ea ho hlahloba e aroloa ka palo ea metsoalle e tlositsoeng ho fumana nako e tloaelehileng ea cheke.

Maemo a hloka ho tsamaisoa bakeng sa khetho e 'ngoe le e' ngoe ea data ea 5 le bakeng sa boholo bo fapaneng ba marang-rang a marang-rang ho bona hore na nako e fetoha joang ha e ntse e hola. Ka har'a n e le 'ngoe, likhokahano tsa marang-rang le lenane la basebelisi ba lokelang ho hlahlojoa li tlameha ho tšoana le likhetho tsohle tse 5.
Bakeng sa kutloisiso e molemo, ka tlase ke mohlala oa data e hlahisitsoeng bakeng sa n = 5. "Jenereithara" e ngotsoeng e hlahisa li-dictionaries tse tharo tsa ID e le tlhahiso:

  • ea pele ke ea ho kenya
  • ea bobeli ke ea ho hlahloba
  • boraro - bakeng sa ho hlakolwa

{0: [1], 1: [4, 5, 3, 2, 1], 2: [1, 2], 3: [2, 4, 1, 5, 3], 4: [2, 1]} # всего 15 друзей

{0: [1, 10800], 1: [5, 10800, 2, 10801, 4, 10802], 2: [1, 10800], 3: [3, 10800, 1, 10801, 5, 10802], 4: [2, 10800]} # всего 18 проверяемых субъектов

{0: [1], 1: [1, 3, 2, 5, 4], 2: [1, 2], 3: [4, 1, 2, 3, 5], 4: [1, 2]} # всего 15 друзей

Joalo ka ha u bona, li-ID tsohle tse kholo ho feta 10 bukeng ea mantsoe bakeng sa ho hlahlojoa ke tsona tse tla fana ka karabo Bohata. Ho kenya, ho hlahloba le ho hlakola "metsoalle" ho etsoa hantle ka tatellano e boletsoeng bukeng ea bukantswe.

Teko e entsoe ka laptop e sebetsang Windows 10, moo HBase e neng e sebetsa ka har'a sets'oants'o se le seng sa Docker, 'me Python e nang le Jupyter Notebook e ne e sebetsa ho e' ngoe. Docker e abetsoe 2 CPU cores le 2 GB ea RAM. Menahano eohle, joalo ka mohlala oa "ts'ebetso e nang le maemo" le "piping" bakeng sa ho hlahisa data ea tlhahlobo le nako ea ho lekanya, e ngotsoe ka Python. Laebrari e ne e sebelisetsoa ho sebetsa le HBase happybase, ho bala li-hashes (MD5) bakeng sa khetho ea 5 - hahlib

Ha ho nahanoa ka matla a komporo ea laptop e itseng, ho qalisoa ha n = 10, 30, ... ho khethiloe ka liteko. 170 - ha nako eohle ea ts'ebetso ea potoloho e feletseng ea teko (maemo ohle bakeng sa likhetho tsohle bakeng sa bohle n) e ne e le ho feta kapa ka tlase ho utloahalang le ho lekana nakong ea mokete o le mong oa tee (ka karolelano metsotso e 15).

Mona hoa hlokahala ho fana ka maikutlo a hore tekong ena ha re hlahlobe lipalo tsa ts'ebetso e felletseng. Esita le papiso e lekanyelitsoeng ea likhetho tse peli tse fapaneng e ka 'na ea se ke ea nepahala ka ho feletseng. Hona joale re thahasella mofuta oa phetoho ea nako ho itšetlehile ka n, kaha ho nahanoa ka tlhophiso e ka holimo ea "teko ea teko", ho thata haholo ho fumana likhakanyo tsa nako "tse hlakotsoeng" tsa tšusumetso ea lintho tse sa reroang le tse ling. mme mosebetsi o jwalo o ne o sa behwa).

Sephetho sa liteko

Teko ea pele ke hore na nako e sebelisitsoeng ho tlatsa lethathamo la metsoalle e fetoha joang. Sephetho se ho kerafo e ka tlase.
Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL
Likhetho tsa 3-5, joalo ka ha ho lebelletsoe, li bonts'a nako e batlang e sa fetohe ea "khoebo ea khoebo", e sa itšetleheng ka kholo ea boholo ba marang-rang le phapang e ke keng ea hlalosoa ea ts'ebetso.
Khetho ea 2 e boetse e bonts'a ts'ebetso e sa fetoheng, empa e mpe haholo, hoo e batlang e le makhetlo a 2 mabapi le likhetho tsa 3-5. 'Me sena se ka thaba, kaha se amana le khopolo - phetolelong ena palo ea ts'ebetso ea I/O ho ea ho/ho tloha HBase e feta makhetlo a 2 hantle. Sena se ka sebetsa e le bopaki bo sa tobang ba hore benche ea rona ea liteko, ha e le hantle, e fana ka ho nepahala ho hotle.
Khetho ea 1 le eona, joalo ka ha ho lebelletsoe, e fetoha e liehang ka ho fetesisa mme e bonts'a keketseho ea nako e sebelisitsoeng ho eketsa boholo ba marang-rang.
Joale ha re shebeng liphetho tsa tlhahlobo ea bobeli.
Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL
Likhetho tsa 3-5 li boetse li itšoara ka tsela e lebeletsoeng - nako e sa khaotseng, e ikemetseng ka boholo ba marang-rang. Khetho ea 1 le ea 2 e bonts'a keketseho ea nako ka nako ha boholo ba marang-rang bo ntse bo eketseha le ts'ebetso e ts'oanang. Ho feta moo, khetho ea 2 e fetoha butle butle - ho bonahala e le ka lebaka la tlhoko ea ho bala le ho sebetsana le kholomo ea "palo", e hlokomelehang haholoanyane ha n ntse e hola. Empa ke ntse ke tla qoba ho etsa liqeto leha e le life, kaha ho nepahala ha papiso ena ho batla ho le tlaase. Ho phaella moo, litekanyo tsena (e leng khetho, 1 kapa 2, e potlakileng) e fetohile ho tloha ho matha ho ea ho matha (ha e ntse e boloka tlhaho ea ho itšetleha le "ho ea molala le molala").

Che, kerafo ea ho qetela ke sephetho sa tlhahlobo ea ho tlosa.

Likarolo tsa ho rala mohlala oa data bakeng sa NoSQL

Hape, ha ho makatse mona. Khetho ea 3-5 e etsa ho tlosoa ka nako e sa khaotseng.
Ho feta moo, hoa thahasellisa hore likhetho tsa 4 le 5, ho fapana le maemo a fetileng, li bonts'a ts'ebetso e mpe hanyenyane ho feta khetho ea 3. Kamoo ho bonahalang kateng, ts'ebetso ea ho hlakola mela e theko e boima ho feta ts'ebetso ea ho hlakola likholomo, e leng ntho e utloahalang ka kakaretso.

Khetho ea 1 le ea 2, joalo ka ha ho lebelletsoe, e bonts'a keketseho ea nako. Ka nako e ts'oanang, khetho ea 2 e lula e le butle ho feta khetho ea 1 - ka lebaka la ts'ebetso e eketsehileng ea I/O ea "ho boloka" kholomo ea palo.

Liphetho tse akaretsang tsa liteko:

  • Likhetho tsa 3-5 li bonts'a katleho e kholo ha li nka monyetla ka HBase; Ho feta moo, ts'ebetso ea bona e fapane ho ea ho e mong ka nako e sa khaotseng 'me ha e itšetlehe ka boholo ba marang-rang.
  • Phapang pakeng tsa khetho ea 4 le ea 5 ha ea tlalehoa. Empa sena ha se bolele hore khetho ea 5 ha ea lokela ho sebelisoa. Ho ka etsahala hore boemo ba liteko bo sebelisitsoeng, ho nahanela litšobotsi tsa ts'ebetso ea benche ea teko, ha boa ka ba lumella hore bo fumanoe.
  • Mofuta oa keketseho ea nako e hlokahalang ho etsa "ts'ebetso ea khoebo" e nang le data ka kakaretso e netefalitse lipalo tsa theory tse fumanoeng pele bakeng sa likhetho tsohle.

Epilogue

Liteko tse matla tse entsoeng ha lia lokela ho nkoa e le 'nete e felletseng. Ho na le lintlha tse ngata tse sa kang tsa hlokomeloa le ho sotha liphetho (liphetoho tsena li bonahala ka ho khetheha lirapeng tse nang le boholo bo fokolang ba marang-rang). Ka mohlala, lebelo la thrift, le sebelisoang ke happybase, molumo le mokhoa oa ho kenya ts'ebetsong logic eo ke e ngotseng Python (ha ke khone ho bolela hore khoutu e ngotsoe ka mokhoa o nepahetseng le ka katleho ho sebelisoa bokhoni ba likarolo tsohle), mohlomong. likarolo tsa caching ea HBase, mosebetsi oa morao-rao oa Windows 10 ho laptop ea ka, joalo-joalo. Ka kakaretso, re ka nka hore lipalo tsohle tsa theory li bontšitse ka liteko bonnete ba tsona. Hantle, kapa bonyane ho ne ho sa khonehe ho ba hanyetsa ka "tlhaselo ea hlooho-ea-hlooho" e joalo.

Qetellong, likhothaletso bakeng sa motho e mong le e mong ea sa tsoa qala ho rala mefuta ea data ho HBase: ho tsoa ho boiphihlelo ba nakong e fetileng ba ho sebetsa ka marang-rang a amanang le ho hopola "litaelo":

  • Ha re rala, re tsoela pele ho tloha mosebetsing le lipateroneng tsa manollo ea data, eseng ho tsoa ho mohlala oa domain
  • Ho fihlella hantle (ntle le ho hlahloba tafole ka botlalo) - feela ka senotlolo
  • Denormalization
  • Mela e fapaneng e ka ba le likholomo tse fapaneng
  • Sebopeho se matla sa libui

Source: www.habr.com

Eketsa ka tlhaloso