Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL

fampidirana

Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL "Tsy maintsy mihazakazaka haingana araka izay tratra ianao mba hijanonana amin'ny toerany,
ary raha te ho any amin’ny toerana iray, dia tsy maintsy mihazakazaka indroa haingana kokoa ianao!”
(c) Alice in Wonderland

Nasaina nanao lahateny aho taloha kelin'izay mpandalina ny orinasanay momba ny lohahevitra momba ny famolavolana modely angon-drakitra, satria mipetraka amin'ny tetikasa mandritra ny fotoana maharitra (indraindray mandritra ny taona maromaro) dia manadino ny zava-mitranga manodidina antsika eo amin'ny tontolon'ny teknolojia IT. Ao amin'ny orinasanay (mitranga izany) tetikasa maro no tsy mampiasa angon-drakitra NoSQL (farafaharatsiny amin'izao fotoana izao), noho izany tamin'ny lahateniko dia nijery azy ireo manokana aho tamin'ny fampiasana ny ohatra momba ny HBase ary nanandrana nanosika ny fanolorana ny fitaovana ho an'ireo. izay tsy mbola nampiasa azy ireo dia niasa. Indrindra indrindra, nasehoko an-tsary ny sasany amin'ireo endri-javatra amin'ny famolavolana modely angona amin'ny fampiasana ohatra iray novakiako taona maro lasa izay ao amin'ny lahatsoratra “Introduction to HB ase Schema Design” nataon'i Amandeep Khurana. Rehefa mamakafaka ohatra aho dia nampitaha safidy maromaro hamahana olana mitovy mba hampitana tsara kokoa ny hevi-dehibe amin'ny mpihaino.

Vao haingana, "tsy misy atao", dia nanontany ny tenako ny fanontaniana aho (ny faran'ny herinandro lava amin'ny volana Mey amin'ny confinement dia tena ilaina amin'izany), ohatrinona ny kajy teorika mifanaraka amin'ny fampiharana? Raha ny marina, dia toy izao no nahaterahan'ny hevitra momba ity lahatsoratra ity. Ny mpamorona iray izay niara-niasa tamin'ny NoSQL nandritra ny andro maromaro dia mety tsy hianatra zava-baovao avy amin'izany (ary noho izany dia mety handalo avy hatrany ny antsasaky ny lahatsoratra). Fa ho an'ny mpandalinaHo an'ireo izay mbola tsy niara-niasa akaiky tamin'ny NoSQL, heveriko fa ilaina ny fahazoana fahatakarana fototra momba ny endri-pandrafetana modely data ho an'ny HBase.

Famakafakana ohatra

Raha ny hevitro, alohan'ny hanombohanao mampiasa angona NoSQL dia mila mieritreritra tsara ianao ary mandanjalanja ny tombony sy ny tsy fahampiana. Matetika ny olana dia azo vahana amin'ny fampiasana DBMS mahazatra mahazatra. Noho izany dia tsara kokoa ny tsy mampiasa NoSQL tsy misy antony lehibe. Raha nanapa-kevitra ny hampiasa angon-drakitra NoSQL ianao, dia tokony hoheverinao fa somary hafa ny fomba fiasa eto. Indrindra fa ny sasany amin'izy ireo dia mety tsy mahazatra ho an'ireo izay tsy niresaka afa-tsy tamin'ny DBMS mifandray (araka ny fahitako azy). Noho izany, amin'ny tontolon'ny "fifandraisana", matetika isika dia manomboka amin'ny famolavolana ny sehatra misy olana, ary avy eo, raha ilaina, denormalize ny modely. Ao amin'ny NoSQL izahay dia tokony handinika avy hatrany ireo toe-javatra andrasana amin'ny fiasana amin'ny angona ary amin'ny voalohany denormalize ny angona. Ankoatra izany, misy fahasamihafana hafa maromaro, izay horesahina etsy ambany.

Andeha hojerentsika ity olana "synthetic" manaraka ity, izay hotohizantsika ny asa:

