Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL

Ifihan

Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL “O ni lati sare bi o ṣe le kan lati duro si aaye,
ati lati de ibikan, o ni lati sare o kere ju lẹmeji ni iyara!”
(c) Alice ni Wonderland

Ni akoko diẹ sẹhin a beere lọwọ mi lati fun ikẹkọ kan atunnkanka ile-iṣẹ wa lori koko ti sisọ awọn awoṣe data, nitori joko lori awọn iṣẹ akanṣe fun igba pipẹ (nigbakugba fun ọdun pupọ) a padanu oju ohun ti n ṣẹlẹ ni ayika wa ni agbaye ti awọn imọ-ẹrọ IT. Ninu ile-iṣẹ wa (o kan ṣẹlẹ) ọpọlọpọ awọn iṣẹ akanṣe ko lo awọn apoti isura infomesonu NoSQL (o kere ju fun bayi), nitorinaa ninu ikẹkọ mi Mo ṣe akiyesi diẹ si wọn lọtọ ni lilo apẹẹrẹ ti HBase ati gbiyanju lati ṣe itọsọna igbejade ohun elo naa si awọn yẹn. ti o ti ko lo wọn ti sise. Ni pato, Mo ṣe apejuwe diẹ ninu awọn ẹya ara ẹrọ ti apẹrẹ awoṣe data nipa lilo apẹẹrẹ ti mo ka ni ọpọlọpọ ọdun sẹyin ninu nkan naa “Ifihan si HB ase Schema Design” nipasẹ Amandeep Khurana. Nígbà tí mo bá ń ṣàyẹ̀wò àwọn àpẹẹrẹ, mo fi ọ̀pọ̀lọpọ̀ ọ̀nà wéra láti yanjú ìṣòro kan náà kí wọ́n lè túbọ̀ gbé àwọn ọ̀rọ̀ àkọ́kọ́ lé àwọn ará lọ́wọ́.

Laipẹ, “Laisi nkankan lati ṣe,” Mo beere lọwọ ara mi ibeere naa (ọsẹ ipari gigun ni ipinya ni May jẹ pataki julọ si eyi), melo ni awọn iṣiro imọ-jinlẹ yoo baamu adaṣe? Lootọ, iyẹn ni bii imọran fun nkan yii ṣe bi. Olùgbéejáde ti o ti n ṣiṣẹ pẹlu NoSQL fun ọpọlọpọ awọn ọjọ le ma kọ ohunkohun titun lati ọdọ rẹ (ati nitorina o le foju idaji nkan naa lẹsẹkẹsẹ). Sugbon fun atunnkankaFun awọn ti ko tii ṣiṣẹ ni pẹkipẹki pẹlu NoSQL, Mo gbagbọ pe yoo wulo fun nini oye ipilẹ ti awọn ẹya ti sisọ awọn awoṣe data fun HBase.

Apeere onínọmbà

Ni ero mi, ṣaaju ki o to bẹrẹ lilo awọn apoti isura infomesonu NoSQL, o nilo lati ronu daradara ki o ṣe iwọn awọn anfani ati awọn konsi. Nigbagbogbo iṣoro naa le ṣee yanju ni lilo awọn DBMS ti ibatan ibile. Nitorinaa, o dara ki a ma lo NoSQL laisi awọn idi pataki. Ti o ba pinnu lati lo data NoSQL kan, lẹhinna o yẹ ki o ṣe akiyesi pe awọn isunmọ apẹrẹ nibi yatọ ni itumo. Paapa diẹ ninu wọn le jẹ dani fun awọn ti o ti ṣe tẹlẹ pẹlu awọn DBMS ti ibatan nikan (gẹgẹ bi awọn akiyesi mi). Nitorinaa, ni agbaye “ibasepo”, a maa n bẹrẹ nipasẹ ṣiṣe awoṣe agbegbe iṣoro, ati pe lẹhinna, ti o ba jẹ dandan, denomalize awoṣe naa. Ni NoSQL a yẹ ki o lẹsẹkẹsẹ ṣe akiyesi awọn oju iṣẹlẹ ti a nireti fun ṣiṣẹ pẹlu data ati ni ibẹrẹ denomalize awọn data. Ni afikun, nibẹ ni o wa nọmba kan ti miiran iyato, eyi ti yoo wa ni sísọ ni isalẹ.

Jẹ ki a wo iṣoro “sintetiki” atẹle, pẹlu eyiti a yoo tẹsiwaju lati ṣiṣẹ:

