Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Chiyambi - onani Gawo 1.

3. Zosiyanasiyana zamapangidwe mukamagwiritsa ntchito ma globals

Mapangidwe monga mtengo wolamulidwa ali ndi zochitika zapadera zosiyanasiyana. Tiyeni tiganizire zomwe zili ndi phindu pogwira ntchito ndi mayiko.

3.1 Nkhani yapadera 1. Node imodzi yopanda nthambi


Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Ma Globals angagwiritsidwe ntchito osati ngati mndandanda, komanso ngati zosinthika nthawi zonse. Mwachitsanzo, ngati counter:

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

Pankhaniyi, padziko lonse lapansi, kuwonjezera pa tanthauzo lake, amathanso kukhala ndi nthambi. Wina sapatula mnzake.

3.2 Nkhani yapadera 2. Chovala chimodzi ndi nthambi zambiri

Mwambiri, ichi ndi chinsinsi chamtengo wapatali. Ndipo ngati tisunga kuchuluka kwamtengo ngati mtengo, tidzapeza tebulo wamba kwambiri ndi kiyi yoyamba.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

Kuti tigwiritse ntchito tebulo lazinthu zapadziko lonse lapansi, tidzayenera kupanga mizere tokha kuchokera kumagulu amindandanda, ndikuyisunga kudziko lonse lapansi pogwiritsa ntchito kiyi yoyamba. Kuti muthe kugawanso chingwecho kukhala mizati powerenga, mutha kugwiritsa ntchito:

  1. zilembo za delimiter.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. chiwembu chokhwima chomwe gawo lililonse limakhala ndi chiwerengero chodziwikiratu cha ma byte. Monga momwe zimachitikira m'ma database ogwirizana.
  3. ntchito yapadera $LB (yopezeka mu Cache), yomwe imapanga mndandanda wamtengo wapatali.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Chosangalatsa ndichakuti, sikovuta kugwiritsa ntchito ma globals kuchita zinthu zofananira ndi ma index achiwiri pazosunga zolumikizana. Tiyeni tizitcha zomangika ngati izi index globals. Index global ndi mtengo wothandizira kusaka mwachangu madera omwe sali mbali ya kiyi yayikulu yapadziko lonse lapansi. Kuti mudzaze ndikuigwiritsa ntchito, muyenera kulemba nambala yowonjezera.

Tiyeni tipange index yapadziko lonse lapansi pamndandanda woyamba.

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

Tsopano, kuti tifufuze mwachangu zambiri mu gawo loyamba, tiyenera kuyang'ana zapadziko lonse lapansi ^i ndipo pezani makiyi oyambira (id) ofanana ndi mtengo womwe mukufuna pagawo loyamba.

Tikayika mtengo, titha kupanga nthawi yomweyo zonse zamtengo wapatali ndi index zapadziko lonse lapansi zomwe zikufunika. Ndipo chifukwa chodalirika, tiyeni tichite zonse muzochita.

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

Tsatanetsatane wa momwe mungachitire pa M matebulo padziko lonse lapansi, kutsanzira ma index achiwiri.

Matebulo oterowo azigwira ntchito mwachangu ngati m'malo osungira zakale (kapena mwachangu) ngati ntchito zoyika / kukonza / kuchotsa mizere zalembedwa mu COS/M ndikuphatikizidwa.Ndayang'ana mawu awa ndi mayeso pazambiri INSERT ndikusankha mu tebulo limodzi la magawo awiri, kuphatikiza kugwiritsa ntchito malamulo a TSTART ndi TCOMMIT (zochita).

Sindinayese zochitika zovuta kwambiri zokhala ndi mwayi wofikira nthawi imodzi komanso zochitika zofananira.

Popanda kugwiritsa ntchito malonda, chiwerengero choyika chinali 778 choyika / chachiwiri pa milioni.
Ndi 300 miliyoni zamtengo - 422 zoyika / sekondi.

Mukamagwiritsa ntchito malonda - 572 amaika / yachiwiri kwa 082M amaika. Zochita zonse zidapangidwa kuchokera ku M code yolembedwa.
Ma hard drive ndi okhazikika, osati SSD. RAID5 yokhala ndi Write-back. Phenom II 1100T purosesa.

