Akụkụ nke imepụta ụdị data maka NoSQL

Okwu Mmalite

Akụkụ nke imepụta ụdị data maka NoSQL "Ị ga-agba ọsọ ọsọ ọsọ dịka ị nwere ike iji nọrọ n'ebe ahụ,
na iji ruo ebe, ị ga-agba ọsọ opekata mpe okpukpu abụọ!”
(c) Alice na Wonderland

Oge ụfọdụ gara aga, a gwara m ka m nye nkuzi nyocha ụlọ ọrụ anyị na isiokwu nke ịmepụta ụdị data, n'ihi na ịnọdụ ala na oru ngo ogologo oge (mgbe ụfọdụ ruo ọtụtụ afọ) anyị na-atụfu ihe na-eme gburugburu anyị na ụwa nke teknụzụ IT. N'ime ụlọ ọrụ anyị (ọ na-eme) ọtụtụ ọrụ anaghị eji ọdụ data NoSQL (opekata mpe ugbu a), yabụ na nkuzi m, m na-elebara ha anya nke ọma site na iji ihe atụ nke HBase ma gbalịa ịkọwapụta ihe ngosi ahụ nye ndị ahụ. ndị na-ejibeghị ha arụ ọrụ. Karịsịa, egosipụtara m ụfọdụ n'ime njirimara nke nhazi ụdị data site na iji ihe atụ m gụrụ ọtụtụ afọ gara aga na edemede "Okwu mmalite nke HB ase Schema Design" nke Amandeep Khurana dere. Mgbe m na-enyocha ihe atụ, atụnyere m ọtụtụ nhọrọ maka idozi otu nsogbu ahụ ka o wee mee ka ndị na-ege ntị nweta echiche ndị bụ́ isi nke ọma.

N'oge na-adịbeghị anya, "n'enweghị ihe ọ bụla ime," ajụrụ m onwe m ajụjụ a (ogologo izu ụka May na kwarantaini na-enyere aka na nke a), ego ole ka ngụkọ usoro ihe ga-adaba na omume? N'ezie, otu a ka e si mụọ echiche maka isiokwu a. Onye nrụpụta nke na-arụ ọrụ na NoSQL ruo ọtụtụ ụbọchị nwere ike ọ gaghị amụta ihe ọhụrụ na ya (ya mere ọ nwere ike ịwụpụ ọkara akụkọ ahụ ozugbo). Mana maka nyochaMaka ndị na-arụkọbeghị ọrụ na NoSQL, echere m na ọ ga-aba uru maka inweta nghọta bụ isi nke njirimara nke ịmepụta ụdị data maka HBase.

Ntụle ihe atụ

N'uche nke m, tupu ịmalite iji NoSQL ọdụ data, ịkwesịrị iche echiche nke ọma ma tụlee uru na ọghọm. Ọtụtụ mgbe, enwere ike idozi nsogbu ahụ site na iji DBMS omenala. Ya mere, ọ ka mma ka ị ghara iji NoSQL na-enweghị isi ihe kpatara ya. Ọ bụrụ n’ikpebie iji nchekwa data NoSQL, yabụ ị kwesịrị iburu n’uche na usoro a na-abịaru nso ebe a dịtụ iche. Karịsịa ụfọdụ n'ime ha nwere ike bụrụ ihe a na-adịghị ahụkebe maka ndị na-emebu naanị na DBMSs mmekọrịta (dị ka ihe m chọpụtara). Ya mere, na ụwa "mmekọrịta", anyị na-amalitekarị site n'ichepụta ngalaba nsogbu ahụ, naanị mgbe ahụ, ọ bụrụ na ọ dị mkpa, mebie ihe nlereanya ahụ. Na NoSQL anyị kwesịrị ozugbo iburu n'uche ọnọdụ ndị a na-atụ anya maka ịrụ ọrụ na data na ibido denormalize data. Tụkwasị na nke ahụ, e nwere ọtụtụ ọdịiche ndị ọzọ, nke a ga-atụle n'okpuru ebe a.

Ka anyị tụlee nsogbu "synthetic" na-esonụ, nke anyị ga-anọgide na-arụ ọrụ:

Ọ dị mkpa ịmepụta usoro nchekwa maka ndepụta ndị enyi nke ndị ọrụ nke ụfọdụ netwọk mmekọrịta nkịtị. Iji mee ka ọ dị mfe, anyị ga-eche na a na-eduzi njikọ anyị niile (dịka na Instagram, ọ bụghị Linkedin). Nhazi ahụ kwesịrị inye gị ohere ịme nke ọma:

  • Zaa ajụjụ a ma onye ọrụ A na-agụ onye ọrụ B (ụkpụrụ ọgụgụ)
  • Kwe ka ịgbakwunye/wepu njikọ ma ọ bụrụ na ndenye aha/ịnweghị aha onye ọrụ A n'aka onye ọrụ B (ngbanwe mgbanwe data)

N'ezie, enwere ọtụtụ nhọrọ maka idozi nsogbu ahụ. Na nchekwa data mmekọrịta mgbe niile, anyị ga-enwe ike ịme tebụl mmekọrịta (ikekwe nke a na-egosipụta ma ọ bụrụ na, dịka ọmụmaatụ, anyị kwesịrị ịchekwa otu ndị ọrụ: ezinụlọ, ọrụ, wdg, nke gụnyere “enyi” a), yana ịkwalite nkwalite. Ọsọ ịnweta ga-agbakwunye index / nkebi. O yikarịrị ka tebụl ikpeazụ ga-adị ka nke a:

Njirimara Onye Ọrụ
enyi_id

Vasya
Peter

Vasya
Olya

ugbu a, maka idoanya na nghọta ka mma, a ga m egosi aha kama ID

N'ihe banyere HBase, anyị maara na:

  • ọchụchọ dị mma nke na-adịghị eme ka nyocha tebụl zuru ezu ga-ekwe omume naanị site na igodo
    • N'ezie, ọ bụ ya mere ide ajụjụ SQL maara nke ọma na ọtụtụ ndị dị otú ahụ ọdụ data bụ echiche ọjọọ; na teknụzụ, n'ezie, ị nwere ike izipu ajụjụ SQL na Joins na mgbagha ndị ọzọ na HBase site na otu Impala, mana ka ọ ga-esi dị irè…

Ya mere, a na-amanye anyị iji ID onye ọrụ dịka igodo. Na echiche mbụ m banyere isiokwu ahụ "Ebe na otu esi echekwa NJ ndị enyi?" eleghị anya, echiche ịchekwa ha na ogidi. Nhọrọ a kacha pụta ìhè na "enweghị uche" ga-adị ka nke a (ka anyị kpọọ ya Nhọrọ 1 (nke ndabara)maka nkọwa ndị ọzọ):

RowKey
Igwe okwu

Vasya
1: Petya
2: Ola
3: Dasha

Peter
1: Masha
2: Vasya

N'ebe a, ahịrị ọ bụla dabara na otu onye ọrụ netwọk. Ogidi ndị ahụ nwere aha: 1, 2, ... - dị ka ọnụ ọgụgụ ndị enyi si dị, na ID nke ndị enyi na-echekwa na ogidi. Ọ dị mkpa ịmara na ahịrị ọ bụla ga-enwe ọnụ ọgụgụ ogidi dị iche. Na ihe atụ na ọnụ ọgụgụ dị n'elu, otu ahịrị nwere ogidi atọ (1, 2 na 3), na nke abụọ nwere naanị abụọ (1 na 2) - ebe a anyị onwe anyị na-eji HBase abụọ nke ọdụ data mmekọrịta enweghị:

  • ike ịgbanwe ihe mejupụtara ogidi (tinye enyi -> tinye kọlụm, wepụ enyi -> hichapụ kọlụm)
  • ahịrị dị iche iche nwere ike ịnwe nhazi kọlụm dị iche iche