O jẹ dandan lati ṣe apẹrẹ eto ibi ipamọ kan fun atokọ ti awọn ọrẹ ti awọn olumulo ti diẹ ninu nẹtiwọọki awujọ áljẹbrà. Lati rọrun, a yoo ro pe gbogbo awọn asopọ wa ni itọsọna (bii lori Instagram, kii ṣe Linkedin). Eto naa yẹ ki o gba ọ laaye lati munadoko:

  • Dahun ibeere boya olumulo A ka olumulo B (apẹẹrẹ kika)
  • Gba fifikun/yọkuro awọn isopọ ni ọran ti ṣiṣe-alabapin/igbasilẹ ti olumulo A lati olumulo B (awoṣe iyipada data)

Nitoribẹẹ, awọn aṣayan pupọ wa lati yanju iṣoro naa. Ninu ibi ipamọ data ibatan deede, a le ṣe tabili awọn ibatan nirọrun (o ṣee ṣe afihan ti, fun apẹẹrẹ, a nilo lati ṣafipamọ ẹgbẹ olumulo kan: ẹbi, iṣẹ, ati bẹbẹ lọ, eyiti o pẹlu “ọrẹ” yii) ati lati mu dara si. iyara wiwọle yoo ṣafikun awọn atọka / ipin. O ṣeese julọ tabili ti o kẹhin yoo dabi nkan bi eyi:

Idanimọ olumulo
ọrẹ_id

Vasya
Petya

Vasya
Olya

lẹyìn náà, fun wípé ati ki o dara oye, Emi yoo tọkasi awọn orukọ dipo ti ID

Ninu ọran ti HBase, a mọ pe:

  • wiwa daradara ti ko ja si ni kikun tabili ọlọjẹ ṣee ṣe iyasọtọ nipa bọtini
    • ni otitọ, idi idi ti kikọ awọn ibeere SQL si iru awọn apoti isura data ti o mọmọ si ọpọlọpọ jẹ ero buburu; ni imọ-ẹrọ, nitorinaa, o le fi ibeere SQL ranṣẹ pẹlu Awọn Ijọpọ ati ọgbọn miiran si HBase lati Impala kanna, ṣugbọn bawo ni yoo ṣe munadoko to…

Nitorinaa, a fi agbara mu lati lo ID olumulo bi bọtini. Ati ero akọkọ mi lori koko-ọrọ “ibo ati bawo ni a ṣe le fipamọ awọn ID awọn ọrẹ?” boya ero lati fi wọn pamọ sinu awọn ọwọn. Eyi ti o han gedegbe ati aṣayan “aiṣedeede” yoo dabi iru eyi (jẹ ki a pe Aṣayan 1 (aiyipada)fun itọkasi siwaju sii):

RowKey
Awọn agbọrọsọ

Vasya
1: Petya
2: Olya
3: Dásà

Petya
1: Masha
2: Vasya

Nibi, laini kọọkan ni ibamu si olumulo nẹtiwọọki kan. Awọn ọwọn ni awọn orukọ: 1, 2, ... - gẹgẹbi nọmba awọn ọrẹ, ati awọn ID ti awọn ọrẹ ti wa ni ipamọ ninu awọn ọwọn. O ṣe pataki lati ṣe akiyesi pe ila kọọkan yoo ni nọmba oriṣiriṣi ti awọn ọwọn. Ni apẹẹrẹ ni nọmba ti o wa loke, ọna kan ni awọn ọwọn mẹta (1, 2 ati 3), ati keji ni meji nikan (1 ati 2) - nibi awa tikararẹ lo awọn ohun-ini HBase meji ti awọn apoti isura data ibatan ko ni:

  • agbara lati yi iyipada awọn akojọpọ ti awọn ọwọn pada (fi ọrẹ kun -> ṣafikun iwe kan, yọọrẹ ọrẹ kan kuro -> paarẹ iwe kan)
  • orisirisi awọn ori ila le ni orisirisi awọn iwe akopo

