Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Ukuqalisa - bona ingxenye 1.

3. Izinhlobonhlobo zezakhiwo uma usebenzisa ama-globals

Isakhiwo esifana nesihlahla esi-odwe sinezimo ezikhethekile ezihlukahlukene. Ake sicabangele lezo ezinosizo olungokoqobo lapho usebenza nama-globals.

3.1 Icala elikhethekile 1. Indawo eyodwa engenamagatsha


Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Ama-Globals angasetshenziswa nje kuphela njenge-array, kodwa futhi njengama-variables avamile. Isibonelo, njengekhawunta:

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

Kulokhu, umhlaba wonke, ngaphezu kwencazelo yawo, ungaba namagatsha. Omunye akamfaki ngaphandle omunye.

3.2 Icala elikhethekile 2. I-vertex eyodwa namagatsha amaningi

Ngokuvamile, lesi isisekelo senani likakhiye wakudala. Futhi uma silondoloza i-puple yamanani njengenani, sizothola ithebula elivamile elinokhiye oyinhloko.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

Ukuze sisebenzise ithebula kuma-globals, kuzodingeka sizenzele imigqa ngokwethu kusuka kumanani ekholomu, bese siyilondoloza emhlabeni jikelele sisebenzisa ukhiye oyinhloko. Ukuze wenze kube nokwenzeka ukuhlukanisa iyunithi yezinhlamvu ibe amakholomu futhi lapho ufunda, ungasebenzisa:

  1. izinhlamvu ze-delimiter.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. isikimu esiqinile lapho inkambu ngayinye ithatha inani elinqunywe kusengaphambili lamabhayithi. Njengoba kwenziwa kusizindalwazi esihlobene.
  3. umsebenzi okhethekile $LB (otholakala kunqolobane), odala uchungechunge lwamanani.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Kuyathakazelisa ukuthi akunzima ukusebenzisa ama-globals ukwenza okuthile okufana nezinkomba zesibili kusizindalwazi esihlobene. Masibize izakhiwo ezinjalo ngokuthi ama-globals. I-index global isihlahla esiwusizo sezinkambu ezifuna ngokushesha ezingeyona ingxenye yokhiye oyinhloko we-global main. Ukuze uyigcwalise futhi uyisebenzise, ​​udinga ukubhala ikhodi eyengeziwe.

Masidale inkomba yomhlaba wonke kukholamu yokuqala.

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

Manje, ukusesha ngokushesha ulwazi kukholamu yokuqala, kufanele sibheke emhlabeni jikelele ^i futhi uthole okhiye abayinhloko (id) abahambisana nenani elifunekayo lekholomu yokuqala.

Lapho sifaka inani, singakwazi ukudala ngokushesha kokubili inani nenkomba yomhlaba wonke wezinkambu ezidingekayo. Futhi ukuze kube nokwethenjelwa, masikugoqe konke ngokuthengiselana.

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

Imininingwane yokuthi ungakwenza kanjani ku-M amatafula emhlabeni jikelele, ukulingisa izinkomba zesibili.

Amathebula anjalo azosebenza ngokushesha njengakusizindalwazi esivamile (noma ngokushesha nakakhulu) uma imisebenzi yokufaka/ukubuyekeza/ukususa imigqa ibhalwe nge-COS/M futhi yahlanganiswa.Ngihlole lesi sitatimende ngokuhlolwa kwenqwaba INSERT futhi KHETHA kuthebula elilodwa lamakholomu amabili, okuhlanganisa ukusebenzisa imiyalo ye-TSTART kanye ne-TCOMMIT (imisebenzi).

Angikahloli izimo eziyinkimbinkimbi ngokufinyelela kanyekanye nemisebenzi efanayo.

Ngaphandle kokusebenzisa okwenziwayo, izinga lokufaka lalingu-778 amavelu/isekhondi ngesigidi samavelu.
Ngamanani ayizigidi ezingama-300 - ukufakwa okungu-422/kwesibili.

Uma usebenzisa okwenziwayo - 572 okufakwayo/kwesibili kokufakiwe okungu-082M. Yonke imisebenzi yenziwe ngekhodi engu-M ehlanganisiwe.
Ama-hard drive ajwayelekile, hhayi ama-SSD. I-RAID5 ene-Writ-back. Iphrosesa ye-Phenom II 1100T.

