Karakteristik nan konsepsyon yon modèl done pou NoSQL

Entwodiksyon

Karakteristik nan konsepsyon yon modèl done pou NoSQL "Ou dwe kouri osi vit ke ou kapab jis pou rete an plas,
epi pou w rive yon kote, ou oblije kouri omwen de fwa pi vit!”
(c) Alice nan peyi meservey

Kèk tan de sa yo te mande m 'fè yon konferans analis yo konpayi nou an sou sijè a nan konsepsyon modèl done, paske chita sou pwojè pou yon tan long (pafwa pou plizyè ane) nou pèdi je nan sa k ap pase bò kote nou nan mond lan nan IT teknoloji. Nan konpayi nou an (li jis konsa k ap pase) anpil pwojè pa sèvi ak baz done NoSQL (omwen pou kounye a), se konsa nan konferans mwen an mwen separeman peye kèk atansyon sou yo lè l sèvi avèk egzanp lan nan HBase epi yo te eseye oryante prezantasyon an nan materyèl la nan sa yo. ki pa janm sèvi ak yo te travay. An patikilye, mwen ilistre kèk nan karakteristik yo nan konsepsyon modèl done lè l sèvi avèk yon egzanp mwen li plizyè ane de sa nan atik la "Entwodiksyon nan HB ase Schema Design" pa Amandeep Khurana. Lè m ap analize egzanp, mwen konpare plizyè opsyon pou rezoud menm pwoblèm nan yon fason pou pi byen transmèt lide prensipal yo bay odyans lan.

Dènyèman, "pa gen anyen pou m fè," mwen te poze tèt mwen kesyon an (fen semèn nan long Me nan karantèn se sitou fezab sa a), konbyen kalkil teyorik yo pral koresponn ak pratik? Aktyèlman, se konsa lide pou atik sa a te fèt. Yon pwomotè ki te travay ak NoSQL pandan plizyè jou ka pa aprann anyen nouvo nan men li (ak Se poutèt sa ka imedyatman sote mwatye atik la). Men pou analis yoPou moun ki poko travay kole kole ak NoSQL, mwen panse ke li pral itil pou jwenn yon konpreyansyon debaz sou karakteristik yo ki nan konsepsyon modèl done pou HBase.

Egzanp analiz

Dapre mwen, anvan ou kòmanse sèvi ak baz done NoSQL, ou bezwen reflechi ak anpil atansyon epi peze avantaj yo ak dezavantaj yo. Anpil fwa pwoblèm nan ka rezoud lè l sèvi avèk DBMS tradisyonèl relasyon yo. Se poutèt sa, li pi bon pou pa sèvi ak NoSQL san rezon enpòtan. Si ou sepandan deside sèvi ak yon baz done NoSQL, Lè sa a, ou ta dwe pran an kont ke apwòch yo konsepsyon isit la yo se yon ti jan diferan. Espesyalman kèk nan yo ka etranj pou moun ki te deja fè fas sèlman ak DBMS relasyon yo (dapre obsèvasyon mwen yo). Se konsa, nan mond "relasyonèl la", anjeneral nou kòmanse pa modèl domèn nan pwoblèm, epi sèlman Lè sa a, si sa nesesè, denormalize modèl la. Nan NoSQL nou ta dwe imedyatman pran an kont senaryo yo espere pou travay ak done epi okòmansman denormalize done yo. Anplis de sa, gen yon kantite lòt diferans, ki pral diskite anba a.

Ann konsidere pwoblèm "sentetik" sa a, ak ki nou pral kontinye travay:

Li nesesè pou desine yon estrikti depo pou lis zanmi itilizatè yo nan kèk rezo sosyal abstrè. Pou senplifye, nou pral asime ke tout koneksyon nou yo dirije (tankou sou Instagram, pa Linkedin). Estrikti a ta dwe pèmèt ou efektivman:

  • Reponn kesyon si wi ou non itilizatè A li itilizatè B (modèl lekti)
  • Pèmèt ajoute / retire koneksyon nan ka abònman / dezabònman itilizatè A nan itilizatè B (modèl chanjman done)