Jẹ ki a ṣayẹwo eto wa fun ibamu pẹlu awọn ibeere ti iṣẹ-ṣiṣe naa:

  • Data kika: lati le ni oye boya Vasya ti ṣe alabapin si Olya, a yoo nilo lati yọkuro gbogbo ila nipasẹ bọtini RowKey = “Vasya” ati lẹsẹsẹ nipasẹ awọn iye ọwọn titi ti a fi “pade” Olya ninu wọn. Tabi ṣe atunwo nipasẹ awọn iye ti gbogbo awọn ọwọn, “ko pade” Olya ki o da idahun Eke pada;
  • Nsatunkọ awọn data: fifi a ore: fun iṣẹ-ṣiṣe ti o jọra a tun nilo lati yọkuro gbogbo ila lilo bọtini RowKey = "Vasya" lati ka iye apapọ awọn ọrẹ rẹ. A nilo apapọ nọmba awọn ọrẹ lati pinnu nọmba ti ọwọn ninu eyiti a nilo lati kọ ID ti ọrẹ tuntun naa.
  • Iyipada data: piparẹ ọrẹ kan:
    • Nilo lati yọkuro gbogbo ila nipasẹ awọn bọtini RowKey = "Vasya" ati ki o to nipasẹ awọn ọwọn ni ibere lati wa awọn ọkan ninu eyi ti awọn ọrẹ lati wa ni paarẹ ti wa ni gba silẹ;
    • Nigbamii ti, lẹhin piparẹ ọrẹ kan, a nilo lati “yi lọ” gbogbo data sinu iwe kan ki o má ba gba “awọn ela” ninu nọmba wọn.

Jẹ ki a ṣe ayẹwo ni bayi bi awọn algoridimu wọnyi ṣe mujade, eyiti a yoo nilo lati ṣe ni ẹgbẹ “ohun elo ipo”, yoo jẹ, ni lilo O-aami. Jẹ ká tọkasi awọn iwọn ti wa hypothetical awujo nẹtiwọki bi n. Lẹhinna nọmba ti o pọju awọn ọrẹ ti olumulo kan le ni ni (n-1). A le tun gbagbe eyi (-1) fun awọn idi wa, nitori laarin ilana ti lilo awọn aami-O ko ṣe pataki.

  • Data kika: o jẹ dandan lati yọkuro gbogbo laini naa ki o tun ṣe nipasẹ gbogbo awọn ọwọn rẹ ni opin. Eyi tumọ si iṣiro oke ti awọn idiyele yoo jẹ isunmọ O(n)
  • Nsatunkọ awọn data: fifi a ore: lati pinnu nọmba awọn ọrẹ, o nilo lati ṣe atunwo nipasẹ gbogbo awọn ọwọn ti ila naa, lẹhinna fi iwe tuntun kan sii => O(n)
  • Iyipada data: piparẹ ọrẹ kan:
    • Iru si fifi kun - o nilo lati lọ nipasẹ gbogbo awọn ọwọn ni opin => O(n)
    • Lẹhin yiyọ awọn ọwọn, a nilo lati “gbe” wọn. Ti o ba ṣe “ori-lori” yii, lẹhinna ni opin iwọ yoo nilo awọn iṣẹ ṣiṣe (n-1). Ṣugbọn nibi ati siwaju ni apakan ti o wulo a yoo lo ọna ti o yatọ, eyiti yoo ṣe imuse “pseudo-shift” fun nọmba awọn iṣẹ ṣiṣe ti o wa titi - iyẹn ni, akoko igbagbogbo yoo lo lori rẹ, laibikita n. Akoko igbagbogbo yii (O(2) lati jẹ deede) le jẹ igbagbe ni akawe si O (n). Ọna naa jẹ apejuwe ninu nọmba ti o wa ni isalẹ: a daakọ data nirọrun lati iwe “kẹhin” si eyiti a fẹ lati paarẹ data rẹ, lẹhinna paarẹ iwe ti o kẹhin:
      Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL

Lapapọ, ni gbogbo awọn oju iṣẹlẹ a gba idiju iṣiro asymptotic ti O(n).
O ti ṣe akiyesi tẹlẹ pe a fẹrẹẹ nigbagbogbo ni lati ka gbogbo kana lati ibi ipamọ data, ati ni awọn ọran meji ninu mẹta, o kan lati lọ nipasẹ gbogbo awọn ọwọn ati ṣe iṣiro nọmba apapọ awọn ọrẹ. Nitorinaa, bi igbiyanju ni iṣapeye, o le ṣafikun iwe “ka” kan, eyiti o tọju nọmba lapapọ ti awọn ọrẹ ti olumulo nẹtiwọọki kọọkan. Ni idi eyi, a ko le ka gbogbo kana lati ṣe iṣiro awọn lapapọ nọmba ti awọn ọrẹ, ṣugbọn ka nikan kan "ka" iwe. Ohun akọkọ kii ṣe lati gbagbe lati ṣe imudojuiwọn “ka” nigbati o ba n ṣakoso data. Iyẹn. a ni ilọsiwaju Aṣayan 2 (ka):