Ilaina ny mamolavola rafitra fitahirizana ho an'ny lisitry ny naman'ny mpampiasa tambajotra sosialy sasany. Mba hanatsorana dia hihevitra isika fa ny fifandraisantsika rehetra dia tarihina (toy ny ao amin'ny Instagram, fa tsy Linkedin). Ny rafitra dia tokony hamela anao amin'ny fomba mahomby:

  • Valio ny fanontaniana raha mamaky ny mpampiasa B (lamina famakian-teny) ny mpampiasa A
  • Avelao ny manampy/manaisotra ny fifandraisana raha toa ka misy famandrihana/tsy famandrihana ny mpampiasa A amin'ny mpampiasa B (môdely fanovana data)

Mazava ho azy fa misy safidy maro hamahana ny olana. Amin'ny angon-drakitra ara-pifandraisana mahazatra, dia azo inoana fa hanao latabatra fifandraisana fotsiny isika (mety ho aseho raha toa ka mila mitahiry vondrona mpampiasa iray isika: fianakaviana, asa, sns., izay ahitana an'io "namana") io, ary hanatsara kokoa. ny hafainganam-pandehan'ny fidirana dia hanampy indexes/partition. Mety ho toy izao ny tabilao farany:

Anara-mpampiasa
namana_id

Vasya
Petya

Vasya
Olya

Aorian'izay, mba hahazoana fanazavana sy fahatakarana tsara kokoa, dia hanondro anarana aho fa tsy ID

Raha ny momba ny HBase dia fantatsika fa:

  • azo atao ny fikarohana mahomby izay tsy miteraka tabilao feno amin'ny alalan'ny fanalahidy ihany
    • raha ny marina, izany no mahatonga ny fanoratana fanontaniana SQL mahazatra ny maro amin'ireo tahiry toy izany dia hevitra ratsy; ara-teknika, mazava ho azy, azonao atao ny mandefa fangatahana SQL miaraka amin'ny Joins sy lojika hafa amin'ny HBase avy amin'ny Impala iray ihany, fa ny fahombiazan'izany ...

Noho izany, voatery mampiasa ny ID mpampiasa ho fanalahidy izahay. Ary ny eritreritro voalohany momba ny lohahevitra hoe "aiza ary ahoana no hitehirizana ny kaontin'ny namana?" mety hevitra ny hitahiry azy ireo amin'ny tsanganana. Ity safidy miharihary indrindra sy "naive" ity dia hitovy amin'izany (aleo atao hoe Safidy 1 (default)raha mila fanazavana fanampiny):

RowKey
tsanganana

Vasya
1: Pety
2: Oly
3: Dasy

Petya
1: Masy
2: Vasy

Eto, ny andalana tsirairay dia mifanitsy amin'ny mpampiasa tambajotra iray. Ny tsanganana dia manana anarana: 1, 2, ... - araka ny isan'ny namana, ary ny ID ny namana dia voatahiry ao amin'ny tsanganana. Zava-dehibe ny manamarika fa ny andalana tsirairay dia hanana isan'ny tsanganana. Ao amin'ny ohatra eo amin'ny sary etsy ambony, ny andalana iray dia misy tsanganana telo (1, 2 ary 3), ary ny faharoa dia manana roa (1 sy 2) ihany - eto izahay dia nampiasa fananana HBase roa izay tsy ananan'ny tahiry fifandraisana:

  • ny fahafahana manova ny firafitry ny tsanganana (manampy namana -> manampy tsanganana, manala namana -> mamafa tsanganana)
  • ny andalana samy hafa dia mety manana tsanganana samihafa