Natirèlman, gen anpil opsyon pou rezoud pwoblèm nan. Nan yon baz done relasyon regilye, nou ta gen plis chans tou senpleman fè yon tablo nan relasyon (pètèt tipifye si, pou egzanp, nou bezwen estoke yon gwoup itilizatè: fanmi, travay, elatriye, ki gen ladan "zanmi sa a"), ak optimize. vitès aksè ta ajoute endis/partitionnement. Gen plis chans tab final la ta sanble yon bagay tankou sa a:

user_id
zanmi_id

Vasya
Pyè

Vasya
Оля

apre sa, pou klè ak pi bon konpreyansyon, mwen pral endike non olye de ID

Nan ka HBase, nou konnen ke:

  • rechèch efikas ki pa lakòz yon eskanè tab konplè posib sèlman pa kle
    • an reyalite, se poutèt sa ekri demann SQL abitye ak anpil nan baz done sa yo se yon move lide; teknikman, nan kou, ou ka voye yon rechèch SQL ak Joins ak lòt lojik nan HBase soti nan menm Impala a, men ki jan efikas li pral ...

Se poutèt sa, nou fòse yo sèvi ak ID itilizatè a kòm yon kle. Ak premye panse mwen sou sijè a "ki kote ak ki jan yo estoke ID zanmi yo?" petèt yon lide pou sere yo nan kolòn. Opsyon ki pi evidan ak "nayif" sa a pral gade yon bagay tankou sa a (an nou rele li Opsyon 1 (default)pou plis referans):

RowKey
Oratè

Vasya
1: Petya
2: Olya
3: Dasha

Pyè
1: Masha
2: Vasya

Isit la, chak liy koresponn ak yon itilizatè rezo a. Kolòn yo gen non: 1, 2, ... - dapre kantite zanmi, epi ID zanmi yo estoke nan kolòn yo. Li enpòtan sonje ke chak ranje pral gen yon kantite diferan nan kolòn. Nan egzanp ki nan figi ki anwo a, yon ranje gen twa kolòn (1, 2 ak 3), ak dezyèm lan gen sèlman de (1 ak 2) - isit la nou menm nou itilize de pwopriyete HBase ke baz done relasyon pa genyen:

  • kapasite nan chanje dinamik konpozisyon kolòn (ajoute yon zanmi -> ajoute yon kolòn, retire yon zanmi -> efase yon kolòn)
  • diferan ranje ka gen diferan konpozisyon kolòn

Ann tcheke estrikti nou an pou konfòmite ak egzijans travay la:

  • Lekti done: yo nan lòd yo konprann si Vasya abònman nan Olya, nou pral bezwen soustraksyon tout liy lan pa kle RowKey = "Vasya" epi sòt nan valè kolòn yo jiskaske nou "rankontre" Olya nan yo. Oswa repete nan valè yo nan tout kolòn, "pa satisfè" Olya epi retounen repons lan Fo;
  • Edite done: ajoute yon zanmi: pou yon travay menm jan an nou bezwen tou soustraksyon tout liy lan lè l sèvi avèk kle RowKey = "Vasya" pou konte kantite total zanmi l yo. Nou bezwen kantite total zanmi sa a pou detèmine kantite kolòn kote nou bezwen ekri ID nouvo zanmi an.
  • Chanje done: efase yon zanmi:
    • Bezwen soustraksyon tout liy lan pa kle RowKey = "Vasya" epi sòt nan kolòn yo nan lòd yo jwenn youn nan ki zanmi yo dwe efase anrejistre;
    • Apre sa, apre yo fin efase yon zanmi, nou bezwen "chanje" tout done yo nan yon sèl kolòn pou yo pa jwenn "gaps" nan nimero yo.