RowKey
Awọn agbọrọsọ

Vasya
1: Petya
2: Olya
3: Dásà
iye: 3

Petya
1: Masha
2: Vasya

iye: 2

Ti a ṣe afiwe si aṣayan akọkọ:

  • Data kika: lati gba idahun si ibeere naa "Ṣe Vasya ka Olya?" Ko si ohun ti o yipada => O(n)
  • Nsatunkọ awọn data: fifi a ore: A ti ṣe simplified awọn ifibọ ti a titun ore, niwon bayi a ko nilo lati ka gbogbo ila ati iterate lori awọn oniwe-ọwọn, sugbon le nikan gba awọn iye ti awọn "ka" iwe, ati be be lo. lẹsẹkẹsẹ pinnu nọmba ọwọn lati fi ọrẹ tuntun sii. Eyi nyorisi idinku ninu idiju iṣiro si O(1)
  • Iyipada data: piparẹ ọrẹ kan: Nigba piparẹ ọrẹ kan, a tun le lo iwe yii lati dinku nọmba awọn iṣẹ I / O nigbati "n yi pada" data ọkan alagbeka si apa osi. Ṣugbọn iwulo lati ṣe atunṣe nipasẹ awọn ọwọn lati wa eyi ti o nilo lati paarẹ ṣi wa, nitorinaa => ​​O(n)
  • Ni apa keji, ni bayi nigbati a ba n ṣe imudojuiwọn data a nilo lati ṣe imudojuiwọn iwe “ka” ni gbogbo igba, ṣugbọn eyi gba akoko igbagbogbo, eyiti o le gbagbe laarin ilana ti awọn aami-O.

Ni gbogbogbo, aṣayan 2 dabi pe o dara julọ, ṣugbọn o dabi “itankalẹ dipo iyipada.” Lati ṣe "iyika" a yoo nilo Aṣayan 3 (col).
Jẹ ki a yi ohun gbogbo pada "lodindi": a yoo pin iwe orukọ olumulo ID! Ohun ti yoo kọ sinu iwe tikararẹ ko ṣe pataki fun wa, jẹ ki o jẹ nọmba 1 (ni apapọ, awọn ohun elo ti o wulo le wa ni ipamọ nibẹ, fun apẹẹrẹ, ẹgbẹ "ẹbi / awọn ọrẹ / ati bẹbẹ lọ."). Ọna yii le ṣe ohun iyanu fun “layman” ti ko mura silẹ ti ko ni iriri iṣaaju ti n ṣiṣẹ pẹlu awọn apoti isura infomesonu NoSQL, ṣugbọn o jẹ deede ọna yii ti o fun ọ laaye lati lo agbara ti HBase ni iṣẹ yii ni imunadoko diẹ sii:

RowKey
Awọn agbọrọsọ

Vasya
Petya: 1
Olya: 1
Dáṣá: 1

Petya
Masha: 1
Vasya: 1

Nibi ti a gba orisirisi awọn anfani ni ẹẹkan. Lati loye wọn, jẹ ki a ṣe itupalẹ eto tuntun ati ṣe iṣiro idiju iṣiro:

  • Data kika: lati le dahun ibeere boya Vasya ti ṣe alabapin si Olya, o to lati ka iwe kan "Olya": ti o ba wa nibẹ, lẹhinna idahun jẹ Otitọ, ti kii ba ṣe - Eke => O(1)
  • Nsatunkọ awọn data: fifi a ore: Ṣafikun ọrẹ kan: kan ṣafikun iwe tuntun “ID Ọrẹ” => O(1)
  • Iyipada data: piparẹ ọrẹ kan: kan yọ iwe ID Ọrẹ kuro => O(1)

Gẹgẹbi o ti le rii, anfani pataki ti awoṣe ipamọ yii ni pe ni gbogbo awọn oju iṣẹlẹ ti a nilo, a ṣiṣẹ pẹlu iwe kan nikan, yago fun kika gbogbo ila lati ibi ipamọ data ati, pẹlupẹlu, ṣe iṣiro gbogbo awọn ọwọn ti ila yii. A le duro nibẹ, ṣugbọn ...

O le ṣe iyalẹnu ki o lọ siwaju diẹ si ọna ti iṣapeye iṣẹ ati idinku awọn iṣẹ I/O nigbati o wọle si ibi ipamọ data. Kini ti a ba tọju alaye ibatan pipe ni taara ni bọtini ila funrararẹ? Iyẹn ni, ṣe akojọpọ bọtini bii userID.friendID? Ni idi eyi, a ko paapaa ni lati ka awọn ọwọn ti laini rara (Aṣayan 4 (ila)):

