Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Оғози кор - ба қисми 1 нигаред.

3. Вариантҳои сохторҳо ҳангоми истифодаи глобалӣ

Сохтор ба монанди дарахти фармоишӣ ҳолатҳои махсуси гуногун дорад. Биёед онҳоеро баррасӣ кунем, ки ҳангоми кор бо глобалҳо арзиши амалӣ доранд.

3.1 Ҳолати махсус 1. Як гиреҳ бе шохаҳо


Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Глобалҳоро на танҳо ҳамчун массив, балки ҳамчун тағирёбандаҳои муқаррарӣ низ истифода бурдан мумкин аст. Масалан, ҳамчун ҳисобкунак:

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

Дар ин маврид глобалї ба ѓайр аз маънои худ шохањо низ дошта метавонад. Яке дигареро истисно намекунад.

3.2 Ҳолати махсус 2. Як қулла ва бисёр шохаҳо

Умуман, ин як пойгоҳи классикии калид-арзиш аст. Ва агар мо як маҷмӯи арзишҳоро ҳамчун арзиш захира кунем, мо ҷадвали хеле оддӣ бо калиди ибтидоӣ мегирем.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

Барои татбиқи ҷадвали глобалӣ, мо бояд худамон сатрҳоро аз арзишҳои сутун тавлид кунем ва сипас онҳоро бо истифода аз калиди ибтидоӣ ба глобалӣ захира кунем. Барои он ки ҳангоми хондан дубора сатр ба сутунҳо тақсим карда шавад, шумо метавонед истифода баред:

  1. аломатҳои ҷудокунанда.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. схемаи қатъӣ, ки дар он ҳар як майдон миқдори пешакӣ муайяншудаи байтҳоро ишғол мекунад. Тавре ки дар базаи маълумотҳои релятсионӣ анҷом дода мешавад.
  3. функсияи махсуси $ LB (дар кэш мавҷуд аст), ки сатри арзишҳоро эҷод мекунад.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Ҷолиб он аст, ки истифодаи глобалҳо барои иҷрои коре ба шохисҳои дуюмдараҷа дар пойгоҳи додаҳои релятсионӣ душвор нест. Биёед чунин сохторҳоро индекси глобалӣ меномем. Индекси глобалӣ дарахти ёрирасон барои ҷустуҷӯи зуд майдонҳое мебошад, ки ҷузъи калиди асосии глобалии асосӣ нестанд. Барои пур кардан ва истифода бурдани он, шумо бояд рамзи иловагӣ нависед.

Биёед дар сутуни якум шохиси глобалӣ эҷод кунем.

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

Ҳоло, барои зуд ҷустуҷӯ кардани маълумот дар сутуни аввал, мо бояд ба ҷаҳонбинӣ назар кунем ^i ва калидҳои ибтидоиро (id) ёбед, ки ба арзиши дилхоҳи сутуни аввал мувофиқанд.

Ҳангоми ворид кардани арзиш, мо метавонем фавран ҳам арзиш ва ҳам индекси глобалиро барои майдонҳои зарурӣ созем. Ва барои эътимоднокӣ, биёед ҳама чизро дар як транзаксия ҷамъоварӣ кунем.

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

Тафсилот дар бораи чӣ гуна ин корро кардан дар М ҷадвалҳо дар бораи глобалӣ, тақлид кардани нишондиҳандаҳои дуюмдараҷа.

Чунин ҷадвалҳо ҳамон тавре, ки дар пойгоҳи додаҳои анъанавӣ (ё ҳатто тезтар) кор хоҳанд кард, агар функсияҳои дохил кардан/навсозӣ/нест кардани сатрҳо дар COS/M навишта шуда, тартиб дода шаванд.Ман ин изҳоротро бо санҷишҳо оид ба INSERT ва SELECT дар як ҷадвали дусутун, аз ҷумла бо истифода аз фармонҳои TSTART ва TCOMMIT (амалиёт) тафтиш кардам.

Ман сенарияҳои мураккабтарро бо дастрасии ҳамзамон ва муомилоти мувозӣ санҷидаам.