Ukuze uhlole isizindalwazi se-SQL ngendlela efanayo, udinga ukubhala inqubo egciniwe ezokwenza ukufakwa ku-loop. Lapho ngihlola i-MySQL 5.5 (isitoreji se-InnoDB), ngisebenzisa le ndlela ngithole izinombolo ezingekho ngaphezu kokufakwa okungu-11K ngomzuzwana.
Yebo, ukuqaliswa kwamathebula kuma-globals kubukeka kuyinkimbinkimbi kunesizindalwazi esihlobene. Ngakho-ke, imininingo egciniwe yezimboni emhlabeni jikelele inokufinyelela kwe-SQL ukwenza umsebenzi ube lula ngedatha yethebula.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Ngokuvamile, uma i-schema yedatha ingeke ishintshe kaningi, isivinini sokufaka asibalulekile futhi yonke i-database ingamelwa kalula ngendlela yamatafula ajwayelekile, khona-ke kulula ukusebenza ne-SQL, ngoba inikeza izinga eliphezulu lokukhipha. .

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Kulokhu ngangifuna ukukhombisa lokho ama-globals angasebenza njengomakhi wokudala ezinye izingosi zolwazi. Njengesihlanganisi esingabhalwa ngaso ezinye izilimi. Nazi izibonelo zokuthi ungawakha kanjani ama-analogue kuma-globals inani elingukhiye, izinhlu, amasethi, ithebula, izingosi zolwazi ezigxile embhalweni.

Uma udinga ukudala uhlobo oluthile lwesizindalwazi esingajwayelekile ngomzamo omncane, kufanele ubheke emhlabeni jikelele.

3.3 Icala elikhethekile 3. Isihlahla esinamazinga amabili, indawo ngayinye yezinga lesibili inenani elimisiwe lamagatsha.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Cishe ukuqagele: lokhu okunye ukuqaliswa kwamathebula emhlabeni jikelele. Ake siqhathanise lokhu kuqaliswa nokwedlule.

Amathebula esihlahleni esinamazinga amabili vs. esihlahleni esisezingeni elilodwa.

Минусы
Плюсы

  1. Kancane kancane ukuze ufakwe, njengoba udinga ukusetha inani lamanodi elilingana nenani lamakholomu.
  2. Ukusetshenziswa kwesikhala sediski okwengeziwe. Njengoba izinkomba zomhlaba wonke (eziqondwa njengezikhombo zamalungu afanayo) ezinamagama ekholomu zithatha isikhala sediski futhi ziyimpinda kumugqa ngamunye.

  1. Ukufinyelela okusheshayo kumanani amakholomu ngamanye, njengoba asikho isidingo sokuhlaziya iyunithi yezinhlamvu. Ngokusho kokuhlolwa kwami, ishesha ngo-11,5% kumakholomu angu-2 nokuningi ngenani elikhulu lamakholomu.
  2. Kulula ukushintsha i-schema sedatha
  3. Ikhodi ecacile eyengeziwe

Isiphetho: hhayi wonke umuntu. Njengoba isivinini singenye yezinzuzo eziyinhloko zomhlaba wonke, lincane iphuzu ekusebenziseni lokhu kuqaliswa, njengoba cishe ngeke kusebenze ngokushesha kunamathebula kusizindalwazi esihlobene.

3.4 Icala elijwayelekile. Izihlahla nezihlahla ezi-odwe

Noma isiphi isakhiwo sedatha esingamelwa njengesihlahla sifanelana ngokuphelele nama-globals.

3.4.1 Izinto ezinezihloko

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

Lena indawo yokusetshenziswa kwendabuko kwama-globals. Emkhakheni wezokwelapha kunenani elikhulu lezifo, imithi, izimpawu, nezindlela zokwelapha. Akunangqondo ukwakha itafula elinezinkambu eziyisigidi zesiguli ngasinye. Ngaphezu kwalokho, i-99% yezinkambu izobe ingenalutho.

Cabanga ngesizindalwazi se-SQL samathebula: “isiguli” ~ 100 izinkambu, “Umuthi” - izinkambu eziyi-000, “Ukwelapha” - izinkambu eziyi-100, “Izinkinga” - izinkambu eziyi-000, njll. njalo njalo. Noma ungakha isizindalwazi sezinkulungwane eziningi zamathebula, ngalinye lohlobo oluthile lwesiguli (futhi lingadlulela!), Ukwelashwa, imithi, kanye nezinkulungwane zamathebula ngaphezulu ukuze kuxhunywe phakathi kwalawa mathebula.

Ama-Globals alungele umuthi, njengoba akuvumela ukuthi udale isiguli ngasinye incazelo enembile yomlando waso wezokwelapha, izindlela zokwelapha ezihlukahlukene, kanye nezenzo zemithi, ngesimo somuthi, ngaphandle kokumosha isikhala sediski eyengeziwe kumakholomu angenalutho, njengoba bekungenzeka. kube njalo endabeni yobudlelwano.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Ukusebenzisa ama-globals kulula ukwakha isizindalwazi esinedatha emayelana nabantu, lapho kubalulekile ukuqongelela futhi uhlele ubuningi bolwazi oluhlukahlukene mayelana neklayenti. Lokhu kuyadingeka emithini, ebhange, ekukhangiseni, ekugcinweni kwemininingwane nakwezinye izindawo