Andeha hojerentsika ny rafitra misy antsika amin'ny fanarahana ny fepetra takian'ny asa:

  • Famakiana angona: Mba hahatakarana raha misoratra amin'i Olya i Vasya dia mila manaisotra isika ny andalana manontolo amin'ny alàlan'ny fanalahidy RowKey = "Vasya" ary alaivo ny soatoavin'ny tsanganana mandra-pahatongantsika "hihaona" amin'i Olya ao aminy. Na avereno amin'ny soatoavin'ny tsanganana rehetra, "tsy mihaona" Olya ary avereno ny valiny diso;
  • Fanovana angona: manampy namana: ho an'ny asa mitovy amin'izany koa dia mila esorina ny andalana manontolo mampiasa ny lakile RowKey = “Vasya” hikarohana ny fitambaran'ny isan'ny namany. Mila io fitambaran'ny namana io isika mba hamaritana ny isan'ny tsanganana izay ilaintsika hanoratana ny ID ny namana vaovao.
  • Fanovana angona: famafana namana:
    • Mila esorina ny andalana manontolo amin'ny alàlan'ny fanalahidy RowKey = "Vasya" ary alaivo ny tsanganana mba hahitana ilay iray izay misy ny namana hofafana noraketina;
    • Manaraka, aorian'ny famafana namana iray dia mila "mamindra" ny angon-drakitra rehetra amin'ny tsanganana iray isika mba tsy hisian'ny "gaps" amin'ny isany.

Andeha hodinihintsika izao ny maha-vokatra ireo algorithms, izay ilaintsika hampiharina amin'ny lafiny "fampiharana misy fepetra", amin'ny fampiasana O-symbolism. Andeha hojerentsika ny haben'ny tambajotra sosialy vinavinaina ho n. Avy eo ny isan'ny namana ambony indrindra azon'ny mpampiasa iray dia (n-1). Azontsika atao an-tsirambina izany (-1) izany ho an'ny tanjontsika, satria ao anatin'ny rafitry ny fampiasana O-symbole dia tsy misy dikany izany.

  • Famakiana angona: ilaina ny manaisotra ny tsipika manontolo ary mamerina amin'ny alàlan'ny tsanganany rehetra ao amin'ny fetra. Midika izany fa eo amin'ny O(n) ny tombana ambony amin'ny fandaniana.
  • Fanovana angona: manampy namana: Mba hamaritana ny isan'ny namana dia mila mamerina ny tsanganana rehetra amin'ny laharana ianao, ary ampidiro tsanganana vaovao => O(n)
  • Fanovana angona: famafana namana:
    • Mitovy amin'ny fanampiana - mila mandalo ny tsanganana rehetra ao amin'ny fetra => O(n)
    • Aorian'ny fanesorana ireo tsanganana dia mila "mamindra" azy ireo isika. Raha mampihatra an'io "head-on" io ianao, amin'ny fetra dia mila hetsika (n-1) ianao. Saingy eto ary amin'ny ampahany azo ampiharina dia hampiasa fomba hafa isika, izay hampihatra "pseudo-shift" ho an'ny asa maromaro - izany hoe, ny fotoana tsy tapaka dia handany izany, na inona na inona n. Io fotoana tsy tapaka (O(2) ho marimarina kokoa) io dia azo atao tsinontsinona raha oharina amin'ny O(n). Ny fomba fiasa dia aseho amin'ny sary etsy ambany: mandika tsotra izao ny angona avy amin'ny tsanganana "farany" mankany amin'ny iray izay tiantsika hamafa ny angona, ary mamafa ny tsanganana farany:
      Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL

Amin'ny fitambarany, amin'ny toe-javatra rehetra dia nahazo ny fahasarotan'ny computational asymptotic an'ny O (n).
Efa voamarikao angamba fa saika tsy maintsy mamaky ny andalana manontolo avy amin'ny angon-drakitra foana isika, ary amin'ny tranga roa amin'ny telo, mba handehanana amin'ny tsanganana rehetra sy kajy ny isan'ny namana. Noho izany, amin'ny fiezahana amin'ny fanatsarana, azonao atao ny manampy tsanganana "fanisana", izay mitahiry ny fitambaran'ny namana tsirairay amin'ny mpampiasa tambajotra. Amin'ity tranga ity, tsy afaka mamaky ny laharana manontolo isika mba hikajiana ny fitambaran'ny isan'ny namana, fa mamaky tsanganana "fanisana" iray ihany. Ny zava-dehibe dia ny tsy hanadino ny fanavaozana ny "fanisana" rehefa manodinkodina data. Izany. mihatsara isika Safidy 2 (isa):