Бидуни истифодаи транзаксияҳо, суръати воридкунӣ 778 воридот/сония ба як миллион арзиш буд.
Бо 300 миллион арзиш - 422 ворид / сония.

Ҳангоми истифодаи транзаксияҳо - 572 замима / сония барои 082 миллион воридот. Ҳама амалиётҳо аз коди тартибдодашудаи M анҷом дода шуданд.
Дискҳои сахт муқаррарӣ мебошанд, на SSD. RAID5 бо навиштани бозгашт. Протсессори Phenom II 1100T.

Барои санҷидани пойгоҳи додаҳои SQL ба ҳамин тарз, шумо бояд тартиби захирашударо нависед, ки воридкуниро дар давра иҷро мекунад. Ҳангоми санҷиши MySQL 5.5 (нигоҳдории InnoDB) бо истифода аз ин усул ман рақамҳое гирифтам, ки на бештар аз 11К варақ дар як сония.
Бале, татбиқи ҷадвалҳо дар глобалӣ назар ба пойгоҳи додаҳои релятсионӣ мураккабтар ба назар мерасад. Аз ин рӯ, пойгоҳи додаҳои саноатӣ дар глобалҳо дастрасии SQL доранд, то кор бо маълумоти ҷадвалро содда кунанд.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Умуман, агар схемаи додаҳо зуд-зуд тағир наёбад, суръати воридкунӣ муҳим нест ва тамоми пойгоҳи додаҳоро метавон ба осонӣ дар шакли ҷадвалҳои муқарраршуда муаррифӣ кард, пас кор бо SQL осонтар аст, зеро он сатҳи баланди абстраксияро таъмин мекунад. .

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Дар ин маврид ман мехостам нишон диҳам Globals метавонад ҳамчун созанда барои эҷоди дигар пойгоҳи додаҳо амал кунад. Мисли ассемблер, ки дар он забонҳои дигар навишта мешаванд. Инҳоянд мисолҳое, ки чӣ тавр шумо метавонед аналогҳоро дар глобалӣ эҷод кунед калид-арзиш, рӯйхатҳо, маҷмӯаҳо, пойгоҳи додаҳои ҷадвалӣ, ба ҳуҷҷат нигаронидашуда.

Агар ба шумо лозим ояд, ки як навъи махзани ғайристандартӣ бо кӯшиши ҳадди ақал эҷод кунед, пас шумо бояд ба ҷаҳониён назар кунед.

3.3 Ҳолати махсус 3. Дарахти дуқабата, ҳар як гиреҳи сатҳи дуюм миқдори муайяни шохаҳо дорад.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Эҳтимол шумо онро тахмин кардаед: ин як амали алтернативии ҷадвалҳо дар ҷаҳон аст. Биёед ин татбиқро бо пештара муқоиса кунем.

Ҷадвалҳо дар дарахти дуқабата vs. дар дарахти якқабата.

Минусы
Плюсы

  1. Барои воридкунӣ сусттар аст, зеро шумо бояд шумораи гиреҳҳоро ба шумораи сутунҳо баробар кунед.
  2. Истеъмоли фазои бештари диск. Азбаски индексҳои глобалӣ (ҳамчун индексҳои массив фаҳмида мешаванд) бо номҳои сутун фазои дискро ишғол мекунанд ва барои ҳар як сатр такрор мешаванд.

  1. Дастрасии тезтар ба арзишҳои сутунҳои алоҳида, зеро зарурати таҳлили сатр вуҷуд надорад. Мувофиқи санҷишҳои ман, он дар 11,5 сутун 2% тезтар аст ва дар шумораи бештари сутунҳо.
  2. Тағир додани схемаи маълумот осонтар аст
  3. Рамзи равшантар

Хулоса: на барои ҳама. Азбаски суръат яке аз бартариҳои калидии глобалӣ аст, истифодаи ин татбиқ аҳамияти кам дорад, зеро он эҳтимолан аз ҷадвалҳо дар пойгоҳи додаҳои релятсионӣ зудтар иҷро намешавад.