Ann evalye kounye a ki jan pwodiktif algoritm sa yo, ke nou pral bezwen aplike sou bò "aplikasyon kondisyonèl", yo pral, lè l sèvi avèk O-senbolis. Ann endike gwosè rezo sosyal ipotetik nou an kòm n. Lè sa a, kantite maksimòm zanmi yon itilizatè ka genyen se (n-1). Nou ka plis neglije sa a (-1) pou objektif nou yo, paske nan kad itilizasyon O-senbòl li pa enpòtan.

  • Lekti done: li nesesè pou fè soustraksyon tout liy lan epi repete nan tout kolòn li yo nan limit la. Sa vle di estimasyon anwo a nan depans yo pral apeprè O (n)
  • Edite done: ajoute yon zanmi: pou detèmine kantite zanmi, ou bezwen repete nan tout kolòn yo nan ranje a, ak Lè sa a, mete yon nouvo kolòn => O(n)
  • Chanje done: efase yon zanmi:
    • Menm jan ak ajoute - ou bezwen ale nan tout kolòn nan limit la => O (n)
    • Apre yo fin retire kolòn yo, nou bezwen "deplase" yo. Si ou aplike sa a "head-on", Lè sa a, nan limit la ou pral bezwen jiska (n-1) operasyon. Men, isit la ak pi lwen nan pati nan pratik nou pral sèvi ak yon apwòch diferan, ki pral aplike yon "pseudo-chanjman" pou yon kantite fiks nan operasyon - se sa ki, tan konstan yo pral pase sou li, kèlkeswa n. Tan konstan sa a (O(2) pou egzak) ka neglije konpare ak O(n). Apwòch la ilistre nan figi ki anba a: nou tou senpleman kopye done ki soti nan "dènye" kolòn nan youn nan kote nou vle efase done, ak Lè sa a, efase dènye kolòn nan:
      Karakteristik nan konsepsyon yon modèl done pou NoSQL

An total, nan tout senaryo nou te resevwa yon konpleksite asymptotic enfòmatik nan O(n).
Ou te pwobableman deja remake ke nou prèske toujou gen li tout ranje nan baz done a, ak nan de ka soti nan twa, jis ale nan tout kolòn yo ak kalkile kantite total zanmi yo. Se poutèt sa, kòm yon tantativ nan optimize, ou ka ajoute yon kolòn "konte", ki estoke kantite total zanmi chak itilizatè rezo a. Nan ka sa a, nou pa ka li tout ranje a pou kalkile kantite total zanmi, men li sèlman yon kolòn "konte". Bagay pwensipal lan se pa bliye mete ajou "konte" lè w ap manipile done yo. Sa. nou jwenn amelyore Opsyon 2 (konte):

RowKey
Oratè

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

Pyè
1: Masha
2: Vasya

konte: 2

Konpare ak premye opsyon:

  • Lekti done: pou jwenn yon repons a kesyon "Èske Vasya li Olya?" pa gen anyen ki chanje => O(n)
  • Edite done: ajoute yon zanmi: Nou senplifye ensèsyon yon nouvo zanmi, depi kounye a nou pa bezwen li tout liy lan epi repete sou kolòn li yo, men nou ka sèlman jwenn valè kolòn "konte", elatriye. imedyatman detèmine nimewo kolòn nan mete yon nouvo zanmi. Sa a mennen nan yon rediksyon nan konpleksite enfòmatik nan O (1)
  • Chanje done: efase yon zanmi: Lè w ap efase yon zanmi, nou ka itilize kolòn sa a tou pou redwi kantite operasyon I/O lè w ap "chanje" done yo yon sèl selil sou bò gòch la. Men, bezwen nan iterasyon nan kolòn yo jwenn youn nan ki bezwen efase toujou rete, kidonk => ​​O(n)
  • Nan lòt men an, kounye a lè mete ajou done nou bezwen mete ajou kolòn nan "konte" chak fwa, men sa a pran tan konstan, ki ka neglije nan kad O-senbòl.