Kuti muyese nkhokwe ya SQL mofananamo, muyenera kulemba ndondomeko yosungidwa yomwe idzalowetsamo mu lupu. Poyesa MySQL 5.5 (InnoDB yosungirako), pogwiritsa ntchito njirayi ndinalandira manambala osapitirira 11K oyika pamphindi.
Inde, kukhazikitsidwa kwa matebulo pazadziko lonse lapansi kumawoneka kovuta kwambiri kuposa pazosunga zolumikizana. Chifukwa chake, nkhokwe zamafakitale pazadziko lonse lapansi zili ndi mwayi wa SQL kuti muchepetse ntchito ndi data ya tabular.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Kawirikawiri, ngati schema ya deta sichidzasintha kawirikawiri, kuthamanga kwa kuyika sikuli kofunikira ndipo deta yonseyi ingathe kuimiridwa mosavuta mu mawonekedwe a matebulo okhazikika, ndiye kuti n'zosavuta kugwira ntchito ndi SQL, chifukwa imapereka mlingo wapamwamba wotsalira. .

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Pankhani imeneyi ndimafuna kusonyeza zimenezo globals amatha kukhala ngati omanga popanga ma database ena. Monga chophatikiza chomwe zinenero zina zimatha kulembedwa. Nazi zitsanzo za momwe mungapangire ma analogues pamitundu yonse mtengo wofunikira, mindandanda, ma seti, ma tabular, zotengera zolemba.

Ngati mukufuna kupanga nkhokwe yamtundu wina wosakhazikika molimbika pang'ono, ndiye kuti muyenera kuyang'ana zapadziko lonse lapansi.

3.3 Mlandu wapadera 3. Mtengo wamitundu iwiri, node iliyonse ya mulingo wachiwiri imakhala ndi nthambi zokhazikika.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Mwina mumaganizira: uku ndi njira ina yokhazikitsira matebulo padziko lonse lapansi. Tiyeni tifanizire kukhazikitsa uku ndi kwam'mbuyo.

Matebulo pamtengo wamitundu iwiri vs. pamtengo wa mlingo umodzi.

Минусы
Плюсы

  1. Pang'onopang'ono kuti mulowetse, chifukwa muyenera kuyika chiwerengero cha node chofanana ndi chiwerengero cha mizati.
  2. Kugwiritsa ntchito malo ambiri a disk. Popeza ma index apadziko lonse (omwe amamveka ngati masanjidwe amitundu) okhala ndi mayina amzambiri amatenga malo a disk ndipo amabwerezedwa pamzere uliwonse.

  1. Kufikira mwachangu pamakhalidwe amizati payokha, popeza palibe chifukwa chodulira chingwecho. Malingana ndi mayesero anga, ndi 11,5% mofulumira pazitsulo za 2 ndi zina zambiri pazigawo zazikulu.
  2. Zosavuta kusintha schema ya data
  3. Khodi yomveka bwino

Kutsiliza: osati kwa aliyense. Popeza kuthamanga ndi chimodzi mwazabwino kwambiri zapadziko lonse lapansi, palibe chifukwa chogwiritsa ntchito kukhazikitsa uku, chifukwa sichingagwire mwachangu kuposa matebulo omwe ali muzosunga zolumikizana.

3.4 Mlandu wamba. Mitengo ndi mitengo yolamulidwa

Dongosolo lililonse la data lomwe lingayimilidwe ngati mtengo limagwirizana bwino ndi ma globals.

3.4.1 Zinthu zokhala ndi mitu

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

Ili ndiye gawo lachikale la kugwiritsidwa ntchito kwapadziko lonse lapansi. M'chipatala pali matenda ambiri, mankhwala, zizindikiro, ndi njira zothandizira. Ndizosamveka kupanga tebulo lokhala ndi minda miliyoni kwa wodwala aliyense. Komanso, 99% ya minda idzakhala yopanda kanthu.

Tangoganizani nkhokwe ya SQL yamagome: "wodwala" ~ 100 minda, "Medicine" - 000 minda, "Therapy" - 100 minda, "Zovuta" - 000 minda, ndi zina. ndi zina zotero. Kapena mutha kupanga nkhokwe ya matebulo masauzande ambiri, lililonse la mtundu wina wa odwala (ndipo amatha kuphatikizira!), Chithandizo, mankhwala, ndi magome ena masauzande ambiri olumikizirana pakati pa matebulo awa.

Globals ndi yabwino kwa mankhwala, chifukwa amakulolani kuti mupange kwa wodwala aliyense kufotokoza kolondola kwa mbiri yake yachipatala, mankhwala osiyanasiyana, ndi zochita za mankhwala, mwa mawonekedwe a mtengo, popanda kuwononga malo owonjezera a disk pazitsulo zopanda kanthu, monga momwe angachitire. kukhala chomwecho mu nkhani ya ubale.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Kugwiritsa ntchito globals ndikosavuta kupanga nkhokwe yokhala ndi zambiri za anthu, pamene kuli kofunika kudziunjikira ndi systematize pazipita zosiyanasiyana zambiri zokhudza kasitomala. Izi zikufunika muzamankhwala, kubanki, kutsatsa, kusungitsa zakale ndi madera ena