Ka anyị lelee usoro anyị maka nnabata ihe achọrọ nke ọrụ a:

  • Ọgụgụ data: iji ghọta ma Vasya e debanyere aha Olya, anyị ga-mkpa ibelata ahịrị niile site na igodo RowKey = "Vasya" wee dozie site na ụkpụrụ kọlụm ruo mgbe anyị "zute" Olya n'ime ha. Ma ọ bụ kwupụta site na ụkpụrụ nke kọlụm niile, "agaghị ezute" Olya wee weghachi azịza ụgha;
  • Na-edezi data: ịgbakwunye enyi: maka ọrụ yiri nke ahụ anyị chọkwara iwepụ ahịrị niile iji igodo RowKey = "Vasya" gbakọọ ọnụ ọgụgụ ndị enyi ya. Anyị chọrọ ọnụ ọgụgụ ndị enyi a zuru ezu iji chọpụta ọnụọgụ nke kọlụm nke anyị kwesịrị iji dee ID nke enyi ọhụrụ ahụ.
  • Ịgbanwe data: ihichapụ enyi:
    • Mkpa ibelata ahịrị niile site na igodo RowKey = "Vasya" wee dozie site na kọlụm iji chọta nke e dekọrọ enyi a ga-ehichapụ;
    • Na-esote, mgbe ihichapụ enyi anyị, anyị kwesịrị "ịgbanwe" data niile n'ime otu kọlụm ka ị ghara ịnweta "ọpụpụ" na ọnụọgụ ha.

Ka anyị tụlee otú algọridim ndị a si arụ ọrụ, nke anyị ga-achọ iji mejuputa n'akụkụ "ngwa ngwa", ga-eji. O-akara ngosi. Ka anyị gosi nha netwọkụ mmekọrịta nke echiche dị ka n. Mgbe ahụ ọnụ ọgụgụ kachasị enyi otu onye ọrụ nwere ike inwe bụ (n-1). Anyị nwere ike ileghara nke a anya (-1) maka ebumnuche anyị, ebe ọ bụ na n'ime usoro nke iji akara O-adịghị mkpa.

  • Ọgụgụ data: ọ dị mkpa iji wepụ ahịrị dum ma kwupụta site na ogidi ya niile na njedebe. Nke a pụtara na ọnụ ọgụgụ dị elu nke ụgwọ ga-abụ ihe dịka O(n)
  • Na-edezi data: ịgbakwunye enyi: iji chọpụta ọnụọgụ ndị enyi, ịkwesịrị ịmegharị na kọlụm niile dị n'ahịrị, wee tinye kọlụm ọhụrụ => O(n)
  • Ịgbanwe data: ihichapụ enyi:
    • Yiri ịgbakwunye - ịkwesịrị ịgafe na kọlụm niile dị na njedebe => O(n)
    • Mgbe iwepu ogidi ndị ahụ, anyị kwesịrị "ịkwaga" ha. Ọ bụrụ na i mejuputa a "isi-na", mgbe ahụ na njedebe ị ga-achọ ọrụ ruo (n-1). Ma ebe a na n'ihu na akụkụ bara uru, anyị ga-eji ụzọ dị iche iche, nke ga-emejuputa a "pseudo-shift" maka ọnụ ọgụgụ a kapịrị ọnụ nke arụmọrụ - ya bụ, a ga-eji oge niile na ya, n'agbanyeghị n. Enwere ike ileghara oge a na-adịgide adịgide (O(2) ka ọ bụrụ kpọmkwem) ma e jiri ya tụnyere O (n). E gosipụtara usoro a na foto dị n'okpuru: anyị na-edegharị naanị data site na kọlụm "ikpeazụ" gaa na nke anyị chọrọ ihichapụ data, wee hichapụ kọlụm ikpeazụ:
      Akụkụ nke imepụta ụdị data maka NoSQL

Na mkpokọta, n'ọnọdụ niile anyị nwetara mgbagwoju anya mgbako nke O(n).
Eleghị anya ị chọpụtala na ọ fọrọ nke nta ka ọ bụrụ mgbe niile ka anyị ga-agụ ahịrị niile site na nchekwa data, na n'ọnọdụ abụọ n'ime atọ, naanị iji gafee ogidi niile wee gbakọọ ọnụọgụ ndị enyi. Ya mere, dị ka mgbalị na njikarịcha, ị nwere ike ịgbakwunye kọlụm "gụọ", nke na-echekwa ọnụ ọgụgụ ndị enyi nke onye ọrụ netwọk ọ bụla. N'okwu a, anyị enweghị ike ịgụ ahịrị ahụ dum iji gbakọọ ọnụ ọgụgụ ndị enyi, mana gụọ naanị otu kọlụm "gụọ". Isi ihe abụghị ichefu imelite "ọnụọgụ" mgbe ị na-emegharị data. Nke ahụ. anyị ga-akawanye mma Nhọrọ 2 (gụọ):