RowKey
Awọn agbọrọsọ

Vasya.Petya
Petya: 1

Vasya.Olya
Olya: 1

Vasya.Dasha
Dáṣá: 1

Petya.Masha
Masha: 1

Petya.Vasya
Vasya: 1

O han ni, igbelewọn ti gbogbo awọn oju iṣẹlẹ ifọwọyi data ni iru eto kan, bi ninu ẹya ti tẹlẹ, yoo jẹ O (1). Iyatọ pẹlu aṣayan 3 yoo jẹ nikan ni ṣiṣe ti awọn iṣẹ I/O ni ibi ipamọ data.

O dara, "ọrun" ti o kẹhin. O rọrun lati rii pe ni aṣayan 4, bọtini ila yoo ni ipari oniyipada, eyiti o le ni ipa lori iṣẹ ṣiṣe (nibi a ranti pe HBase tọju data bi ṣeto ti awọn baiti ati awọn ori ila ni awọn tabili lẹsẹsẹ nipasẹ bọtini). Pẹlupẹlu a ni oluyapa ti o le nilo lati ni ọwọ ni diẹ ninu awọn oju iṣẹlẹ. Lati yọkuro ipa yii, o le lo awọn hashes lati olumulo ID ati friendID, ati pe niwọn igba ti awọn hashes mejeeji yoo ni gigun igbagbogbo, o le ṣajọpọ wọn nirọrun, laisi oluyapa. Lẹhinna data ti o wa ninu tabili yoo dabi eyi (Aṣayan 5 (hash)):

RowKey
Awọn agbọrọsọ

dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
Petya: 1

dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
Olya: 1

dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
Dáṣá: 1

1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
Masha: 1

1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
Vasya: 1

O han ni, alugoridimu complexity ti ṣiṣẹ pẹlu iru kan be ni awọn oju iṣẹlẹ ti a ti wa ni considering yoo jẹ kanna bi ti o ti aṣayan 4 - ti o ni, O(1).
Ni apapọ, jẹ ki a ṣe akopọ gbogbo awọn iṣiro wa ti idiju iširo ni tabili kan:

Fifi a ore
Ṣiṣayẹwo lori ọrẹ kan
Yiyọ a ore

Aṣayan 1 (aiyipada)
O (n)
O (n)
O (n)

Aṣayan 2 (ka)
Ìwọ (1)
O (n)
O (n)

Aṣayan 3 (iwe)
Ìwọ (1)
Ìwọ (1)
Ìwọ (1)

Aṣayan 4 (ila)
Ìwọ (1)
Ìwọ (1)
Ìwọ (1)

Aṣayan 5 (hash)
Ìwọ (1)
Ìwọ (1)
Ìwọ (1)

Bii o ti le rii, awọn aṣayan 3-5 dabi ẹni pe o jẹ ayanfẹ julọ ati imọ-jinlẹ rii daju ipaniyan gbogbo awọn oju iṣẹlẹ ifọwọyi data pataki ni akoko igbagbogbo. Ni awọn ipo ti iṣẹ-ṣiṣe wa, ko si ibeere ti o han gbangba lati gba atokọ ti gbogbo awọn ọrẹ olumulo, ṣugbọn ninu awọn iṣẹ akanṣe gidi, yoo dara fun wa, gẹgẹbi awọn atunnkanka to dara, lati “reti” pe iru iṣẹ-ṣiṣe le dide ati “tan koriko kan.” Nitorinaa, awọn iyọnu mi wa ni ẹgbẹ aṣayan 3. Ṣugbọn o ṣee ṣe pe ninu iṣẹ akanṣe gidi ibeere yii le ti yanju tẹlẹ nipasẹ awọn ọna miiran, nitorinaa, laisi iran gbogbogbo ti gbogbo iṣoro naa, o dara ki a ma ṣe. ipari ipari.

Igbaradi ti awọn ṣàdánwò

