Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Fanombohana - jereo ny fizarana 1.

3. Variant amin'ny rafitra rehefa mampiasa globals

Ny rafitra toy ny hazo voabaiko dia manana tranga manokana isan-karazany. Andeha hodinihintsika ireo manana lanja azo ampiharina rehefa miara-miasa amin'ny globals.

3.1 Raharaha manokana 1. Node iray tsy misy rantsana


Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Ny Globals dia azo ampiasaina tsy ho toy ny array ihany, fa toy ny variables mahazatra ihany koa. Ohatra, toy ny counter:

Set ^counter = 0  ; установка счётчика
Set id=$Increment(^counter) ;  атомарное инкрементирование

Amin'ity tranga ity, ny global, ankoatra ny dikany, dia mety manana sampana ihany koa. Tsy manilika ny iray ny iray.

3.2 Raharaha manokana 2. Iray vertex sy sampana maro

Amin'ny ankapobeny, ity dia fototra sanda fototra mahazatra. Ary raha mitahiry soatoavina iray ho sanda isika, dia hahazo latabatra tena mahazatra misy fanalahidy fototra.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

Mba hampiharana latabatra amin'ny globals dia tsy maintsy mamorona andalana avy amin'ny soatoavin'ny tsanganana isika, ary avy eo mitahiry azy ireo amin'ny global amin'ny fampiasana ny fanalahidy fototra. Mba hahafahana mizara ny tady ho tsanganana indray rehefa mamaky dia azonao ampiasaina:

  1. endri-tsoratra delimiter.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. rafitra henjana izay ipetrahan'ny saha tsirairay ny isa efa voafaritra mialoha. Toy ny atao amin'ny database relational.
  3. asa manokana $LB (misy ao amin'ny Cache), izay mamorona tady sanda.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Mahaliana fa tsy sarotra ny mampiasa globals mba hanaovana zavatra mitovy amin'ny fanondro faharoa amin'ny angon-drakitra mifandraika. Andeha isika hiantso ny rafitra index globals. Ny index global dia hazo fanampiana ho an'ny fikarohana haingana ireo saha izay tsy anisan'ny fanalahidy voalohany amin'ny eran-tany. Mba hamenoana azy sy hampiasana azy dia mila manoratra code fanampiny ianao.

Andao hamorona index global amin'ny tsanganana voalohany.

Set ^i("col11", id1) = 1
Set ^i("col12", id2) = 1

Ankehitriny, mba hikaroka fampahalalana haingana ao amin'ny tsanganana voalohany, dia tsy maintsy mijery ny eran-tany isika ^i ary tadiavo ireo fanalahidy fototra (id) mifanaraka amin'ny sanda irina amin'ny tsanganana voalohany.

Rehefa mampiditra sanda dia afaka mamorona avy hatrany ny sanda sy ny index globals ho an'ny saha ilaina. Ary ho an'ny fahamendrehana, andao hofonosina amin'ny fifampiraharahana izany rehetra izany.

TSTART
Set ^t(id1) = $LB("col11", "col21", "col31")
Set ^i("col11", id1) = 1
TCOMMIT

Ny antsipiriany momba ny fomba hanaovana izany amin'ny M tabilao momba ny globals, fakan-tahaka ny fanondro faharoa.

Ny tabilao toy izany dia hiasa haingana toy ny amin'ny angon-drakitra nentim-paharazana (na haingana kokoa aza) raha toa ka voasoratra ao amin'ny COS/M ny fiasa amin'ny fampidirana/fanavaozana/famafana andalana.Nojereko ity fanambarana ity tamin'ny fitsapana momba ny INSERT sy SELECT betsaka amin'ny latabatra misy tsanganana roa, anisan'izany ny fampiasana ny baiko TSTART sy TCOMMIT (transactions).

Tsy nanandrana toe-javatra sarotra kokoa aho miaraka amin'ny fidirana miaraka sy ny fifanakalozana mifanitsy.

Raha tsy mampiasa fifampiraharahana, ny tahan'ny fampidirana dia 778 insert/segondra isaky ny sandany.
Miaraka amin'ny sanda 300 tapitrisa - 422 fampidirana / segondra.

Rehefa mampiasa fifanakalozana - 572 insert/segondra ho an'ny 082M insert. Ny asa rehetra dia natao tamin'ny kaody M natambatra.
Ny kapila mafy dia mahazatra fa tsy SSD. RAID5 miaraka amin'ny Write-back. Phenom II 1100T processeur.

Mba hitsapana ny angona SQL amin'ny fomba mitovy amin'izany dia mila manoratra fomba fiasa voatahiry ianao izay hanao fampidirana ao anaty loop. Rehefa nanandrana MySQL 5.5 (fitehirizana InnoDB), tamin'ny fampiasana an'io fomba io dia nahazo isa tsy mihoatra ny 11K isan-tsegondra aho.
Eny, ny fampiharana ny latabatra amin'ny globals dia toa sarotra kokoa noho ny amin'ny angona fifandraisana. Noho izany, ny angona indostrialy amin'ny eran-tany dia manana fidirana SQL hanatsorana ny asa miaraka amin'ny angona tabilao.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Amin'ny ankapobeny, raha tsy miova matetika ny schema data, ny hafainganam-pandehan'ny fampidirana dia tsy mitsikera ary ny angon-drakitra manontolo dia azo aseho mora foana amin'ny endrika latabatra mahazatra, dia mora kokoa ny miara-miasa amin'ny SQL, satria manome ambaratonga ambony kokoa ny abstraction. .

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Amin'ity tranga manokana ity dia tiako ny hampiseho izany globals dia afaka miasa ho toy ny mpanorina amin'ny famoronana angon-drakitra hafa. Toy ny assembler izay azo soratana amin'ny fiteny hafa. Ireto misy ohatra momba ny fomba ahafahanao mamorona analogue amin'ny globals key-value, lists, sets, tabular, document-oriented databases.

Raha mila mamorona karazana angona tsy manara-penitra miaraka amin'ny ezaka kely ianao dia tokony hijery ny globals.

3.3 Tranga manokana 3. Hazo ambaratonga roa, ny node tsirairay amin'ny ambaratonga faharoa dia manana sampana raikitra

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Azo inoana fa noeritreretinao izany: fampiharana hafa amin'ny tabilao amin'ny globals ity. Ampitahao amin’ny teo aloha io fampiharana io.

Tabilao amin'ny hazo roa ambaratonga vs. amin'ny hazo tokana.

Минусы
Плюсы

  1. Miadana kokoa ny fampidirana, satria mila mametraka ny isan'ny nodes mitovy amin'ny isan'ny tsanganana ianao.
  2. Fanjifana habaka kapila bebe kokoa. Satria ny fanondro maneran-tany (fantatra amin'ny anarana hoe indexe array) miaraka amin'ny anaran'ny tsanganana dia maka toerana malalaka ary adika ho an'ny andalana tsirairay.

  1. Fidirana haingana kokoa amin'ny sandan'ny tsanganana tsirairay, satria tsy ilaina ny manara-maso ny tady. Araka ny fitsapana nataoko dia 11,5% haingana kokoa amin'ny tsanganana 2 ary bebe kokoa amin'ny tsanganana maro kokoa.
  2. Mora kokoa ny manova ny schema data
  3. Kaody mazava kokoa

famaranana: tsy ho an'ny rehetra. Satria ny hafainganam-pandeha dia iray amin'ireo tombontsoa lehibe indrindra amin'ny eran-tany, tsy dia misy dikany loatra ny fampiasana an'io fampiharana io, satria mety tsy hanao haingana kokoa noho ny tabilao ao amin'ny angon-drakitra mifandraika izy io.

3.4 Raharaha ankapobeny. Hazo sy hazo nanafatra

Ny rafitra angon-drakitra rehetra izay azo aseho ho hazo dia mifanentana tsara amin'ny globals.

3.4.1 Zavatra misy lohahevitra

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

Ity no faritry ny fampiasana nentim-paharazana manerantany. Ao amin'ny sehatry ny fitsaboana dia misy aretina marobe, fanafody, soritr'aretina ary fomba fitsaboana. Tsy mitombina ny mamorona latabatra misy saha iray tapitrisa ho an'ny marary tsirairay. Ambonin'izany, ho foana ny 99% amin'ny saha.

Alaivo sary an-tsaina ny angon-drakitra SQL misy tabilao: "marary" ~ saha 100, "Fitsaboana" - saha 000, "Fitsaboana" - saha 100, "Complications" - saha 000, sns. sy ny sisa. Na azonao atao ny mamorona angon-drakitra misy latabatra an'arivony, tsirairay ho an'ny karazana marary manokana (ary afaka mifanipaka izy ireo!), fitsaboana, fanafody, ary latabatra an'arivony hafa ho an'ny fifandraisana eo amin'ireo latabatra ireo.

Ny Globals dia mety tsara amin'ny fitsaboana, satria mamela anao hamorona famaritana marina momba ny tantarany ara-pitsaboana, fitsaboana isan-karazany, ary ny fihetsiky ny fanafody, amin'ny endriky ny hazo, ho an'ny marary tsirairay, tsy mandany habaka kapila fanampiny amin'ny tsanganana foana. ho toy ny raharaha amin'ny raharaha relational.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Ny fampiasana globals dia mety ny mamorona angona misy angona momba ny olona, rehefa zava-dehibe ny manangona sy mandrindra ny fampahalalana isan-karazany momba ny mpanjifa. Mitaky izany amin'ny fitsaboana, banky, marketing, archiving ary faritra hafa

.
Mazava ho azy fa amin'ny SQL dia azonao atao koa ny maka tahaka hazo iray miaraka amin'ny latabatra vitsivitsy fotsiny (EAV, 1,2,3,4,5,6,7,8,9,10), na izany aza dia sarotra kokoa izany ary ho miadana kokoa. Amin'ny ankapobeny dia tsy maintsy manoratra manerantany miasa amin'ny latabatra ianao ary manafina ny asa rehetra miaraka amin'ny latabatra eo ambanin'ny sosona abstraction. Diso ny maka tahaka ny teknolojia avo lenta (global) mampiasa teknolojia avo lenta (SQL). Tsy mety.

Tsy tsiambaratelo fa ny fanovana ny schema data amin'ny latabatra goavambe (ALTER TABLE) dia mety maka fotoana kely. Ny MySQL, ohatra, dia manao ALTER TABLE ADD|DROP COLUMN amin'ny alàlan'ny kopia tanteraka ny fampahalalana avy amin'ny latabatra taloha mankany amin'ny latabatra vaovao (voazaha ny motera MyISAM, InnoDB). Izay afaka manantona angon-drakitra miasa miaraka amin'ny firaketana an-tapitrisany mandritra ny andro, raha tsy herinandro.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2Ny fanovana ny firafitry ny angona raha mampiasa globals isika dia tsy mandany vola. Amin'ny fotoana rehetra dia afaka manampy fananana vaovao ilaintsika amin'ny zavatra rehetra, amin'ny ambaratonga rehetra amin'ny ambaratonga. Ny fanovana mifandraika amin'ny fanovana anarana sampana dia azo atao ao ambadika amin'ny angon-drakitra mandeha.


Noho izany, raha ny momba ny fitehirizana zavatra miaraka amin'ny fananana safidy marobe dia safidy tsara ny globals.

Ambonin'izany, mamelà ahy hampahatsiahy anao fa ny fidirana amin'ny fananana rehetra dia eo noho eo, satria amin'izao tontolo izao dia hazo B avokoa ny lalana rehetra.

Ny angon-drakitra maneran-tany, amin'ny ankapobeny, dia karazana tahirin-kevitra miompana amin'ny antontan-taratasy manana fahafahana mitahiry vaovao momba ny ambaratongam-pahefana. Noho izany, ny angon-drakitra miompana amin'ny antontan-taratasy dia afaka mifaninana amin'ny manerantany amin'ny sehatry ny fitehirizana firaketana ara-pitsaboana. Mbola tsy mitovy ihany anefa izanyAndao haka MongoDB ho fampitahana. Amin'ity sehatra ity resy amin'ny globals noho ireto antony manaraka ireto:

  1. Haben'ny antontan-taratasy. Ny singa fitahirizana dia lahatsoratra amin'ny endrika JSON (marika kokoa BSON) miaraka amin'ny haben'ny 16MB eo ho eo. Ny famerana dia natao manokana mba tsy hihena ny angon-drakitra JSON mandritra ny fanaparitahana raha misy antontan-taratasy JSON lehibe voatahiry ao ary avy eo miditra amin'ny saha. Ity antontan-taratasy ity dia tokony ahitana ny fampahalalana rehetra momba ny marary. Fantatsika rehetra fa mety ho matevina ny firaketana marary. Ny haben'ny karatra ambony indrindra amin'ny 16MB dia mamarana avy hatrany ireo marary izay manana karatra marary misy rakitra MRI, scan X-ray ary fandalinana hafa. Ao amin'ny sampana iray amin'izao tontolo izao dia afaka manana gigabytes sy terabytes fampahalalana ianao. Amin'ny ankapobeny dia azontsika atao ny mamarana izany, fa mbola hanohy aho.
  2. Fotoan'ny fahatsiarovan-tena/fanovana/famafana ny fananana vaovao ao amin'ny tabilaon'ny marary. Ny angon-drakitra toy izany dia tsy maintsy mamaky ny sari-tany manontolo ho fitadidiana (be dia be izany!), Ampidiro ny BSON, ampio / hanova / hamafa node vaovao, manavao ny indeksa, ampidiro ao amin'ny BSON, ary tehirizo ao anaty disk. Ny eran-tany dia mila miditra amin'ny fananana manokana sy manodinkodina azy.
  3. Fidirana haingana amin'ny fananana tsirairay. Miaraka amin'ny fananana maro ao anaty antontan-taratasy iray sy ny rafitra misy azy, dia ho haingana kokoa ny fidirana amin'ny fananan'ny tsirairay noho ny zava-misy fa hazo B ny lalana tsirairay eto amin'izao tontolo izao. Ao amin'ny BSON, tsy maintsy manara-maso ny antontan-taratasy ianao mba hahitana ny fananana irina.

3.3.2 Array mifandray

Mifanaraka tsara amin'ny globals ny arrays associative (na dia miaraka amin'ny arrays nested). Ohatra, ny array toy izany avy amin'ny PHP dia haseho amin'ny sary voalohany 3.3.1.

$a = array(
  "name" => "Vince Medvedev",
  "city" => "Moscow",
  "threatments" => array(
    "surgeries" => array("apedicectomy", "biopsy"),
    "radiation" => array("gamma", "x-rays"),
    "physiotherapy" => array("knee", "shoulder")
  )
);

3.3.3 Tahirin-kevitra ara-jeografika: XML, JSON

Mora voatahiry ao amin'ny globals ihany koa. Azo apetraka amin'ny fomba samihafa ny fitahirizana.

XML
Ny fomba tsotra indrindra hamongorana ny XML ho globals dia ny fitehirizana ny toetran'ny tag ao anaty nodes. Ary raha ilaina ny fidirana haingana amin'ny toetran'ny tag, dia afaka mamindra azy ireo amin'ny sampana misaraka isika.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

<note id=5>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>

Amin'ny COS dia mifanaraka amin'ny code izany:

Set ^xml("note")="id=5"
Set ^xml("note","to")="Саша"
Set ^xml("note","from")="Света"
Set ^xml("note","heading")="Напоминание"
Set ^xml("note","body")="Позвони мне завтра!"

Comment: Ho an'ny XML, JSON, arrays associative, azonao atao ny mamorona fomba maro samihafa hanehoana amin'ny tontolo. Amin'ity tranga ity, tsy hita taratra ny filaharan'ny zana-tsipìka ao amin'ny marika fanamarihana izahay. maneran- ^xml haseho amin'ny filaharan'ny alfabeta ny subtags. Mba hanehoana tanteraka ny baiko dia azonao ampiasaina, ohatra, ity fampisehoana manaraka ity:

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2
JSON.
Ny sary voalohany avy amin'ny fizarana 3.3.1 dia mampiseho taratry ity antontan-taratasy JSON ity:

var document = {
  "name": "Vince Medvedev",
  "city": "Moscow",
  "threatments": {
    "surgeries": ["apedicectomy", "biopsy"],
    "radiation": ["gamma", "x-rays"],
    "physiotherapy": ["knee", "shoulder"]
  },
};

3.3.4 Rafitra mitovy amin'ny fifandraisana ara-jeografika

Ohatra: ny firafitry ny biraon'ny varotra, ny toerana misy ny olona ao amin'ny rafitra MLM, ny angon-drakitra fanokafana amin'ny chess.

Debuts database. Azonao atao ny mampiasa ny tomban'ny hery famelezana ho toy ny sandan'ny fanondroan'ny node manerantany. Avy eo, mba hisafidianana ny hetsika matanjaka indrindra, dia ampy ny misafidy ny sampana manana lanja lehibe indrindra. Amin'ny ankapobeny, ny sampana rehetra amin'ny ambaratonga tsirairay dia halamina araka ny tanjaky ny hetsika.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

Ny firafitry ny biraon'ny varotra, ny firafitry ny olona ao amin'ny MLM. Ny nodes dia afaka mitahiry soatoavina caching sasany izay maneho ny toetran'ny zana-kazo manontolo. Ohatra, ny habetsahan'ny varotra amin'ny zana-kazo iray nomena. Amin'ny fotoana rehetra dia afaka mahazo tarehimarika maneho ny zava-bitan'ny sampana rehetra isika.

Globals dia sabatra harena amin'ny fitahirizana angona. Hazo. Fizarana 2

4. Amin'ny toe-javatra inona no mahasoa indrindra ny fampiasana ny globals?

Ny tsanganana voalohany dia manolotra tranga izay hahazoanao tombony lehibe amin'ny alàlan'ny fampiasana globals, ary ny faharoa rehefa nohamafisina ny famolavolana na ny maodely data.

hafainganam-pandeha
Fanamora ny fanodinana/fampisehoana angona

  1. Fampidirana [miaraka amin'ny fanasokajiana mandeha ho azy isaky ny ambaratonga], [fanondroana amin'ny lakile master]
  2. Esory ny zana-kazo
  3. Zavatra manana fananana be dia be izay mitaky fidirana manokana
  4. Firafitry ny ambaratongam-pahefana miaraka amin'ny fahafahana mandingana ny sampana ankizy amin'ny sampana rehetra, na dia tsy misy aza
  5. Fandehanana lalina amin'ny zana-kazo
  1. Object/entité manana fananana/entité maro azo atao [sy/na nested].
  2. Data tsy misy skema. Rehefa mety hiseho matetika ny fananana vaovao ary tsy hita intsony ny taloha.
  3. Mila mamorona tahiry manokana ianao.
  4. Ny fototry ny lalana sy ny hazo fanapahan-kevitra. Rehefa mety ny maneho ny lalana ho toy ny hazo.
  5. Esory ny rafitra ambaratonga tsy mampiasa recursion

fanitarana “Sabatra harena ho an'ny fitahirizana angon-drakitra ny Globals. Laharana kely. Fizarana faha-3".

Disclaimer: Ity lahatsoratra ity sy ny fanehoan-kevitro momba azy dia hevitro ary tsy misy ifandraisany amin'ny toerana ofisialin'ny InterSystems Corporation.

Source: www.habr.com

Add a comment