An jeneral, opsyon 2 sanble yon ti kras pi pi bon, men li se plis tankou "evolisyon olye de revolisyon." Pou fè yon "revolisyon" nou pral bezwen Opsyon 3 (kol).
Ann vire tout bagay "tèt anba": nou pral bay non kolòn ID itilizatè! Sa ki pral ekri nan kolòn nan li menm pa enpòtan ankò pou nou, se pou li nimewo 1 (an jeneral, bagay itil yo ka estoke la, pou egzanp, gwoup "fanmi / zanmi / elatriye."). Apwòch sa a ka sipriz "pwofye" ki pa prepare ki pa gen okenn eksperyans anvan travay ak baz done NoSQL, men se jisteman apwòch sa a ki pèmèt ou sèvi ak potansyèl HBase nan travay sa a pi efikasman:

RowKey
Oratè

Vasya
Petya: 1
Olya: 1
Dasha: 1

Pyè
Masha: 1
Vasya: 1

Isit la nou jwenn plizyè avantaj nan yon fwa. Pou konprann yo, ann analize nouvo estrikti a epi estime konpleksite enfòmatik la:

  • Lekti done: pou reponn kesyon an si Vasya abònman nan Olya, li ase li yon kolòn "Olya": si li la, Lè sa a, repons lan se Vrè, si se pa - Fo => O (1)
  • Edite done: ajoute yon zanmi: Ajoute yon zanmi: jis ajoute yon nouvo kolòn "Friend ID" => O(1)
  • Chanje done: efase yon zanmi: jis retire kolòn ID Zanmi an => O(1)

Kòm ou ka wè, yon avantaj enpòtan nan modèl sa a depo se ke nan tout senaryo yo nou bezwen, nou opere ak yon sèl kolòn, evite li tout ranje a soti nan baz done a epi, Anplis, enimere tout kolòn yo nan ranje sa a. Nou ta ka kanpe la, men...

Ou ka sezi epi ale yon ti kras pi lwen sou chemen an nan optimize pèfòmans ak diminye operasyon I/O lè w ap jwenn aksè nan baz done a. E si nou estoke enfòmasyon konplè sou relasyon an dirèkteman nan kle ranje a tèt li? Sa vle di, fè konpoze kle a tankou userID.friendID? Nan ka sa a, nou pa menm oblije li kolòn liy lan ditou (Opsyon 4 (ranje)):

RowKey
Oratè

Vasya.Petya
Petya: 1

Vasya.Olya
Olya: 1

Vasya.Dasha
Dasha: 1

Petya.Masha
Masha: 1

Petya.Vasya
Vasya: 1

Li evidan, evalyasyon an nan tout senaryo manipilasyon done nan yon estrikti konsa, tankou nan vèsyon anvan an, yo pral O (1). Diferans ak opsyon 3 a pral sèlman nan efikasite operasyon I/O nan baz done a.

Oke, dènye "banza". Li fasil pou wè ke nan opsyon 4, kle ranje a pral gen yon longè varyab, ki ka pètèt afekte pèfòmans (isit la nou sonje ke HBase estoke done kòm yon seri byte ak ranje nan tab yo klase pa kle). Anplis de sa, nou gen yon separasyon ki ka bezwen okipe nan kèk senaryo. Pou elimine enfliyans sa a, ou ka itilize hache soti nan userID ak friendID, e depi tou de hashes pral gen yon longè konstan, ou ka tou senpleman konkatenasyon yo, san yo pa yon separateur. Lè sa a, done ki nan tablo a ap gade tankou sa a (Opsyon 5 (hash)):

RowKey
Oratè

dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
Petya: 1

dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
Olya: 1

dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
Dasha: 1

1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
Masha: 1

1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
Vasya: 1