RowKey
tsanganana

Vasya
1: Pety
2: Oly
3: Dasy
isa: 3

Petya
1: Masy
2: Vasy

isa: 2

Raha oharina amin'ny safidy voalohany:

  • Famakiana angona: mba hahazoana valiny amin'ny fanontaniana hoe "Namaky an'i Olya ve i Vasya?" tsy nisy niova => O(n)
  • Fanovana angona: manampy namana: Nohamafisina ny fampidirana namana vaovao, satria tsy mila mamaky ny tsipika manontolo isika ary mamerina ny tsanganany, fa ny sandan'ny tsanganana "fanisana", sns. mamaritra avy hatrany ny laharana tsanganana hampidirana namana vaovao. Izany dia mitarika amin'ny fampihenana ny fahasarotan'ny kajy amin'ny O (1)
  • Fanovana angona: famafana namana: Rehefa mamafa namana dia azontsika ampiasaina ihany koa ity tsanganana ity mba hampihenana ny isan'ny asa I/O rehefa "mamindra" ny angona amin'ny sela iray miankavia. Saingy mbola mijanona ny filàna ny famerenana amin'ny alàlan'ny tsanganana mba hahitana ilay tokony hofafana, ka => ​​O(n)
  • Amin'ny lafiny iray, amin'izao fotoana izao rehefa manavao ny angon-drakitra dia mila manavao ny tsanganana "fanisana" isaky ny mandeha isika, saingy mitaky fotoana tsy tapaka izany, izay azo atao tsinontsinona ao anatin'ny rafitry ny O-symbols.

Amin'ny ankapobeny, ny safidy 2 dia toa tsara kokoa, fa toy ny "evolisiona fa tsy revolisiona." Mba hanaovana "revolisiona" dia mila isika Safidy 3 (col).
Andao hamadika ny zava-drehetra "mivadika": hanendry isika ID mpampiasa anarana tsanganana! Tsy zava-dehibe amintsika intsony izay hosoratana ao amin’ny tsanganana, aoka ho laharana 1 (amin’ny ankapobeny dia azo tehirizina ao ny zavatra mahasoa, ohatra, ny vondrona “fianakaviana/namana/sns.”). Ity fomba fiasa ity dia mety hahagaga ny "laika" tsy vonona izay tsy manana traikefa teo aloha niasa tamin'ny angon-drakitra NoSQL, saingy io fomba io indrindra no ahafahanao mampiasa ny mety ho an'ny HBase amin'ity asa ity amin'ny fomba mahomby kokoa:

RowKey
tsanganana

Vasya
Pety: 1
Oly: 1
Dasy: 1

Petya
Masha: 1
Vasy: 1

Eto isika dia mahazo tombony maromaro indray mandeha. Mba hahatakarana azy ireo, andao hamakafaka ny rafitra vaovao ary tombantombana ny fahasarotan'ny kajy:

  • Famakiana angona: Mba hamaliana ny fanontaniana raha misoratra anarana amin'i Olya i Vasya, dia ampy ny mamaky tsanganana iray "Olya": raha misy izany, dia marina ny valiny, raha tsy izany - Diso => ​​O(1)
  • Fanovana angona: manampy namana: Manampy namana: asio tsanganana vaovao “ID Friend” => O(1)
  • Fanovana angona: famafana namana: esory fotsiny ny tsanganana Friend ID => O(1)

Araka ny hitanao, ny tombony lehibe amin'ity modely fitahirizana ity dia ny hoe amin'ny toe-javatra rehetra ilaintsika, dia tsanganana iray ihany no miasa, misoroka ny famakiana ny andalana manontolo avy amin'ny angon-drakitra ary, ankoatra izany, ny manisa ny tsanganana rehetra amin'ity laharana ity. Afaka nijanona teo izahay, saingy...