.
Kunjalo, ku-SQL ungakwazi futhi ukulingisa isihlahla ngamatafula ambalwa (I-EAV, 1,2,3,4,5,6,7,8,9,10), nokho lokhu kuyinkimbinkimbi kakhulu futhi kuzohamba kancane. Empeleni, kuzodingeka ukuthi ubhale i-global esebenza ematafuleni futhi ufihle wonke umsebenzi ngamatafula ngaphansi kwesendlalelo se-abstraction. Akulungile ukulingisa ubuchwepheshe bezinga eliphansi (amaglobals) usebenzisa ubuchwepheshe bezinga eliphezulu (SQL). Akulungile.

Akuyona imfihlo ukuthi ukushintsha i-schema sedatha kumathebula amakhulu (ALTER TABLE) kungathatha isikhathi esifanelekile. I-MySQL, isibonelo, yenza i-ALTER TABLE ADD|DROP COLUMN ngokukopisha ngokuphelele imininingwane esuka kuthebula elidala iye kuthebula elisha (izinjini ezihloliwe ze-MyISAM, InnoDB). Okungamisa isizindalwazi esisebenzayo esinezigidigidi zamarekhodi izinsuku, uma kungewona amasonto.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2Ukushintsha ukwakheka kwedatha uma sisebenzisa ama-globals akusibizi lutho. Nganoma isiphi isikhathi singangeza noma yiziphi izakhiwo ezintsha esizidingayo kunoma iyiphi into, kunoma yiliphi izinga lesigaba. Izinguquko ezihlobene nokuqamba kabusha amagatsha zingaqhutshwa ngemuva kusizindalwazi esisebenzayo.


Ngakho-ke, uma kuziwa ekugcineni izinto ezinenani elikhulu lezakhiwo ozikhethela, ama-globals ayisinqumo esihle.

Ngaphezu kwalokho, ake ngikukhumbuze ukuthi ukufinyelela kunoma yiziphi izakhiwo kushesha, ngoba emhlabeni wonke izindlela ziyizihlahla ze-B.

Imininingo egciniwe yomhlaba wonke, ngokuvamile, iwuhlobo lwesizindalwazi esigxile kumadokhumenti esinamandla okugcina imininingwane yesigaba. Ngakho-ke, isizindalwazi esigxile embhalweni singaqhudelana namazwe omhlaba emkhakheni wokugcinwa kwamarekhodi ezokwelapha. Kodwa namanje akufani nezeAke sithathe i-MongoDB ukuze siyiqhathanise. Kulesi sizinda ilahlekelwa emhlabeni jikelele ngenxa yezizathu ezilandelayo:

  1. Usayizi wedokhumenti. Iyunithi yesitoreji iwumbhalo ngefomethi ye-JSON (ngokunembile kakhudlwana i-BSON) enevolumu enkulu engaba ngu-16MB. Umkhawulo wenziwe ngokuqondile ukuze imininingo egciniwe ye-JSON inganembi ngesikhathi sokuhlaziya uma idokhumenti enkulu ye-JSON igcinwe kuyo bese ifinyelelwa ngezinkambu. Lo mbhalo kufanele ube nalo lonke ulwazi ngesiguli. Sonke siyazi ukuthi amarekhodi esiguli angaba mkhulu kangakanani. Ubukhulu bekhadi besayizi engu-16MB buqeda ngokushesha iziguli ezinekhadi lesifo elihlanganisa amafayela e-MRI, ama-X-ray scan kanye nezinye izifundo. Egatsheni elilodwa lomhlaba wonke ungaba namagigabhayithi nama-terabytes olwazi. Empeleni, singakuqeda lokhu, kodwa ngizoqhubeka.
  2. Isikhathi sokuqaphela/ukushintsha/ukususwa kwezakhiwo ezintsha eshadini lesiguli. Isizindalwazi esinjalo kufanele sifunde yonke imephu enkumbulweni (leli inani elikhulu!), hlaziya i-BSON, engeza/shintsha/susa i-node entsha, buyekeza izinkomba, uyipakishe ku-BSON, futhi uyigcine kudiski. I-global idinga kuphela ukufinyelela esakhiweni esithile futhi siyisebenzise.
  3. Ukufinyelela okusheshayo ezakhiweni ngazinye. Njengoba kunezakhiwo eziningi kudokhumenti kanye nesakhiwo sawo esinamazinga amaningi, ukufinyelela ezakhiweni ngazinye kuzoshesha ngenxa yokuthi indlela ngayinye emhlabeni wonke iyisihlahla sika-B. Ku-BSON, kufanele uhlaziye idokhumenti ngokulandelanayo ukuze uthole indawo oyifunayo.