Li evidan, konpleksite algoritmik nan travay ak yon estrikti konsa nan senaryo yo nou ap konsidere yo pral menm jan ak sa yo ki nan opsyon 4 - ki se, O (1).
An total, ann rezime tout estimasyon konpleksite enfòmatik nou yo nan yon tablo:

Ajoute yon zanmi
Tcheke sou yon zanmi
Retire yon zanmi

Opsyon 1 (default)
O (n)
O (n)
O (n)

Opsyon 2 (konte)
O (1)
O (n)
O (n)

Opsyon 3 (kolòn)
O (1)
O (1)
O (1)

Opsyon 4 (ranje)
O (1)
O (1)
O (1)

Opsyon 5 (hash)
O (1)
O (1)
O (1)

Kòm ou ka wè, opsyon 3-5 sanble yo pi preferab ak teyorikman asire ekzekisyon an nan tout senaryo manipilasyon done ki nesesè nan tan konstan. Nan kondisyon travay nou an, pa gen okenn egzijans eksplisit pou jwenn yon lis tout zanmi itilizatè a, men nan aktivite pwojè reyèl, li ta bon pou nou, kòm bon analis, "antisipe" ke yon travay konsa ta ka leve ak "gaye yon pay." Se poutèt sa, senpati mwen yo sou bò a nan opsyon 3. Men, li trè posib ke nan yon pwojè reyèl demann sa a te kapab deja rezoud pa lòt mwayen, Se poutèt sa, san yon vizyon jeneral sou pwoblèm nan tout antye, li se pi bon pa fè konklizyon final yo.

Preparasyon nan eksperyans la

Mwen ta renmen teste agiman teyorik ki anwo yo an pratik - sa a te objektif lide ki te parèt pandan wikenn long la. Pou fè sa, li nesesè pou evalye vitès operasyon "aplikasyon kondisyonèl" nou an nan tout senaryo ki dekri pou itilize baz done a, osi byen ke ogmantasyon nan tan sa a ak ogmante gwosè rezo sosyal la (n). Paramèt sib ki enterese nou epi nou pral mezire pandan eksperyans lan se tan "aplikasyon kondisyonèl" pase pou fè yon "operasyon biznis". Pa "tranzaksyon biznis" nou vle di youn nan bagay sa yo:

  • Ajoute yon nouvo zanmi
  • Tcheke si Itilizatè A se yon zanmi Itilizatè B
  • Retire yon sèl zanmi

Kidonk, lè w konsidere kondisyon ki endike nan premye deklarasyon an, senaryo verifikasyon an parèt jan sa a:

  • Anrejistreman done. Owaza jenere yon rezo inisyal gwosè n. Pou jwenn pi pre "monn reyèl la", kantite zanmi chak itilizatè genyen se tou yon varyab o aza. Mezire tan pandan ke "aplikasyon kondisyonèl" nou an ekri tout done pwodwi nan HBase. Lè sa a, divize tan an ki kapab lakòz pa kantite total zanmi te ajoute - sa a se ki jan nou jwenn tan an mwayèn pou yon "operasyon biznis"
  • Lekti done. Pou chak itilizatè, kreye yon lis "pèsonalite" pou ki ou bezwen jwenn yon repons si itilizatè a abònman ak yo oswa ou pa. Longè lis la = apeprè kantite zanmi itilizatè a, ak pou mwatye nan zanmi tcheke repons lan ta dwe "Wi", ak pou lòt mwatye a - "Non". Tcheke a fèt nan yon lòd ke repons yo "Wi" ak "Non" altènatif (ki se, nan chak dezyèm ka nou pral oblije ale nan tout kolòn yo nan liy lan pou opsyon 1 ak 2). Lè sa a, total tès depistaj la divize pa kantite zanmi yo teste pou jwenn tan an mwayèn tès depistaj pou chak sijè.
  • Efase done. Retire tout zanmi nan itilizatè a. Anplis, lòd pou efase a se o aza (ki se, nou "chefeul" lis orijinal yo itilize pou anrejistre done yo). Lè sa a, total chèk la divize pa kantite zanmi yo retire pou jwenn tan an mwayèn pou chak chèk.