Mety ho very hevitra ianao ary handeha lavidavitra kokoa amin'ny alàlan'ny fanatsarana ny fampisehoana sy ny fampihenana ny asa I/O rehefa miditra amin'ny angon-drakitra. Ahoana raha voatahiry mivantana ao amin'ny fanalahidin'ny laharana ny fampahalalana momba ny fifandraisana feno? Izany hoe, ataovy toy ny userID.friendID ny key composite? Amin'ity tranga ity, tsy mila mamaky ny tsanganana amin'ny tsipika mihitsy isika (Safidy 4 (andalana)):

RowKey
tsanganana

Vasya.Petya
Pety: 1

Vasya.Olya
Oly: 1

Vasya.Dasha
Dasy: 1

Petya.Masha
Masha: 1

Petya.Vasya
Vasy: 1

Mazava ho azy fa ny fanombanana ny toe-javatra fanodinkodinana data rehetra amin'ny rafitra toy izany, toy ny tamin'ny dikan-teny teo aloha, dia ho O(1). Ny fahasamihafana amin'ny safidy 3 dia ho amin'ny fahombiazan'ny asa I/O ao amin'ny tahiry.

Eny, ny "tsipìka" farany. Mora ny mahita fa amin'ny safidy 4, ny fanalahidin'ny laharana dia hanana halavany miovaova, izay mety hisy fiantraikany amin'ny fahombiazany (eto no tadidintsika fa ny HBase dia mitahiry angon-drakitra toy ny andian-bytes ary ny andalana amin'ny tabilao dia alaina amin'ny fanalahidy). Fanampin'izay dia manana separator izahay izay mety mila karakaraina amin'ny toe-javatra sasany. Mba hanesorana an'io fitaomana io dia azonao atao ny mampiasa hash avy amin'ny userID sy friendID, ary satria samy hanana halavany tsy tapaka izy roa, dia azonao atao ny mampifandray azy ireo fotsiny, tsy misy mpizara. Dia ho toy izao ny angona ao amin'ny tabilao (Safidy 5 (hash)):

RowKey
tsanganana

dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
Pety: 1

dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
Oly: 1

dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
Dasy: 1

1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
Masha: 1

1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
Vasy: 1

Mazava ho azy fa ny fahasarotan'ny algorithm amin'ny fiasana amin'ny rafitra toy izany amin'ireo toe-javatra eritreretintsika dia hitovy amin'ny an'ny safidy 4 - izany hoe, O (1).
Amin'ny fitambarany, andao hamintina ny tombatombana rehetra momba ny fahasarotan'ny kajy ao anaty tabilao iray:

Manampy namana
Mijery namana
Manala namana

Safidy 1 (default)
izy)
izy)
izy)

Safidy 2 (isa)
O (1)
izy)
izy)

Safidy 3 (tsanganana)
O (1)
O (1)
O (1)

Safidy 4 (andalana)
O (1)
O (1)
O (1)

Safidy 5 (hash)
O (1)
O (1)
O (1)

Araka ny hitanao, ny safidy 3-5 dia toa ny tiana indrindra ary ara-teorika miantoka ny fanatanterahana ireo toe-javatra fanodinkodinana rehetra ilaina amin'ny fotoana tsy tapaka. Ao anatin'ny fepetran'ny asantsika dia tsy misy fepetra mazava hahazoana ny lisitry ny naman'ny mpampiasa rehetra, fa amin'ny hetsika tena tetikasa dia tsara ho antsika, amin'ny maha-mpamakafaka tsara, ny "miandrandra" fa mety hipoitra ny asa toy izany ary "manaparitaka mololo." Noho izany, ny fangorahako dia eo amin'ny lafiny 3. Saingy azo inoana fa amin'ny tetikasa tena izy dia mety ho voavaha amin'ny fomba hafa io fangatahana io, noho izany, raha tsy misy ny fahitana ankapobeny momba ny olana manontolo, dia tsara kokoa ny tsy manao izany. fehin-kevitra farany.

Fanomanana ny fanandramana