3.3.2 Ama-Associative array

Ama-Associative array (ngisho nama-arrays afakwe esidlekeni) alingana kahle emhlabeni jikelele. Isibonelo, uhlu olunjalo oluvela ku-PHP luzovezwa esithombeni sokuqala 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 Imibhalo ye-Hierarchical: XML, JSON

Futhi kugcinwa kalula kuma-globals. Ingabekwa ngezindlela ezahlukene ukuze igcinwe.

XML
Indlela elula yokubola i-XML ibe ama-globals ukugcina izimfanelo zamathegi kumanodi. Futhi uma ukufinyelela okusheshayo kuzibaluli zomaka kuyadingeka, khona-ke singazihambisa emagatsheni ahlukene.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

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

Ku-COS lokhu kuzohambisana nekhodi:

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

Qaphela: Ku-XML, JSON, ama-associative arrays, ungathola izindlela eziningi ezihlukene zokubonisa emhlabeni jikelele. Kulesi simo, asizange sibonise ukuhleleka kwamathegi angaphansi kuthegi yenothi. Emhlabeni jikelele ^xml ama-subtag azoboniswa ngokulandelana kwezinhlamvu. Ukuze ubonise ngokuqinile ukuhleleka, ungasebenzisa, isibonelo, isibonisi esilandelayo:

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2
JSON.
Isithombe sokuqala esivela esigabeni 3.3.1 sibonisa ukubonakaliswa kwalo mbhalo we-JSON:

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

3.3.4 Izakhiwo ezifanayo ezixhunywe ubudlelwano bezigaba

Izibonelo: ukwakheka kwamahhovisi okuthengisa, indawo yabantu esakhiweni se-MLM, isizindalwazi sokuvuleka kwe-chess.

Debuts database. Ungasebenzisa isilinganiso se-stroke force njengenani lenkomba le-node yomhlaba. Khona-ke, ukuze ukhethe ukunyakaza okunamandla, kuyoba okwanele ukukhetha igatsha elinesisindo esikhulu kakhulu. Emhlabeni wonke, wonke amagatsha ezingeni ngalinye azohlungwa ngamandla okunyakaza.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

Isakhiwo samahhovisi okuthengisa, isakhiwo sabantu ku-MLM. Ama-Node angagcina amanani athile we-caching abonisa izici zesihlahla sonke esingaphansi. Isibonelo, ivolumu yokuthengisa yesihlahla esincane esinikeziwe. Nganoma isiphi isikhathi singathola isibalo esibonisa impumelelo yanoma yiliphi igatsha.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Izihlahla. Ingxenye 2

4. Kukuziphi izimo lapho kuzuzisa kakhulu ukusebenzisa ama-globals?

Ikholomu yokuqala yethula izimo lapho uzothola khona inzuzo enkulu yesivinini ngokusebenzisa ama-globals, kanti eyesibili lapho umklamo noma imodeli yedatha izokwenziwa lula.

Isivinini
Ukusebenziseka kalula kwedatha/isethulo

  1. Ukufaka [ngokuhlunga okuzenzakalelayo ezingeni ngalinye], [inkomba ngokhiye oyinhloko]
  2. Ukukhipha izihlahla ezincane
  3. Izinto ezinezakhiwo eziningi ezibekwe esidlekeni ezidinga ukufinyelela komuntu ngamunye
  4. Isakhiwo se-hierarchical esinekhono lokudlula amagatsha ezingane asuka kunoma yiliphi igatsha, ngisho nalawo angekho
  5. Ukujula kokuqala kwezihlahla ezincane
  1. Izinto/amabhizinisi anenombolo enkulu yezinto ozikhethela [kanye/noma ezifuywe]/amabhizinisi
  2. Idatha engena-schema. Lapho izakhiwo ezintsha zingavame ukuvela futhi ezindala zinyamalale.
  3. Udinga ukwakha isizindalwazi sangokwezifiso.
  4. Izisekelo zendlela nezihlahla zesinqumo. Lapho kufaneleka ukumela izindlela njengesihlahla.
  5. Ukususa izakhiwo ze-hierarchical ngaphandle kokusebenzisa ukuphindaphinda

Ukuqhubeka “Amazwe omhlaba ayingcebo yokugcina imininingwane. Amalungu afanayo amancane. Ingxenye 3".

Disclaimer: Lesi sihloko kanye nokuphawula kwami ​​​​kuso kuwumbono wami futhi akuhlobene nesimo esisemthethweni se-InterSystems Corporation.

Source: www.habr.com

Engeza amazwana