3.4 Ҳолати умумӣ. Дарахтон ва дарахтони фармоишӣ

Ҳама гуна сохтори додаҳо, ки метавонад ҳамчун дарахт муаррифӣ карда шавад, ба глобалҳо комилан мувофиқат мекунад.

3.4.1 Объектҳо бо зеробъектҳо

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

Ин соҳаи истифодаи анъанавии глобалӣ мебошад. Дар соҳаи тиб шумораи зиёди бемориҳо, доруҳо, аломатҳо ва усулҳои табобат мавҷуданд. Барои ҳар як бемор ҷадвали дорои як миллион майдон эҷод кардан ғайриоддӣ аст. Гайр аз ин 99 фоизи майдонхо холй хоханд шуд.

Тасаввур кунед, ки базаи SQL-и ҷадвалҳо: "бемор" ~ 100 000 майдон, "Тибб" - 100 000 майдон, "Терапия" - 100 000 майдон, "Мушкилот" - 100 000 майдон ва ғайра. ва ғайра. Ё шумо метавонед пойгоҳи додаҳои ҳазорон ҷадвалро эҷод кунед, ки ҳар яке барои як намуди мушаххаси бемор (ва онҳо метавонанд ба ҳам мувофиқ бошанд!), табобатҳо, доруҳо ва ҳазорҳо ҷадвалҳои дигар барои пайвастшавӣ байни ин ҷадвалҳо.

Глобалҳо барои тиб беҳтаринанд, зеро онҳо ба шумо имкон медиҳанд, ки барои ҳар як бемор тавсифи дақиқи таърихи тиббии ӯ, табобатҳои гуногун ва амали доруҳоро дар шакли дарахт эҷод кунед ва фазои иловагии дискро дар сутунҳои холӣ сарф кунед. ҳолат дар сурати муносибат бошад.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Бо истифода аз глобалӣ эҷод кардани пойгоҳи додаҳо бо маълумот дар бораи одамон қулай аст, вақте ки ҷамъоварӣ ва ба низом даровардани ҳадди аксар маълумоти гуногун дар бораи муштарӣ муҳим аст. Ин дар тиб, бонкдорӣ, маркетинг, бойгонӣ ва ғайра талабот аст

.
Албатта, дар SQL шумо инчунин метавонед дарахтро бо чанд ҷадвал тақлид кунед (EAV, 1,2,3,4,5,6,7,8,9,10), аммо ин хеле мураккабтар аст ва сусттар мешавад. Аслан, шумо бояд глобалиро нависед, ки дар ҷадвалҳо кор мекунад ва тамоми корҳоро бо ҷадвалҳо дар зери қабати абстраксия пинҳон кунед. Тақлид кардани технологияи сатҳи поёнӣ (глобалҳо) бо истифода аз технологияи сатҳи олӣ (SQL) нодуруст аст. номуносиб.

Ба касе пӯшида нест, ки тағир додани схемаи маълумот дар ҷадвалҳои азим (ALTER TABLE) метавонад миқдори зиёди вақтро талаб кунад. Масалан, MySQL ALTER TABLE ADD|DROP COLUMN -ро тавассути пурра нусхабардории маълумот аз ҷадвали кӯҳна ба ҷадвали нав (муҳаррикҳои санҷидашудаи MyISAM, InnoDB) мекунад. Он метавонад як пойгоҳи кории дорои миллиардҳо сабтҳоро дар тӯли рӯзҳо, агар на ҳафтаҳо овезон кунад.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2Тағйир додани сохтори додаҳо, агар мо глобалиро истифода барем, ба мо ҳеҷ чиз намерасонад. Дар ҳар вақт мо метавонем ҳама гуна хосиятҳои наверо, ки ба мо лозим аст, ба ягон объект, дар ҳама сатҳҳои иерархия илова кунем. Тағиротҳое, ки бо тағир додани номи филиалҳо алоқаманданд, метавонанд дар замина дар пойгоҳи додаҳои иҷрошаванда иҷро карда шаванд.