Te-hitsapa ireo tohan-kevitra ara-teorika etsy ambony aho amin'ny fampiharana - izany no tanjon'ny hevitra nipoitra nandritra ny faran'ny herinandro. Mba hanaovana izany, dia ilaina ny manombatombana ny hafainganam-pandehan'ny "fampiharana misy fepetra" amin'ny toe-javatra voalaza rehetra momba ny fampiasana ny angon-drakitra, ary koa ny fitomboana amin'izao fotoana izao miaraka amin'ny haben'ny tambajotra sosialy (n). Ny mari-pamantarana kendrena izay mahaliana antsika ary horefesintsika mandritra ny andrana dia ny fotoana lanin'ny "fampiharana misy fepetra" hanatanterahana ny "asa fandraharahana" iray. Amin'ny hoe "transaction business" dia iray amin'ireto manaraka ireto no tiana holazaina:

  • Manampy namana vaovao iray
  • Manamarina raha naman'ny mpampiasa B ny mpampiasa A
  • Manala namana iray

Noho izany, raha raisina ny fepetra voalaza ao amin'ny fanambarana voalohany, dia miseho toy izao manaraka izao ny scenario fanamarinana:

  • Firaketana angona. Mamorona tamba-jotra voalohany misy habe n. Mba hanakaiky kokoa ny "tontolo tena izy", dia miovaova kisendrasendra ihany koa ny isan'ny namana ananan'ny mpampiasa tsirairay. Refesina ny fotoana hanoratan'ny “fampiharana misy fepetra” ny angon-drakitra voavolavola rehetra ao amin'ny HBase. Zarao amin'ny isan'ny namana fanampiny ny fotoana aterak'izany - izany no fomba ahazoantsika ny salan'isa fotoana ho an'ny "asa fandraharahana" iray.
  • Famakiana angona. Ho an'ny mpampiasa tsirairay, mamorona lisitr'ireo "olona" izay ilainao hahazoana valiny na misoratra anarana amin'izy ireo ilay mpampiasa na tsia. Ny halavan'ny lisitra = eo ho eo ny isan'ny naman'ny mpampiasa, ary ho an'ny antsasaky ny namana voamarika ny valiny dia tokony ho "Eny", ary ho an'ny antsasany hafa - "Tsia". Ny fanamarinana dia atao amin'ny filaharana toy izany fa ny valiny "Eny" sy "Tsia" dia mifandimby (izany hoe isaky ny faharoa dia tsy maintsy mandalo ny tsanganana rehetra amin'ny andalana isika amin'ny safidy 1 sy 2). Ny fitambaran'ny fotoana fitiliana dia zaraina amin'ny isan'ny namana notsapaina mba hahazoana ny salan'isan'ny fotoana fitiliana isaky ny taranja.
  • Famafana angona. Esory ny namana rehetra amin'ny mpampiasa. Ankoatr'izay, ny baiko famafana dia kisendrasendra (izany hoe "manakorontana" ny lisitra tany am-boalohany ampiasaina handrakitra ny angona). Ny fitambaran'ny fotoana fisavana dia zaraina amin'ny isan'ny namana nesorina mba hahazoana ny salan'ny fotoana isaky ny seky.

Ny toe-javatra dia tokony hapetraka ho an'ny tsirairay amin'ireo safidy modely data 5 sy ho an'ny habe samihafa amin'ny tambajotra sosialy hahitana ny fiovan'ny fotoana rehefa mitombo. Ao anatin'ny iray n, ny fifandraisana ao amin'ny tambajotra sy ny lisitry ny mpampiasa hojerena dia tsy maintsy, mazava ho azy, mitovy amin'ny safidy 5 rehetra.
Mba hahatakarana tsara kokoa, eto ambany ny ohatra momba ny angon-drakitra novokarina ho an'ny n= 5. Ny “generator” voasoratra dia mamokatra rakibolana ID telo ho vokatra:

  • ny voalohany dia ny fampidirana
  • ny faharoa dia ny fanamarinana
  • fahatelo - ho famafana

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

Araka ny hitanao, ny ID rehetra mihoatra ny 10 ao amin'ny rakibolana ho an'ny fanamarinana dia ireo izay azo antoka fa hanome valiny diso. Ny fampidirana, ny fanamarinana ary ny famafana ny "namana" dia atao araka ny filaharana voatondro ao amin'ny rakibolana.