RowKey
Igwe okwu

Vasya
1: Petya
2: Ola
3: Dasha
agu: 3

Peter
1: Masha
2: Vasya

agu: 2

Tụnyere nhọrọ nke mbụ:

  • Ọgụgụ data: iji nweta azịza nye ajụjụ a "Vasya ọ na-agụ Olya?" Ọ nweghị ihe gbanwere => O(n)
  • Na-edezi data: ịgbakwunye enyi: Anyị emeela ka ntinye nke enyi ọhụrụ dị mfe, ebe ọ bụ na ugbu a, ọ dịghị mkpa ka anyị gụọ akara dum ma na-atụgharị n'elu ogidi ya, ma ọ nwere ike nweta uru nke kọlụm "gụọ", wdg. ozugbo chọpụta nọmba kọlụm iji tinye enyi ọhụrụ. Nke a na-eduga na mbelata mgbagwoju anya mgbako gaa na O(1)
  • Ịgbanwe data: ihichapụ enyi: Mgbe ị na-ehichapụ enyi, anyị nwekwara ike iji kọlụm a iji belata ọnụ ọgụgụ nke ọrụ I / O mgbe "na-agbanwe" data otu cell gaa n'aka ekpe. Mana mkpa ịtụgharị site na kọlụm iji chọta nke a ga-ehichapụ ka dị, yabụ => ​​O(n)
  • N'aka nke ọzọ, ugbu a mgbe emelite data anyị kwesịrị imelite kọlụm "gụọ" oge ọ bụla, ma nke a na-ewe oge na-adịgide adịgide, nke nwere ike ileghara n'ime kpuchie nke O-akara ngosi.

N'ozuzu, nhọrọ 2 yiri ka ọ dị ntakịrị karịa, mana ọ dị ka "evolushọn kama mgbanwe." Iji mee "mgbanwe" anyị ga-achọ Nhọrọ 3 (kọl).
Ka anyị tụgharịa ihe niile "gbadoro ihu": anyị ga-ekenye NJ onye ọrụ aha kọlụm! Ihe a ga-ede na kọlụm n'onwe ya adịghịzi mkpa maka anyị, ka ọ bụrụ nọmba 1 (n'ozuzu, ihe bara uru nwere ike ịchekwa n'ebe ahụ, dịka ọmụmaatụ, otu "ezinụlọ / ndị enyi / wdg."). Ụzọ a nwere ike iju onye "onye nkịtị" na-akwadoghị nke na-enweghị ahụmahụ mbụ na-arụ ọrụ na ọdụ data NoSQL, ma ọ bụ kpọmkwem usoro a na-enye gị ohere iji ike nke HBase na ọrụ a nke ọma:

RowKey
Igwe okwu

Vasya
Petya: 1
Olya: 1
Dasha: 1

Peter
Mma: 1
Vasya: 1

N'ebe a, anyị na-enweta ọtụtụ uru n'otu oge. Iji ghọta ha, ka anyị nyochaa usoro ọhụrụ ahụ wee tụọ mgbagwoju anya mgbagwoju anya:

  • Ọgụgụ data: iji zaa ajụjụ ma Vasya e debanyere aha Olya, ọ ga-ezuru ịgụ otu kọlụm "Olya": ọ bụrụ na ọ dị ebe ahụ, azịza ya bụ eziokwu, ọ bụrụ na ọ bụghị - Ụgha => O(1)
  • Na-edezi data: ịgbakwunye enyi: Ịtinye enyi: dị nnọọ tinye kọlụm ọhụrụ " ID enyi" => O(1)
  • Ịgbanwe data: ihichapụ enyi: naanị wepu kọlụm ID Enyi => O(1)