Emi yoo fẹ lati ṣe idanwo awọn ariyanjiyan imọ-jinlẹ ti o wa loke ni iṣe - eyi ni ibi-afẹde ti imọran ti o dide ni ipari ipari ipari. Lati ṣe eyi, o jẹ dandan lati ṣe iṣiro iyara iṣiṣẹ ti “ohun elo ipo” wa ni gbogbo awọn oju iṣẹlẹ ti a ṣalaye fun lilo ibi ipamọ data, ati ilosoke ni akoko yii pẹlu iwọn npo ti nẹtiwọọki awujọ (n). Paramita ibi-afẹde ti o nifẹ si wa ati eyiti a yoo wọn lakoko idanwo naa ni akoko ti o lo nipasẹ “ohun elo ipo” lati ṣe ọkan “iṣẹ iṣowo”. Nipa “idunadura iṣowo” a tumọ si ọkan ninu atẹle naa:

  • Fifi ọkan titun ore
  • Ṣiṣayẹwo boya Olumulo A jẹ ọrẹ ti olumulo B
  • Yọ ọrẹ kan kuro

Nitorinaa, ni akiyesi awọn ibeere ti a ṣe ilana ni alaye ibẹrẹ, oju iṣẹlẹ ijẹrisi farahan bi atẹle:

  • Gbigbasilẹ data. Laileto ṣe ina nẹtiwọki ibẹrẹ ti iwọn n. Lati sunmọ “aye gidi”, nọmba awọn ọrẹ ti olumulo kọọkan ni tun jẹ oniyipada laileto. Ṣe iwọn akoko lakoko eyiti “ohun elo ipo” wa kọ gbogbo data ti ipilẹṣẹ si HBase. Lẹhinna pin akoko abajade nipasẹ apapọ nọmba awọn ọrẹ ti a ṣafikun - eyi ni bii a ṣe gba akoko apapọ fun “iṣẹ iṣowo” kan.
  • Data kika. Fun olumulo kọọkan, ṣẹda atokọ ti “awọn eniyan” fun eyiti o nilo lati gba idahun boya olumulo ti ṣe alabapin si wọn tabi rara. Gigun ti atokọ = isunmọ nọmba awọn ọrẹ olumulo, ati fun idaji awọn ọrẹ ti a ṣayẹwo idahun yẹ ki o jẹ “Bẹẹni”, ati fun idaji miiran - “Bẹẹkọ”. Ayẹwo naa ni a ṣe ni iru aṣẹ ti awọn idahun “Bẹẹni” ati “Bẹẹkọ” miiran (iyẹn ni, ni gbogbo ọran keji a yoo ni lati lọ nipasẹ gbogbo awọn ọwọn ti laini fun awọn aṣayan 1 ati 2). Lapapọ akoko ibojuwo lẹhinna pin nipasẹ nọmba awọn ọrẹ ti o ni idanwo lati gba akoko iboju apapọ fun koko-ọrọ.
  • Npa data rẹ kuro. Yọ gbogbo awọn ọrẹ kuro ni olumulo. Pẹlupẹlu, aṣẹ piparẹ jẹ laileto (iyẹn ni, a “dapọ” atokọ atilẹba ti a lo lati ṣe igbasilẹ data naa). Lapapọ akoko ayẹwo lẹhinna pin nipasẹ nọmba awọn ọrẹ ti a yọkuro lati gba akoko apapọ fun ayẹwo.

Awọn oju iṣẹlẹ nilo lati ṣiṣẹ fun ọkọọkan awọn aṣayan awoṣe data 5 ati fun awọn titobi oriṣiriṣi ti nẹtiwọọki awujọ lati rii bi akoko ṣe yipada bi o ti n dagba. Laarin ọkan n, awọn asopọ ninu nẹtiwọọki ati atokọ awọn olumulo lati ṣayẹwo gbọdọ, dajudaju, jẹ kanna fun gbogbo awọn aṣayan 5.
Fun oye to dara julọ, ni isalẹ jẹ apẹẹrẹ ti data ti ipilẹṣẹ fun n= 5. “Ipilẹṣẹ” ti a kọ silẹ ṣe agbejade awọn iwe-itumọ ID mẹta bi iṣelọpọ:

  • akọkọ jẹ fun ifibọ
  • keji jẹ fun ayẹwo
  • kẹta – fun piparẹ

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

Gẹgẹbi o ti le rii, gbogbo awọn ID ti o tobi ju 10 ninu iwe-itumọ fun ṣiṣayẹwo jẹ awọn ti yoo fun idahun dajudaju Eke. Fi sii, ṣayẹwo ati piparẹ “awọn ọrẹ” ni a ṣe ni deede ni ọkọọkan ti a ṣalaye ninu iwe-itumọ.