Ny andrana dia natao tamin'ny solosaina finday Windows 10, izay nihazakazaka tao amin'ny container Docker iray i HBase, ary ny Python miaraka amin'ny Jupyter Notebook dia nihazakazaka tao amin'ny iray hafa. Docker dia nomena cores 2 CPU sy 2 GB an'ny RAM. Nosoratana tamin'ny Python ny lojika rehetra, toy ny fakan-tahaka ny “fampiharana fepetra” sy ny “piping” amin'ny famokarana angona fitsapana sy fandrefesana ny fotoana. Nampiasaina hiasa amin'ny HBase ny tranomboky happybase, hanisa ny hash (MD5) ho an'ny safidy 5 - hashlib

Raha raisina ny herin'ny informatika an'ny solosaina finday iray, dia nofantenana andrana ny fandefasana n = 10, 30, …. 170 – raha ny fitambaran'ny fotoana fiasan'ny tsingerin'ny fitsapana feno (ny toe-javatra rehetra ho an'ny safidy rehetra ho an'ny n rehetra) dia mbola mitombina kokoa na tsy dia nety loatra nandritra ny fety dite iray (15 minitra eo ho eo).

Eto dia ilaina ny manamarika fa amin'ity andrana ity dia tsy manombatombana voalohany indrindra ny tarehimarika mahomby tanteraka. Na ny fampitahana amin'ny safidy roa samy hafa aza dia mety tsy ho marina tanteraka. Ankehitriny isika dia liana amin'ny toetran'ny fiovan'ny fotoana miankina amin'ny n, satria raha jerena ny fanamafisam-peo etsy ambony amin'ny "fijoroana fitsapana", dia sarotra be ny mahazo tombantomban'ny fotoana "voadio" amin'ny fiantraikan'ny kisendrasendra sy ny antony hafa ( ary ny asa toy izany dia tsy napetraka).

Vokatra andrana

Ny fitsapana voalohany dia ny fiovan'ny fotoana lany amin'ny famenoana ny lisitry ny namana. Ny valiny dia eo amin'ny tabilao etsy ambany.
Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL
Ny safidy 3-5, araka ny efa nampoizina, dia mampiseho ny fotoana "fifandraisana raharaham-barotra" saika tsy mitsaha-mitombo, izay tsy miankina amin'ny fitomboan'ny haben'ny tambajotra sy ny tsy fitoviana tsy hay lazaina amin'ny fampisehoana.
Ny safidy 2 koa dia mampiseho fampisehoana tsy tapaka, saingy somary ratsy kokoa, saika in-2 katroka raha oharina amin'ny safidy 3-5. Ary tsy afaka ny hifaly izany, satria mifandray amin'ny teoria - amin'ity dikan-teny ity ny isan'ny asa I / O mankany / avy amin'ny HBase dia avo roa heny. Izany dia mety ho porofo ankolaka fa ny dabilio fitsapana, raha ny fitsipika, dia manome marina tsara.
Ny safidy 1 ihany koa, araka ny efa nampoizina, dia hita ho miadana indrindra ary mampiseho fitomboana andalana amin'ny fotoana lany amin'ny fifanampiana amin'ny haben'ny tambajotra.
Andeha hojerentsika izao ny vokatry ny fitsapana faharoa.
Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL
Safidy 3-5 indray mandeha araka ny efa nampoizina - fotoana tsy tapaka, tsy miankina amin'ny haben'ny tambajotra. Ny safidy 1 sy 2 dia mampiseho fisondrotan'ny tsipika amin'ny fotoana rehefa mitombo ny haben'ny tambajotra sy ny fampisehoana mitovy. Ambonin'izany, ny safidy 2 dia lasa miadana kely - toa noho ny filàna fanitsiana sy fanodinana ny tsanganana "fanisana" fanampiny, izay miharihary kokoa rehefa mitombo ny n. Saingy mbola tsy hanatsoaka hevitra aho, satria somary ambany ny fahamarinan'ity fampitahana ity. Ankoatra izany, ireo ratios ireo (izay safidy, 1 na 2, no haingana kokoa) dia niova avy amin'ny hazakazaka mankany amin'ny hazakazaka (raha mitazona ny toetran'ny fiankinan-doha sy ny "mandeha vozony sy vozony").