Dị ka ị nwere ike ịhụ, uru dị ịrịba ama nke ụdị nchekwa a bụ na n'ọnọdụ niile anyị chọrọ, anyị na-arụ ọrụ naanị otu kọlụm, na-ezere ịgụta ahịrị dum site na nchekwa data na, ọzọ, na-edepụta ogidi niile nke ahịrị a. Anyị nwere ike kwụsị ebe ahụ, mana...

Ị nwere ike ịgbagwoju anya ma gaa n'ihu n'ihu n'ụzọ nke ịkwalite arụmọrụ yana ibelata ọrụ I/O mgbe ị na-abanye na nchekwa data. Kedu ihe ma ọ bụrụ na anyị echekwa ozi mmekọrịta zuru oke na igodo ahịrị n'onwe ya? Ya bụ, mee ka ihe mejupụtara igodo dị ka userID.friendID? N'okwu a, anyị agaghị agụrịrị ogidi nke ahịrị ahụ ma ọlị (Nhọrọ 4 (ahịrị)):

RowKey
Igwe okwu

Vasya.Petya
Petya: 1

Vasya.Olya
Olya: 1

Vasya.Dasha
Dasha: 1

Petya.Masha
Mma: 1

Petya.Vasya
Vasya: 1

N'ụzọ doro anya, ntule nke niile data aghụghọ ndapụta n'ụdị a, dị ka na mbụ version, ga-O (1). Ọdịiche dị na nhọrọ 3 ga-abụ naanị na arụmọrụ nke arụmọrụ I / O na nchekwa data.

Ọfọn, "ụta" ikpeazụ. Ọ dị mfe ịhụ na na nhọrọ 4, igodo ahịrị ga-enwe ogologo mgbanwe, nke nwere ike imetụta arụmọrụ (ebe a anyị na-echeta na HBase na-echekwa data dị ka set nke bytes na ahịrị na tebụl na-ahazi site na igodo). Na mgbakwunye, anyị nwere nkewa nke nwere ike ịdị mkpa ka ejikwa ya n'ọnọdụ ụfọdụ. Iji kpochapụ mmetụta a, ị nwere ike iji hashes si userID na friendID, na ebe hashes abụọ ga-enwe ogologo oge, ị nwere ike ịmekọta ha, na-enweghị onye na-ekewapụ. Mgbe ahụ data dị na tebụl ga-adị ka nke a (Nhọrọ 5 (hash)):

RowKey
Igwe okwu

dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
Petya: 1

dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
Olya: 1

dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
Dasha: 1

1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
Mma: 1

1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
Vasya: 1

N'ụzọ doro anya, mgbagwoju anya algọridim nke ịrụ ọrụ na usoro dị otú ahụ na ọnọdụ ndị anyị na-atụle ga-adị ka nke nhọrọ 4 - ya bụ, O (1).
Na mkpokọta, ka anyị chịkọta atụmatụ anyị niile gbasara mgbagwoju anya n'otu tebụl:

Na-agbakwụnye enyi
Na-elele enyi
Iwepụ enyi

Nhọrọ 1 (nke ndabara)
O (n)
O (n)
O (n)

Nhọrọ 2 (gụọ)
O (1)
O (n)
O (n)

Nhọrọ 3 (kọlụm)
O (1)
O (1)
O (1)

Nhọrọ 4 (ahịrị)
O (1)
O (1)
O (1)

Nhọrọ 5 (hash)
O (1)
O (1)
O (1)

Dị ka ị pụrụ ịhụ, nhọrọ 3-5 yiri ka ndị kasị mma na theorically hụ na ogbugbu nke niile mkpa data mkpapụta ndapụta na mgbe niile. N'ọnọdụ nke ọrụ anyị, ọ dịghị ihe doro anya chọrọ iji nweta ndepụta nke ndị enyi onye ọrụ niile, ma n'ime ezigbo ọrụ ngo, ọ ga-adị mma ka anyị, dị ka ndị nyocha dị mma, 'ịtụ anya' na ọrụ dị otú ahụ nwere ike ibilite na. "gbasa ahịhịa." Ya mere, ọmịiko m dị n'akụkụ nhọrọ 3. Ma ọ ga-abụ na n'ezie ọrụ a nwere ike dozie arịrịọ a site n'ụzọ ndị ọzọ, ya mere, na-enweghị ọhụụ zuru oke nke nsogbu ahụ dum, ọ ka mma ka ị ghara ime ya. ikpeazụ nkwubi okwu.