.
Zachidziwikire, mu SQL mutha kutsanziranso mtengo wokhala ndi matebulo ochepa (EAV, 1,2,3,4,5,6,7,8,9,10), komabe izi ndizovuta kwambiri ndipo sizichedwa. Kwenikweni, muyenera kulemba zapadziko lonse lapansi zomwe zimagwira ntchito pamatebulo ndikubisa zonse zomwe zili ndi matebulo pansi pa wosanjikiza. Ndi kulakwa kutsanzira ukadaulo wotsikirapo (padziko lonse lapansi) pogwiritsa ntchito ukadaulo wapamwamba kwambiri (SQL). Zosayenera.

Si chinsinsi kuti kusintha schema ya data pa matebulo akuluakulu (ALTER TABLE) kungatenge nthawi yokwanira. MySQL, mwachitsanzo, imapanga ALTER TABLE ADD|DROP COLUMN potengera zonse kuchokera patebulo lakale kupita patebulo latsopano (ma injini oyesedwa a MyISAM, InnoDB). Zomwe zimatha kupachika nkhokwe yogwira ntchito ndi mabiliyoni a mbiri kwa masiku, ngati si masabata.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2Kusintha kapangidwe ka data ngati tigwiritsa ntchito globals sikumawononga chilichonse. Nthawi iliyonse titha kuwonjezera zinthu zatsopano zomwe tingafune ku chinthu chilichonse, pamlingo uliwonse wa utsogoleri. Zosintha zokhudzana ndi kusinthanso nthambi zitha kuyendetsedwa cham'mbuyo pa database yomwe ikuyenda.


Chifukwa chake, zikafika pakusunga zinthu zokhala ndi zinthu zambiri zomwe mungasankhe, ma globals ndi chisankho chabwino.

Komanso, ndiloleni ndikukumbutseni kuti mwayi wopeza chilichonse mwazinthuzo ndi nthawi yomweyo, chifukwa padziko lonse lapansi njira zonse ndi mitengo ya B.

Ma database apadziko lonse lapansi, ambiri, ndi mtundu wa nkhokwe wokhazikika pamakalata omwe amatha kusunga zidziwitso zamaudindo. Chifukwa chake, nkhokwe zokhala ndi zolemba zimatha kupikisana ndi mayiko padziko lonse lapansi pankhani yosunga mbiri yachipatala. Koma sizinali zofananaTiyeni titenge MongoDB kuti tifananize. M'malo awa imatayika kudziko lapansi pazifukwa izi:

  1. Kukula kwa zolemba. Malo osungira ndi olembedwa mumtundu wa JSON (momwemo ndendende BSON) wokhala ndi voliyumu yayikulu pafupifupi 16MB. Choletsacho chinapangidwa makamaka kuti nkhokwe ya JSON isachedwe pakadutsa ngati chikalata chachikulu cha JSON chasungidwa momwemo ndikufikira ndi magawo. Chikalatachi chiyenera kukhala ndi zonse zokhudza wodwalayo. Tonse timadziwa momwe zolemba za odwala zimakhalira. Kuchuluka kwa makadi a 16MB nthawi yomweyo kumathetsa odwala omwe khadi lawo la matenda limaphatikizapo mafayilo a MRI, X-ray scans ndi maphunziro ena. Munthambi imodzi yapadziko lonse lapansi mutha kukhala ndi ma gigabytes ndi ma terabytes azidziwitso. Kwenikweni, tikhoza kuthetsa izi, koma ndikupitiriza.
  2. Nthawi ya chidziwitso / kusintha / kuchotsedwa kwa zinthu zatsopano mu tchati cha wodwalayo. Dongosolo loterolo liyenera kuwerengera mapu onse kukumbukira (izi ndi zochuluka!), fotokozani BSON, onjezani / sinthani / chotsani node yatsopano, sinthani ma index, ikani mu BSON, ndikusunga ku disk. Dziko lapansi limangofunika kupeza malo enaake ndikuwongolera.
  3. Kufikira mwachangu kuzinthu zamunthu payekha. Ndi katundu wambiri muzolemba ndi mawonekedwe ake amitundu yambiri, mwayi wopeza katundu wa munthu udzakhala wofulumira chifukwa chakuti njira iliyonse padziko lonse lapansi ndi B-mtengo. Mu BSON, muyenera kusanthula chikalatacho kuti mupeze malo omwe mukufuna.