A ṣe idanwo naa lori kọǹpútà alágbèéká kan ti n ṣiṣẹ Windows 10, níbi tí HBase ti ń ṣiṣẹ́ nínú àpótí Docker kan, àti Python pẹ̀lú Jupyter Notebook ń ṣiṣẹ́ nínú òmíràn. A pín Docker sí àwọn kọ́ọ̀bù CPU méjì àti 2 GB ti RAM. Gbogbo ìlànà, títí kan ìṣe àfarawé "ohun èlò ìwádìí aláìláàánú" àti ètò fún ṣíṣe dátà ìdánwò àti wíwọ̀n àkókò, ni a kọ sínú Python. Ilé ìkàwé náà happybase, lati ṣe iṣiro hashes (MD5) fun aṣayan 5 - hashlib

Ni akiyesi agbara iširo ti kọǹpútà alágbèéká kan pato, ifilọlẹ kan fun n = 10, 30, … ti yan ni idanwo. 170 – nigbati lapapọ awọn ọna akoko ti awọn kikun igbeyewo ọmọ (gbogbo awọn oju iṣẹlẹ fun gbogbo awọn aṣayan fun gbogbo n) je ani diẹ ẹ sii tabi kere si reasonable ati fit nigba ọkan tii party (ni apapọ 15 iṣẹju).

Nibi o jẹ dandan lati ṣe akiyesi pe ninu idanwo yii a ko ṣe iṣiro nipataki awọn isiro iṣẹ ṣiṣe pipe. Paapaa lafiwe ibatan ti awọn aṣayan meji ti o yatọ le ma jẹ deede patapata. Bayi a nifẹ si iru iyipada ni akoko ti o da lori n, niwọn bi o ti ṣe akiyesi iṣeto ni oke ti “iduro idanwo”, o nira pupọ lati gba awọn iṣiro akoko “sọ” ti ipa ti ID ati awọn ifosiwewe miiran ( ati pe a ko ṣeto iru iṣẹ bẹẹ).

Abajade idanwo

Idanwo akọkọ jẹ bi akoko ti o lo lati kun atokọ awọn ọrẹ ṣe yipada. Abajade wa ninu aworan ti o wa ni isalẹ.
Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL
Awọn aṣayan 3-5, bi o ti ṣe yẹ, ṣafihan akoko “iṣiro iṣowo” igbagbogbo nigbagbogbo, eyiti ko dale lori idagba ti iwọn nẹtiwọọki ati iyatọ ti ko ṣe iyatọ ninu iṣẹ.
Aṣayan 2 tun fihan igbagbogbo, ṣugbọn iṣẹ ṣiṣe ti o buru diẹ, o fẹrẹ to awọn akoko 2 deede ni ibatan si awọn aṣayan 3-5. Ati pe eyi ko le yọyọ, nitori pe o ni ibamu pẹlu imọ-jinlẹ - ninu ẹya yii nọmba awọn iṣẹ I / O si / lati HBase jẹ awọn akoko 2 ni deede. Eyi le ṣiṣẹ bi ẹri aiṣe-taara pe ibujoko idanwo wa, ni ipilẹ, pese deede to dara.
Aṣayan 1 tun, bi o ti ṣe yẹ, wa jade lati jẹ o lọra ati ṣe afihan ilosoke laini ni akoko ti o lo lori fifi ara wọn kun si iwọn nẹtiwọki naa.
Jẹ ki a wo awọn abajade idanwo keji.
Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL
Awọn aṣayan 3-5 tun huwa bi o ti ṣe yẹ - akoko igbagbogbo, ominira ti iwọn nẹtiwọọki. Awọn aṣayan 1 ati 2 ṣe afihan ilosoke laini ni akoko bi iwọn nẹtiwọọki n pọ si ati iṣẹ ṣiṣe ti o jọra. Pẹlupẹlu, aṣayan 2 jade lati jẹ diẹ lọra - nkqwe nitori iwulo lati ṣe atunṣe ati ilana iwe-iwe “ka” afikun, eyiti o di akiyesi diẹ sii bi n dagba. Ṣugbọn Emi yoo tun yago fun yiya awọn ipinnu eyikeyi, nitori pe deede ti lafiwe yii jẹ kekere. Ni afikun, awọn ipin wọnyi (eyi ti aṣayan, 1 tabi 2, yiyara) yipada lati ṣiṣe lati ṣiṣe (lakoko ti o n ṣetọju iseda ti igbẹkẹle ati “lọ ọrun ati ọrun”).

O dara, ayaworan ti o kẹhin jẹ abajade idanwo yiyọ kuro.