Nkwadebe nke nnwale

Ọ ga-amasị m ịnwale arụmụka usoro iwu ndị dị n'elu na omume - nke a bụ ebumnuche nke echiche ahụ bilitere n'ime ogologo izu ụka. Iji mee nke a, ọ dị mkpa iji nyochaa ọsọ ọsọ nke "ngwa ngwa" anyị na ọnọdụ niile akọwapụtara maka iji nchekwa data, yana mmụba na oge a na-abawanye ụba nke netwọk mmekọrịta (n). Ebumnuche ebumnuche nke na-amasị anyị na nke anyị ga-atụ n'oge nnwale ahụ bụ oge ejiri "ngwa ọnọdụ" mee otu "ọrụ azụmahịa". Site na "azụmahịa azụmahịa" anyị pụtara otu n'ime ihe ndị a:

  • Na-agbakwụnye otu enyi ọhụrụ
  • Na-enyocha ma Onye ọrụ A bụ enyi nke onye ọrụ B
  • Iwepụ otu enyi

Ya mere, n'iburu n'uche ihe ndị achọrọ ka akọwapụtara na nkwupụta mbụ, ọnọdụ nkwenye na-apụta dị ka ndị a:

  • Ndekọ data. Na-enweghị usoro wepụta netwọk mbụ nke nha n. Iji bịaruo “ezigbo ụwa” nso, ọnụọgụ enyi onye ọrụ ọ bụla nwere bụkwa mgbanwe na-enweghị usoro. Tulee oge nke “ngwa ọnọdụ” anyị na-ede data niile emepụtara na HBase. Kewaa oge nsonaazụ ya site na ngụkọta ndị enyi agbakwunyere - otu a ka anyị si enweta nkezi oge maka otu "ọrụ azụmahịa"
  • Ọgụgụ data. Maka onye ọrụ ọ bụla, mepụta ndepụta nke "onwe" nke ịchọrọ iji nweta azịza ma onye ọrụ ọ debanyere aha ya ma ọ bụ na ọ denyeghị ya. Ogologo nke ndepụta = mkpokọta ọnụ ọgụgụ nke ndị enyi onye ọrụ, na ọkara nke ndị enyi a na-enyocha azịza kwesịrị ịbụ "Ee", na maka ọkara nke ọzọ - "Ee e". A na-eme nlele ahụ n'usoro nke na azịza "Ee" na "Mba" ọzọ (ya bụ, na nke abụọ ọ bụla anyị ga-agafe na ogidi niile nke ahịrị maka nhọrọ 1 na 2). A na-ekewa oge nyocha oge niile site na ọnụọgụ ndị enyi nwalere iji nweta nkezi oge nyocha kwa isiokwu.
  • Na-ehichapụ data. Wepu enyi niile n'aka onye ọrụ. Ọzọkwa, usoro ihichapụ bụ enweghị usoro (ya bụ, anyị “na-agwakọta” ndepụta mbụ eji edekọ data). A na-ekewa ngụkọta oge nlele site na ọnụọgụ ndị enyi wepụrụ iji nweta nkezi oge kwa nlele.

Ọ dị mkpa ka a na-agba ọsọ ọnọdụ maka onye ọ bụla n'ime nhọrọ ụdị data 5 na maka nha dị iche iche nke netwọk mmekọrịta iji hụ otú oge si agbanwe ka ọ na-etolite. N'ime otu n, njikọ dị na netwọkụ na ndepụta nke ndị ọrụ ịlele ga-abụrịrị otu maka nhọrọ 5 niile.
Maka nghọta ka mma, n'okpuru bụ ihe atụ nke data emepụtara maka n= 5. "generator" edere na-ewepụta akwụkwọ ọkọwa okwu ID atọ dị ka mmepụta:

  • nke mbụ bụ maka ntinye
  • nke abụọ bụ maka ịlele
  • nke atọ - maka ihichapụ