3.3.2 Magulu ogwirizana

Ma Associative arrays (ngakhale okhala ndi zisa) amakwanira bwino padziko lonse lapansi. Mwachitsanzo, mndandanda wotere wochokera ku PHP udzawonetsedwa pachithunzi choyamba 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 Zolemba zakale: XML, JSON

Komanso zosungidwa mosavuta padziko lonse lapansi. Ikhoza kuikidwa m'njira zosiyanasiyana zosungirako.

XML
Njira yosavuta yowonongera XML kukhala ma globals ndikusunga ma tag mu node. Ndipo ngati kupeza msanga kwa ma tag kumafunika, ndiye kuti titha kuwasuntha kukhala nthambi zosiyana.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

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

Pa COS izi zikugwirizana ndi code:

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

Chidziwitso: Kwa XML, JSON, ma associative arrays, mutha kubwera ndi njira zambiri zowonetsera padziko lonse lapansi. Pamenepa, sitinawonetse dongosolo la ma subtag mu tag yolemba. Padziko lonse lapansi ^xml pa ma subtag adzawonetsedwa motsatira zilembo. Kuti muwonetsere dongosololi, mutha kugwiritsa ntchito, mwachitsanzo, chiwonetsero chotsatirachi:

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2
JSON.
Chithunzi choyamba cha gawo 3.3.1 chikuwonetsa chithunzithunzi cha chikalata cha JSON:

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

3.3.4 Mipangidwe yofanana yolumikizidwa ndi maubwenzi otsogola

Zitsanzo: mawonekedwe a maofesi ogulitsa, malo omwe anthu ali mu dongosolo la MLM, nkhokwe zotsegula mu chess.

Debuts database. Mutha kugwiritsa ntchito kuwerengera kwa mphamvu ya stroke ngati index ya node yapadziko lonse lapansi. Kenaka, kuti musankhe kusuntha kwamphamvu kwambiri, zidzakhala zokwanira kusankha nthambi ndi kulemera kwakukulu. Padziko lonse lapansi, nthambi zonse pamlingo uliwonse zidzasankhidwa ndi mphamvu zosuntha.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

Kapangidwe ka maofesi ogulitsa, kapangidwe ka anthu ku MLM. Ma Node amatha kusunga zinthu zina za caching zomwe zimawonetsa mawonekedwe a subtree yonse. Mwachitsanzo, kuchuluka kwa malonda amtundu woperekedwa. Nthawi iliyonse tikhoza kupeza chithunzi chosonyeza zomwe nthambi iliyonse yachita.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitengo. Gawo 2

4. Kodi kugwiritsa ntchito zinthu zapadziko lonse n’kothandiza bwanji?

Gawo loyamba likuwonetsa momwe mungapindulire mwachangu pogwiritsa ntchito ma globals, ndipo yachiwiri pomwe mapangidwe kapena mtundu wa data udzakhala wosavuta.

Kuthamanga
Kusavuta kukonza / kuwonetsera

  1. Kulowetsa [ndi kusanja kodziwikiratu pamlingo uliwonse], [indexing by master key]
  2. Kuchotsa subtrees
  3. Zinthu zokhala ndi zisa zambiri zomwe zimafunikira munthu aliyense payekha
  4. Mapangidwe a hierarchical omwe amatha kulambalala nthambi za ana kuchokera kunthambi iliyonse, ngakhale kulibe
  5. Kuzama koyambirira kwa subtrees
  1. Zinthu/mabungwe okhala ndi kuchuluka kwazinthu zomwe mungasankhe [ndi/kapena zosungidwa]
  2. Zopanda schema data. Pamene zatsopano zimatha kuwoneka ndipo zakale zimatha.
  3. Muyenera kupanga nkhokwe yamwambo.
  4. Njira zoyambira ndi mitengo yachisankho. Pamene kuli koyenera kuimira njira ngati mtengo.
  5. Kuchotsa zomangidwa motsogola popanda kugwiritsa ntchito recursion

Kupitiliza “Padziko lonse lapansi ndi malupanga amtengo wapatali osungiramo deta. Zosanjikiza pang'ono. Gawo 3".

chandalama: Nkhaniyi ndi ndemanga zanga kwa izo ndi lingaliro langa ndipo sizikukhudzana ndi udindo wa InterSystems Corporation.

Source: www.habr.com

Kuwonjezera ndemanga