Аз ин рӯ, вақте сухан дар бораи нигоҳ доштани объектҳо бо шумораи зиёди хосиятҳои ихтиёрӣ меравад, глобалҳо интихоби олӣ мебошанд.

Гузашта аз ин, ба шумо хотиррасон мекунам, ки дастрасӣ ба ҳама гуна хосиятҳо фаврӣ аст, зеро дар ҷаҳон ҳама роҳҳо дарахтони B мебошанд.

Пойгоҳи маълумотҳои глобалӣ, дар маҷмӯъ, як навъи махзани ба ҳуҷҷат нигаронидашуда бо қобилияти нигоҳ доштани иттилооти иерархӣ мебошанд. Аз ин рӯ, пойгоҳи додаҳои ба ҳуҷҷат нигаронидашуда метавонанд дар соҳаи нигоҳдории сабтҳои тиббӣ бо ҷаҳониён рақобат кунанд. Аммо он ҳанӯз ҳам ҳамон тавр нестБиёед барои муқоиса MongoDB-ро гирем. Дар ин домен бо сабабҳои зерин ба ҷаҳониён мағлуб мешавад:

  1. Андозаи ҳуҷҷат. Воҳиди нигаҳдорӣ матн дар формати JSON (дақиқтараш BSON) бо ҳаҷми ҳадди аксар тақрибан 16 МБ мебошад. Маҳдудият махсусан барои он сохта шудааст, ки пойгоҳи додаҳои JSON ҳангоми таҳлил суст нашавад, агар дар он ҳуҷҷати бузурги JSON нигоҳ дошта шавад ва сипас тавассути майдонҳо дастрас шавад. Ин ҳуҷҷат бояд тамоми маълумотро дар бораи бемор дар бар гирад. Мо ҳама медонем, ки сабтҳои беморон то чӣ андоза ғафс буда метавонанд. Андозаи максималии корт 16 МБ фавран ба бемороне, ки корти бемориашон файлҳои MRI, сканҳои рентгенӣ ва таҳқиқоти дигарро дар бар мегирад, хотима медиҳад. Дар як шохаи ҷаҳон шумо метавонед гигабайтҳо ва терабайтҳо маълумот дошта бошед. Аслан мо метавонем ба ин хотима диҳем, аммо ман идома медиҳам.
  2. Вақти шуур/тағйир/нест кардани хосиятҳои нав дар диаграммаи бемор. Чунин махзани маълумот бояд тамоми харитаро дар хотира хонад (ин миқдори калон аст!), BSON-ро таҳлил кунад, гиреҳи навро илова/тағйир/тоза кунад, индексҳоро навсозӣ кунад, онро дар BSON баста кунад ва онро дар диск захира кунад. Глобал танҳо бояд ба моликияти мушаххас дастрасӣ пайдо кунад ва онро идора кунад.
  3. Дастрасии зуд ба моликияти инфиродӣ. Бо бисёр хосиятҳо дар ҳуҷҷат ва сохтори бисёрсатҳии он, дастрасӣ ба хосиятҳои инфиродӣ аз сабаби он, ки ҳар як роҳ дар глобалӣ дарахти B мебошад, тезтар мешавад. Дар BSON, шумо бояд ҳуҷҷатро ба таври хаттӣ таҳлил кунед, то моликияти дилхоҳро пайдо кунед.

3.3.2 Массивҳои ассотсиативӣ

Массивҳои ассотсиативӣ (ҳатто бо массивҳои лона) ба глобалҳо комилан мувофиқанд. Масалан, чунин массив аз PHP дар расми якуми 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 Ҳуҷҷатҳои иерархӣ: XML, JSON

Инчунин дар глобалҳо ба осонӣ нигоҳ дошта мешавад. Онро бо роҳҳои гуногун барои нигоҳдорӣ гузоштан мумкин аст.