Senaryo yo bezwen kouri pou chak nan 5 opsyon modèl done yo ak pou diferan gwosè rezo sosyal la pou wè ki jan tan chanje pandan li ap grandi. Nan yon sèl n, koneksyon nan rezo a ak lis itilizatè yo tcheke dwe, nan kou, menm bagay la tou pou tout 5 opsyon.
Pou yon pi bon konpreyansyon, anba a se yon egzanp done pwodwi pou n= 5. "Dèlko" ​​ekri a pwodui twa diksyonè ID kòm pwodiksyon:

  • premye a se pou ensèsyon
  • dezyèm lan se pou tcheke
  • twazyèm - pou sipresyon

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

Kòm ou ka wè, tout ID ki pi gran pase 10 nan diksyonè a pou tcheke se jisteman sa yo ki pral sètènman bay repons lan Fo. Mete, tcheke ak efase "zanmi" yo fèt egzakteman nan sekans ki espesifye nan diksyonè a.

Eksperyans lan te fèt sou yon laptop ki te kouri Windows 10, kote HBase te kouri nan yon sèl veso Docker, ak Python ak Jupyter Notebook te kouri nan lòt la. Docker te resevwa 2 nwayo CPU ak 2 GB RAM. Tout lojik la, tankou imitasyon "aplikasyon an kondisyonèl" ak "kanalizasyon" pou jenere done tès ak mezire tan, te ekri nan Python. Bibliyotèk la te itilize pou travay avèk HBase happybase, pou kalkile hashes (MD5) pou opsyon 5 - hashlib

Lè w konsidere pouvwa enfòmatik yon laptop patikilye, yo te chwazi yon lansman pou n = 10, 30, ... eksperimantal. 170 - lè total tan fonksyònman sik tès konplè a (tout senaryo pou tout opsyon pou tout n) te menm plis oswa mwens rezonab ak anfòm pandan yon sèl te fèt (an mwayèn 15 minit).

Isit la li nesesè fè yon remak ke nan eksperyans sa a nou pa prensipalman evalye figi pèfòmans absoli. Menm yon konparezon relatif nan de opsyon diferan ka pa totalman kòrèk. Koulye a, nou enterese nan nati a nan chanjman an nan tan depann sou n, depi pran an kont konfigirasyon ki pi wo a nan "stand tès la", li trè difisil jwenn estimasyon tan "cleared" nan enfliyans nan o aza ak lòt faktè ( epi yo pa t fikse yon travay konsa).

Rezilta eksperyans

Premye tès la se ki jan tan ki pase ranpli lis zanmi yo chanje. Rezilta a se nan graf ki anba a.
Karakteristik nan konsepsyon yon modèl done pou NoSQL
Opsyon 3-5, jan yo espere, montre yon tan prèske konstan "tranzaksyon biznis", ki pa depann de kwasans lan nan gwosè rezo a ak yon diferans ki pa ka distenge nan pèfòmans.
Opsyon 2 montre tou pèfòmans konstan, men yon ti kras pi mal, prèske egzakteman 2 fwa parapò ak opsyon 3-5. Ak sa a pa ka rejwi, paske li korelasyon ak teyori - nan vèsyon sa a kantite operasyon I/O pou/soti nan HBase se egzakteman 2 fwa pi gwo. Sa a ka sèvi kòm prèv endirèk ke ban tès nou an, nan prensip, bay bon presizyon.
Opsyon 1 tou, jan yo espere, vin pi dousman a epi li montre yon ogmantasyon lineyè nan tan ki pase nan ajoute youn ak lòt nan gwosè rezo a.
Ann gade kounye a rezilta dezyèm tès la.
Karakteristik nan konsepsyon yon modèl done pou NoSQL
Opsyon 3-5 ankò konpòte yo jan yo espere - tan konstan, endepandan de gwosè rezo a. Opsyon 1 ak 2 demontre yon ogmantasyon lineyè nan tan kòm gwosè rezo a ogmante ak pèfòmans menm jan an. Anplis, opsyon 2 a vin yon ti kras pi dousman - aparamman akòz bezwen an koreksyon epi trete kolòn "konte" adisyonèl la, ki vin pi aparan kòm n ap grandi. Men, mwen pral toujou evite tire nenpòt konklizyon, paske presizyon nan konparezon sa a se relativman ba. Anplis de sa, rapò sa yo (ki opsyon, 1 oswa 2, se pi vit) chanje soti nan kouri nan kouri (pandan y ap kenbe nati a nan depandans la ak "ale kou ak kou").