Eny, ny kisary farany dia vokatry ny fitiliana fanesorana.

Endri-javatra amin'ny famolavolana modely angona ho an'ny NoSQL

Averina indray, tsy misy surprise eto. Ny safidy 3-5 dia manao fanesorana amin'ny fotoana tsy tapaka.
Ankoatra izany, mahaliana, safidy 4 sy 5, tsy toy ny teo aloha toe-javatra, dia mampiseho tsikaritra somary ratsy kokoa noho ny safidy 3. Raha ny hita, ny asa famafana andalana dia lafo kokoa noho ny asa famafana tsanganana, izay amin'ny ankapobeny lojika.

Ny safidy 1 sy 2, araka ny efa nampoizina, dia mampiseho fisondrotry ny fotoana. Mandritra izany fotoana izany, ny safidy 2 dia miadana kokoa noho ny safidy 1 - noho ny fiasan'ny I/O fanampiny mba "hitazona" ny tsanganana fanisana.

Fehiny ankapoben'ny andrana:

  • Ny safidy 3-5 dia mampiseho fahombiazana bebe kokoa rehefa manararaotra ny HBase; Ankoatr'izay, ny fahombiazan'izy ireo dia tsy mitovy amin'ny tsirairay ary tsy miankina amin'ny haben'ny tambajotra.
  • Ny fahasamihafana eo amin'ny safidy 4 sy 5 dia tsy voarakitra. Saingy tsy midika izany fa tsy tokony hampiasaina ny safidy 5. Azo inoana fa ny scenario andrana ampiasaina, raha jerena ny toetra mampiavaka ny dabilio fitsapana, dia tsy namela azy ho hita.
  • Ny toetry ny fitomboan'ny fotoana takiana amin'ny fanatanterahana ny "asa fandraharahana" miaraka amin'ny angon-drakitra amin'ny ankapobeny dia nanamafy ny kajikajy teorika azo teo aloha ho an'ny safidy rehetra.

epilogue

Tsy tokony horaisina ho fahamarinana tanteraka ireo andrana henjana natao. Betsaka ny anton-javatra tsy nodinihina sy nanova ny vokatra (ireo fiovaovana ireo dia hita indrindra amin'ny grafika misy habe kely). Ohatra, ny hafainganam-pandehan'ny fitsitsiana, izay ampiasain'ny happybase, ny volume sy ny fomba fampiharana ny lojika izay nosoratako tamin'ny Python (tsy azoko lazaina fa nosoratana tamin'ny fomba tsara sy nampiasa ny fahaiza-manaon'ny singa rehetra ny code), angamba ny endriky ny caching HBase, ny hetsika afara Windows 10 amin'ny solosainako, sns. Amin'ny ankapobeny, azontsika atao ny mihevitra fa ny kajy ara-teorika rehetra dia naneho andrana ny fahamarinany. Eny ary, na farafaharatsiny, tsy azo atao ny manohitra azy ireo amin'ny "fanafihana an-doha" toy izany.

Ho fehin-kevitra, tolo-kevitra ho an'ny rehetra izay vao manomboka mamolavola modely angon-drakitra ao amin'ny HBase: avy amin'ny traikefa teo aloha niasa tamin'ny angon-drakitra mifandraika ary tsarovy ny "didy":

  • Rehefa mamolavola dia miainga avy amin'ny asa sy ny lamin'ny fanodinkodinana angon-drakitra isika, fa tsy avy amin'ny modely sehatra
  • Fidirana mahomby (tsy misy scan latabatra feno) – amin'ny alalan'ny fanalahidy ihany
  • Denormalization
  • Ny andalana samihafa dia mety ahitana tsanganana samihafa
  • Dynamic composition ny mpandahateny

Source: www.habr.com

Add a comment