{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 друзей

Dị ka ị pụrụ ịhụ, NJ niile karịrị 10 n'akwụkwọ ọkọwa okwu maka ịlele bụ kpọmkwem ndị ga-enye azịza ya Ụgha. Ịtinye, ịlele na ihichapụ "ndị enyi" na-eme kpọmkwem n'usoro akọwapụtara na akwụkwọ ọkọwa okwu.

Emere nnwale ahụ na laptọọpụ na-agba Windows 10, ebe HBase na-agba n'otu akpa Docker, Python na Jupyter Notebook na-agbakwa na nke ọzọ. E kenyere Docker 2 cores CPU na 2 GB nke RAM. Echiche niile, ma emuomi nke "ngwa ọnọdụ" na "piping" maka ịmepụta data ule na oge, ka edere na Python. Eji ụlọ akwụkwọ ahụ rụọ ọrụ na HBase obi ụtọ, iji gbakọọ hashes (MD5) maka nhọrọ 5 - hashlib

N'iburu n'uche ike mgbako nke otu laptọọpụ, mmalite maka n = 10, 30,… ka ahọpụtara na nnwale. 170 - mgbe ngụkọta oge ọrụ nke usoro nyocha zuru oke (ọnọdụ niile maka nhọrọ niile maka n) bụ ọbụna karịa ma ọ bụ obere ezi uche ma dabara n'oge otu tii (na nkezi 15 nkeji).

N'ebe a, ọ dị mkpa ikwupụta na na nnwale a, anyị anaghị enyocha ọnụ ọgụgụ arụmọrụ zuru oke. Ọbụna ntụnyere nke nhọrọ abụọ dị iche iche nwere ike ọ gaghị abụcha nke ọma. Ugbu a, anyị nwere mmasị na ọdịdị nke mgbanwe na oge dabere na n, ebe ọ bụ na-eburu n'uche nhazi dị n'elu nke "nnwale ule", ọ na-esiri ike ịnweta oge atụmatụ "kpochapụ" mmetụta nke random na ihe ndị ọzọ ( na arụghị ọrụ dị otú ahụ).

Nsonaazụ nnwale

Nnwale mbụ bụ ka oge ejiri dejupụta ndepụta enyi na-agbanwe. Nsonaazụ dị na eserese dị n'okpuru.
Akụkụ nke imepụta ụdị data maka NoSQL
Nhọrọ 3-5, dị ka a na-atụ anya ya, na-egosi ihe fọrọ nke nta ka ọ bụrụ oge "azụmahịa azụmahịa" na-adịgide adịgide, nke na-adabereghị na uto nke netwọk netwọk na ọdịiche na-enweghị atụ na arụmọrụ.
Nhọrọ 2 na-egosikwa arụmọrụ na-adịgide adịgide, mana ọ dị ntakịrị njọ, ihe fọrọ nke nta ka ọ bụrụ ugboro 2 kpọmkwem na nhọrọ 3-5. Ma nke a enweghị ike ịṅụrị ọṅụ, ebe ọ na-ejikọta ya na tiori - na ụdị a ọnụ ọgụgụ nke ọrụ I / O na / site na HBase bụ kpọmkwem 2 ugboro. Nke a nwere ike bụrụ ihe akaebe na-apụtaghị ìhè na bench ule anyị, n'ụkpụrụ, na-enye izi ezi.
Nhọrọ 1 kwa, dị ka a tụrụ anya ya, na-atụgharị ka ọ bụrụ nke kachasị nwayọọ ma na-egosipụta mmụba ahịrị n'oge a na-etinye n'ịgbakwunye ibe ya na nha netwọk.
Ka anyị leba anya na nsonaazụ ule nke abụọ.
Akụkụ nke imepụta ụdị data maka NoSQL
Nhọrọ 3-5 ọzọ na-akpa àgwà ka a tụrụ anya - oge na-adịgide adịgide, na-adabereghị na nha netwọk ahụ. Nhọrọ 1 na 2 na-egosi mmụba ahịrị n'oge ka nha netwọk na-abawanye na arụmọrụ yiri ya. Ọzọkwa, nhọrọ 2 na-apụta na ọ dị ntakịrị nwayọọ nwayọọ - o doro anya na ọ dị mkpa iji degharịa ma hazie kọlụm "ọnụọgụ" ọzọ, nke na-apụtawanye ìhè ka n na-etolite. Ma m ka ga-ezere ịbịaru nkwubi okwu ọ bụla, ebe ọ bụ na izi ezi nke ntụnyere a dị ntakịrị. Tụkwasị na nke a, ọnụọgụ ndị a (nke nhọrọ, 1 ma ọ bụ 2, dị ngwa ngwa) gbanwere site na-agba ọsọ na-agba ọsọ (mgbe na-ejigide ọdịdị nke ịdabere na "ịga n'olu na olu").

Ọfọn, eserese ikpeazụ bụ nsonaazụ nke nyocha mwepụ.

Akụkụ nke imepụta ụdị data maka NoSQL

Ọzọ, ọ dịghị ihe ijuanya ebe a. Nhọrọ 3-5 na-eme mwepụ na oge niile.
Ọzọkwa, na-akpali mmasị, nhọrọ 4 na 5, n'adịghị ka ndị gara aga ndapụta, na-egosi Notably ubé njọ arụmọrụ karịa nhọrọ 3. O doro anya na, ahịrị ihichapụ ọrụ dị oké ọnụ karịa na kọlụm ihichapụ ọrụ, bụ n'ozuzu ezi uche.

Nhọrọ 1 na 2, dị ka a tụrụ anya ya, na-egosi mmụba ahịrị n'oge. N'otu oge ahụ, nhọrọ 2 na-eji nwayọọ nwayọọ karịa nhọrọ 1 - n'ihi ọrụ I/O agbakwunyere iji "dobe" kọlụm ọnụ.

Nkwubi okwu izugbe nke nnwale a:

  • Nhọrọ 3-5 na-egosipụta arụmọrụ ka ukwuu ka ha na-erite uru nke HBase; Ọzọkwa, arụmọrụ ha dị iche na ibe ha site na mgbe niile ma ọ dabere na nha netwọkụ ahụ.
  • Edekọghị ọdịiche dị n'etiti nhọrọ 4 na 5. Mana nke a apụtaghị na a gaghị eji nhọrọ 5 mee ihe. O yikarịrị ka ihe ngosi nnwale ejiri, na-eburu n'uche njirimara arụmọrụ nke bench ule, ekweghị ka achọpụta ya.
  • Ọdịdị nke mmụba n'oge achọrọ iji rụọ "ọrụ azụmahịa" na data n'ozuzu kwadoro ngụkọta usoro iwu enwetara na mbụ maka nhọrọ niile.

Epilogue

Agaghị ewere nnwale siri ike emere dị ka eziokwu zuru oke. Enwere ọtụtụ ihe ndị a na-ejighị n'aka ma mebie nsonaazụ ya (mgbanwe ndị a na-ahụ anya na eserese ndị nwere obere netwọkụ). Dịka ọmụmaatụ, ọsọ nke thrift, nke a na-eji Happybase, olu na usoro nke imejuputa echiche nke m dere na Python (enweghị m ike ikwu na e dere koodu ahụ nke ọma ma jiri ike nke ihe niile mee ihe), ikekwe. atụmatụ nke caching HBase, ọrụ ndabere nke Windows 10 na laptọọpụ m, wdg. N'ozuzu, anyị nwere ike iche na ihe niile usoro usoro mgbako egosila na nnwale ha dị irè. Ọfọn, ma ọ bụ ma ọ dịghị ihe ọzọ, ọ gaghị ekwe omume ịgọnarị ha na ụdị "mwakpo isi".

Na mmechi, ndụmọdụ maka onye ọ bụla nke na-amalite chepụta ụdị data na HBase: nke sitere na ahụmịhe gara aga na-arụ ọrụ na ọdụ data mmekọrịta ma cheta “iwu” ndị a:

  • Mgbe ị na-emepụta ihe, anyị na-aga n'ihu na ọrụ na usoro nke njikwa data, ọ bụghị site na ụdị ngalaba
  • Nweta nke ọma (na-enweghị nyocha tebụl zuru ezu) - naanị site na igodo
  • Denormalization
  • Ahịrị dị iche iche nwere ike ịnwe ogidi dị iche iche
  • Ngwakọta nke ndị ọkà okwu

isi: www.habr.com

Tinye a comment