Oke, dènye graf la se rezilta tès pou retire elèv la.

Karakteristik nan konsepsyon yon modèl done pou NoSQL

Ankò, pa gen sipriz isit la. Opsyon 3-5 fè retire nan tan konstan.
Anplis, enteresan, opsyon 4 ak 5, kontrèman ak senaryo anvan yo, montre pèfòmans yon ti kras pi mal pase opsyon 3. Aparamman, operasyon an sipresyon ranje pi chè pase operasyon an sipresyon kolòn, ki se jeneralman lojik.

Opsyon 1 ak 2, jan yo espere, demontre yon ogmantasyon lineyè nan tan. An menm tan an, opsyon 2 toujou pi dousman pase opsyon 1 - akòz operasyon I/O adisyonèl pou "kenbe" kolòn konte a.

Konklizyon jeneral nan eksperyans la:

  • Opsyon 3-5 demontre pi gwo efikasite pandan y ap pran avantaj de HBase; Anplis, pèfòmans yo diferan youn ak lòt pa yon konstan epi yo pa depann de gwosè rezo a.
  • Diferans ki genyen ant opsyon 4 ak 5 pa te anrejistre. Men, sa pa vle di ke opsyon 5 pa ta dwe itilize. Li posib ke senaryo eksperimantal la itilize, pran an kont karakteristik pèfòmans yo nan ban tès la, pa t 'pèmèt li yo dwe detekte.
  • Nati ogmantasyon nan tan ki nesesè pou fè "operasyon biznis" ak done jeneralman konfime kalkil teyorik yo te jwenn deja pou tout opsyon.

Épilogue

Eksperyans ki graj yo te pote soti pa ta dwe pran kòm verite absoli. Gen anpil faktè ki pa te pran an kont ak defòme rezilta yo (fluctuations sa yo espesyalman vizib nan graf yo ak yon ti gwosè rezo). Pou egzanp, vitès la nan thrift, ki se itilize pa happybase, volim nan ak metòd pou mete ann aplikasyon lojik ke mwen te ekri nan Python (mwen pa ka reklame ke yo te ekri kòd la pi bon ak efektivman itilize kapasite yo nan tout eleman), petèt. karakteristik yo nan kachèt HBase, aktivite background nan Windows 10 sou laptop mwen an, elatriye. An jeneral, nou ka asime ke tout kalkil teyorik te eksperimantal demontre validite yo. Oke, oswa omwen li pa t 'posib refite yo ak tankou yon "atak tèt-sou".

An konklizyon, rekòmandasyon pou tout moun ki fèk kòmanse konsepsyon modèl done nan HBase: abstrè eksperyans anvan travay ak baz done relasyon epi sonje "kòmandman" yo:

  • Lè konsepsyon, nou soti nan travay la ak modèl nan manipilasyon done, epi yo pa soti nan modèl la domèn
  • Aksè efikas (san yo pa eskanè tab konplè) - sèlman pa kle
  • Denormalizasyon
  • Ranje diferan ka genyen kolòn diferan
  • Konpozisyon dinamik nan moun ki pale

Sous: www.habr.com

Add nouvo kòmantè