XML
Роҳи осонтарини тақсим кардани XML ба глобалӣ ин нигоҳ доштани атрибутҳои барчасбҳо дар гиреҳҳо мебошад. Ва агар дастрасии зуд ба атрибутҳои барчасп лозим бошад, мо метавонем онҳоро ба шохаҳои алоҳида интиқол диҳем.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

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

Дар COS ин ба код мувофиқат мекунад:

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

Эзоҳ: Барои XML, JSON, массивҳои ассотсиативӣ, шумо метавонед бо роҳҳои гуногуни намоиш дар глобалҳо пайдо кунед. Дар ин ҳолат, мо тартиби зертегҳоро дар теги ёддошт инъикос накардаем. Дар саросари ҷаҳон ^xml зертегҳо бо тартиби алифбо нишон дода мешаванд. Барои ба таври қатъӣ инъикос кардани тартиб, шумо метавонед, масалан, дисплейи зеринро истифода баред:

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2
JSON.
Тасвири аввал аз фасли 3.3.1 инъикоси ин ҳуҷҷати JSON-ро нишон медиҳад:

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

3.3.4 Сохторҳои шабеҳе, ки бо муносибатҳои иерархӣ алоқаманданд

Намунаҳо: сохтори офисҳои фурӯш, ҷойгиршавии одамон дар сохтори MLM, базаи кушодани шоҳмот.

Базаи дебютҳо. Шумо метавонед баҳодиҳии қувваи зарбаро ҳамчун арзиши индекси гиреҳи глобалӣ истифода баред. Сипас, барои интихоби қавитарин ҳаракат, интихоби шохаи дорои вазни бештар кофӣ хоҳад буд. Дар ҷаҳон, ҳама шохаҳо дар ҳар сатҳ аз рӯи қувваи ҳаракат ҷудо карда мешаванд.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

Сохтори офисҳои фурӯш, сохтори одамон дар MLM. Гиреҳҳо метавонанд арзишҳои кэшро нигоҳ доранд, ки хусусиятҳои тамоми зердарахтро инъикос мекунанд. Масалан, ҳаҷми фурӯши зердарахти додашуда. Дар хар лахза мо метавонем ракамеро гирем, ки комьёбихои хар сохаро инъикос мекунад.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Дарахтон. Қисми 2

4. Дар кадом ҳолатҳо истифодаи глобалӣ бештар фоиданок аст?

Сутуни якум ҳолатҳоеро пешниҳод мекунад, ки шумо тавассути истифодаи глобалӣ суръати назаррас ба даст меоред ва дуюм ҳангоми содда кардани тарҳ ё модели додаҳо.

Суръат
Осонии коркард / муаррифии маълумот

  1. Ҷойгиркунӣ [бо навъбандии худкор дар ҳар сатҳ], [индексгузорӣ бо калиди асосӣ]
  2. Хориҷ кардани зердарахтҳо
  3. Объектҳое, ки дорои хосиятҳои зиёди лона доранд, ки дастрасии инфиродӣ талаб мекунанд
  4. Сохтори иерархӣ бо қобилияти гузаштан аз шохаҳои кӯдак аз ҳама шохаҳо, ҳатто аз шохаҳои мавҷуда
  5. Амиқ-аввал гузариши зердарахтҳо
  1. Объектҳо/объектҳо бо миқдори зиёди хосиятҳо/объектҳои ихтиёрӣ [ва/ё лона гузошташуда]
  2. Маълумоти бе схема. Вақте ки хосиятҳои нав аксар вақт пайдо мешаванд ва кӯҳнаҳо нопадид мешаванд.
  3. Ба шумо лозим аст, ки пойгоҳи додаҳои фармоиширо эҷод кунед.
  4. Асосҳои роҳ ва дарахтони қарор. Вақте ки роҳҳоро ҳамчун дарахт муаррифӣ кардан қулай аст.
  5. Хориҷ кардани сохторҳои иерархӣ бе истифодаи рекурсия

Идома ... "Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3".

Радди: Ин мақола ва шарҳҳои ман ба он ақидаи мананд ва ба мавқеи расмии InterSystems Corporation иртибот надоранд.

Манбаъ: will.com

Илова Эзоҳ