Awọn ẹya ara ẹrọ ti ṣe apẹrẹ awoṣe data fun NoSQL

Lẹẹkansi, ko si iyanilẹnu nibi. Awọn aṣayan 3-5 ṣe yiyọ kuro ni akoko igbagbogbo.
Pẹlupẹlu, iyanilenu, awọn aṣayan 4 ati 5, ko dabi awọn oju iṣẹlẹ ti tẹlẹ, ṣafihan iṣẹ ṣiṣe ti o buru diẹ sii ju aṣayan 3. Nkqwe, iṣẹ piparẹ laini jẹ gbowolori diẹ sii ju iṣẹ piparẹ ọwọn, eyiti o jẹ ọgbọn gbogbogbo.

Awọn aṣayan 1 ati 2, bi o ti ṣe yẹ, ṣe afihan ilosoke laini ni akoko. Ni akoko kanna, aṣayan 2 jẹ o lọra nigbagbogbo ju aṣayan 1 lọ - nitori iṣẹ I/O afikun lati “tọju” iwe kika.

Awọn ipinnu gbogbogbo ti idanwo naa:

  • Awọn aṣayan 3-5 ṣe afihan ṣiṣe ti o tobi ju bi wọn ṣe lo anfani ti HBase; Pẹlupẹlu, iṣẹ wọn yatọ si ibatan si ara wọn nipasẹ igbagbogbo ati ko da lori iwọn nẹtiwọọki naa.
  • Iyatọ laarin awọn aṣayan 4 ati 5 ko ṣe igbasilẹ. Ṣugbọn eyi ko tumọ si pe aṣayan 5 ko yẹ ki o lo. O ṣeese pe oju iṣẹlẹ idanwo ti a lo, ni akiyesi awọn abuda iṣẹ ti ibujoko idanwo, ko gba laaye lati rii.
  • Iseda ti ilosoke ni akoko ti o nilo lati ṣe “awọn iṣẹ iṣowo” pẹlu data gbogbogbo jẹrisi awọn iṣiro imọ-jinlẹ ti o gba tẹlẹ fun gbogbo awọn aṣayan.

Imudaniloju

Àwọn àyẹ̀wò lílágbára wọ̀nyí kò yẹ kí a gbà gẹ́gẹ́ bí òótọ́ pátápátá. Ọ̀pọ̀lọpọ̀ nǹkan ló wà tí a kò kà sí, tí wọ́n sì yí àwọn àbájáde padà (àwọn ìyípadà wọ̀nyí hàn gbangba ní pàtàkì nínú àwọn àwòrán fún àwọn ìwọ̀n nẹ́tíwọ́ọ̀kì kékeré). Fún àpẹẹrẹ, iyára ìtọ́jú owó, tí happybase ń lò, ìwọ̀n àti ọ̀nà ìṣiṣẹ́ ti ìlànà tí mo kọ nínú Python (Èmi kò lè sọ pé a kọ koodu náà lọ́nà tó dára tàbí a lo gbogbo àwọn ẹ̀yà ara rẹ̀ dáadáa), bóyá àwọn ẹ̀yà ara ìpamọ́ HBase, àti ìṣiṣẹ́ ẹ̀yìn. Windows 10 Lórí kọ̀ǹpútà alágbèéká mi, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ. Ní gbogbogbòò, a lè parí èrò sí pé gbogbo àwọn èrò ìjìnlẹ̀ ni a ti fi ìwádìí hàn pé ó tọ́. Tàbí ó kéré tán, kò ṣeé ṣe láti fi irú ìkọlù òdì bẹ́ẹ̀ kọ wọ́n.

Ni ipari, awọn iṣeduro fun gbogbo eniyan ti o bẹrẹ lati ṣe apẹrẹ awọn awoṣe data ni HBase: áljẹbrà lati iriri iṣaaju ti n ṣiṣẹ pẹlu awọn apoti isura infomesonu ibatan ati ranti “awọn aṣẹ”:

  • Nigbati o ba n ṣe apẹrẹ, a tẹsiwaju lati iṣẹ-ṣiṣe ati awọn ilana ti ifọwọyi data, kii ṣe lati awoṣe ibugbe
  • Wiwọle to munadoko (laisi ọlọjẹ tabili ni kikun) - nipasẹ bọtini nikan
  • Denormalization
  • Awọn ori ila oriṣiriṣi le ni awọn ọwọn oriṣiriṣi ninu
  • Ìmúdàgba tiwqn ti agbohunsoke

orisun: www.habr.com

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster