Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1 Տվյալների բազայի իրական թրերը՝ գլոբալները, վաղուց հայտնի են, բայց դեռ քչերը գիտեն, թե ինչպես դրանք արդյունավետ օգտագործել կամ ընդհանրապես չունեն այս գերզենքի սեփականատերը:

Եթե ​​դուք օգտագործում եք գլոբալներին այն խնդիրների լուծման համար, որոնցում նրանք իսկապես լավ են, կարող եք հասնել ակնառու արդյունքների: Կա՛մ արտադրողականության, կա՛մ խնդրի լուծման պարզեցման մեջ (1, 2).

Գլոբալները տվյալների պահպանման և մշակման հատուկ միջոց են, որոնք բոլորովին տարբերվում են SQL-ի աղյուսակներից: Լեզվի մեջ հայտնվել են 1966թ M(UMPS) (էվոլյուցիոն զարգացում - Cache ObjectScript, այսուհետ՝ COS) բժշկական տվյալների բազայում և դեռ այնտեղ է ակտիվորեն օգտագործվում է, և նաև ներթափանցեց որոշ այլ ոլորտներ, որտեղ պահանջվում է հուսալիություն և բարձր կատարողականություն՝ ֆինանսներ, առևտուր և այլն:

Ժամանակակից DBMS-ների գլոբալները աջակցում են գործարքների, գրանցման, կրկնօրինակման և բաժանման: Նրանք. դրանք կարող են օգտագործվել ժամանակակից, հուսալի, բաշխված և արագ համակարգեր կառուցելու համար:

Գլոբալները ձեզ չեն սահմանափակում հարաբերական մոդելով: Նրանք ձեզ ազատություն են տալիս մշակելու տվյալների կառուցվածքներ, որոնք օպտիմիզացված են կոնկրետ առաջադրանքների համար: Բազմաթիվ հավելվածների համար գլոբալների խելացի օգտագործումը իսկապես կարող է լինել գաղտնի զենք՝ ապահովելով արդյունավետություն, որի մասին հարաբերական հավելված մշակողները կարող են միայն երազել:

Գլոբալները՝ որպես տվյալների պահպանման միջոց, կարող են օգտագործվել ժամանակակից ծրագրավորման բազմաթիվ լեզուներում՝ ինչպես բարձր մակարդակի, այնպես էլ ցածր մակարդակի: Հետևաբար, այս հոդվածում ես հատուկ կկենտրոնանամ գլոբալների վրա, և ոչ թե այն լեզվի, որտեղից նրանք ժամանակին եկել են:

2. Ինչպես են աշխատում գլոբալները

Եկեք նախ հասկանանք, թե ինչպես են աշխատում գլոբալները և որոնք են նրանց ուժեղ կողմերը: Գլոբալներին կարելի է տարբեր տեսանկյուններից նայել։ Հոդվածի այս մասում մենք նրանց կդիտարկենք որպես ծառեր։ Կամ հիերարխիկ տվյալների պահեստների նման:

Պարզ ասած, գլոբալը մշտական ​​զանգված է: Զանգված, որն ավտոմատ կերպով պահվում է սկավառակի վրա:
Տվյալների պահպանման համար ավելի պարզ բան դժվար է պատկերացնել: Կոդով (COS/M լեզուներով) այն սովորական ասոցիատիվ զանգվածից տարբերվում է միայն սիմվոլով ^ անունից առաջ.

Տվյալները գլոբալում պահպանելու համար ձեզ հարկավոր չէ սովորել SQL հարցումների լեզուն, դրանց հետ աշխատելու հրամանները շատ պարզ են: Դրանք կարելի է սովորել մեկ ժամում։

Սկսենք ամենապարզ օրինակից. Միահարկ ծառ 2 ճյուղով։ Օրինակները գրված են COS-ում:

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



Տեղեկատվությունը գլոբալ (Set հրաման) տեղադրելու ժամանակ ավտոմատ կերպով տեղի է ունենում 3 բան.

  1. Տվյալների պահպանում սկավառակի վրա:
  2. Ինդեքսավորում. Այն, ինչ կա փակագծերում, բանալին է (անգլերեն գրականության մեջ՝ «ենթակետ»), իսկ հավասարից աջ՝ արժեքն է («հանգույցի արժեք»):
  3. Տեսակավորում. Տվյալները դասավորված են ըստ բանալիի: Հետագայում, զանգվածով անցնելիս, առաջին տարրը կլինի «Սերգեյ Սմիթը», իսկ երկրորդը՝ «Ջոն Սիդորովը»: Գլոբալից օգտվողների ցուցակ ստանալիս տվյալների բազան ժամանակ չի վատնում տեսակավորելու համար։ Ավելին, դուք կարող եք պահանջել տեսակավորված ցուցակի ելք՝ սկսած ցանկացած, նույնիսկ գոյություն չունեցող բանալիից (ելքը կսկսվի առաջին իրական բանալիից, որը գալիս է գոյություն չունեցողից հետո)։

Այս բոլոր գործողությունները կատարվում են աներևակայելի արագ: Իմ տնային համակարգչում ես ստանում էի արժեքներ մինչև 750 ներդիր/վրկ մեկ գործընթացում: Բազմամիջուկ պրոցեսորների վրա արժեքները կարող են հասնել տասնյակ միլիոններ ներդիրներ/վրկ.

Իհարկե, ներդրման արագությունն ինքնին շատ բան չի ասում: Դուք կարող եք, օրինակ, շատ արագ տեղեկատվություն գրել տեքստային ֆայլերի մեջ՝ այսպես ասեկոսե Վիզայի մշակման աշխատանքներ. Բայց գլոբալների դեպքում արդյունքում մենք ստանում ենք կառուցվածքային ինդեքսավորված պահեստավորում, որի հետ կարելի է հեշտությամբ և արագ աշխատել ապագայում։

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

  • Գլոբալների ամենամեծ ուժը նոր հանգույցների տեղադրման արագությունն է:
  • Համաշխարհային տվյալները միշտ ինդեքսավորվում են: Դրանց անցնելը և՛ մեկ մակարդակի վրա, և՛ ծառի խորքում, միշտ արագ է:

Գլոբալին ավելացնենք երկրորդ և երրորդ մակարդակների ևս մի քանի ճյուղեր։

Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Ակնհայտ է, որ գլոբալների հիման վրա կարելի է բազմաստիճան ծառեր կառուցել։ Ավելին, ցանկացած հանգույց մուտք գործելը գրեթե ակնթարթային է` ներդրման ժամանակ ավտոմատ ինդեքսավորման շնորհիվ: Եվ ծառի ցանկացած մակարդակում բոլոր ճյուղերը դասավորված են ըստ բանալիի:

Ինչպես տեսնում եք, տեղեկատվությունը կարող է պահվել և՛ բանալիով, և՛ արժեքով: Բանալի ընդհանուր երկարությունը (բոլոր ինդեքսների երկարությունների գումարը) կարող է հասնել 511 բայթև արժեքները 3.6 MB Cache-ի համար: Ծառի մակարդակների թիվը (չափերի քանակը) 31 է:

Մեկ այլ հետաքրքիր կետ. Դուք կարող եք ծառ կառուցել առանց վերին մակարդակների հանգույցների արժեքները նշելու:

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

Դատարկ շրջանակները հանգույցներ են, որոնք չունեն նշանակված արժեք:

Գլոբալներին ավելի լավ հասկանալու համար եկեք դրանք համեմատենք այլ ծառերի հետ՝ պարտեզի ծառեր և ֆայլային համակարգի անունների ծառեր։

Եկեք համեմատենք գլոբալների ծառերը մեզ համար առավել ծանոթ հիերարխիկ կառուցվածքներով. սովորական ծառերի հետ, որոնք աճում են այգիներում և դաշտերում, ինչպես նաև ֆայլային համակարգերի հետ:

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Ինչպես տեսնում ենք այգու ծառերում, տերևներն ու պտուղները հանդիպում են միայն ճյուղերի ծայրերում։
Ֆայլային համակարգեր - տեղեկատվությունը պահվում է միայն մասնաճյուղերի ծայրերում, որոնք լիովին որակավորված ֆայլերի անուններ են:

Եվ ահա տվյալների գլոբալ կառուցվածքը:

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1Տարբերությունները `

  1. Ներքին հանգույցներ. գլոբալ տեղեկատվությունը կարող է պահվել յուրաքանչյուր հանգույցում, ոչ միայն ճյուղերի ծայրերում:
  2. Արտաքին հանգույցներ. Գլոբալը պետք է ունենա ճյուղերի ծայրերում սահմանված արժեքներ, մինչդեռ FS-ը և պարտեզի ծառերը չունեն:



Ներքին հանգույցների առումով մենք կարող ենք ասել, որ գլոբալ կառուցվածքը ֆայլային համակարգերի և պարտեզի ծառերի անունների ծառերի կառուցվածքի գերհամախումբն է: Նրանք. ավելի ճկուն:

Ընդհանուր առմամբ գլոբալն է պատվիրված ծառ՝ յուրաքանչյուր հանգույցում տվյալներ պահելու ունակությամբ.

Գլոբալների աշխատանքը ավելի լավ հասկանալու համար պատկերացրեք, թե ինչ կլինի, եթե ֆայլային համակարգերի ստեղծողները տեղեկատվություն պահելու համար օգտագործեն գլոբալների նման մոտեցում:

  1. Գրացուցակում մեկ ֆայլ ջնջելը ավտոմատ կերպով կջնջի գրացուցակը, ինչպես նաև բոլոր այն դիրեկտորիաները, որոնք պարունակում են միայն ջնջված մեկ գրացուցակը:
  2. Գրացուցակների կարիք չի լինի: Պարզապես կլինեն ենթաֆայլերով ֆայլեր և առանց ենթաֆայլերի ֆայլեր: Եթե ​​համեմատենք սովորական ծառի հետ, ապա յուրաքանչյուր ճյուղ կդառնար պտուղ։

    Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

  3. README.txt ֆայլերի նման բաները կարող են անհրաժեշտ չլինել: Այն ամենը, ինչ անհրաժեշտ էր ասել գրացուցակի բովանդակության մասին, կարող էր գրվել հենց գրացուցակի ֆայլում: Ճանապարհի տարածության մեջ ֆայլի անունը չի տարբերվում գրացուցակի անունից, այնպես որ հնարավոր էր միայն ֆայլերով անցնել:
  4. Տեղադրված ենթագրքերով և ֆայլերով դիրեկտորիաների ջնջման արագությունը կտրուկ կավելանա: Habré-ում բազմիցս եղել են հոդվածներ այն մասին, թե որքան երկար և դժվար է ջնջել միլիոնավոր փոքր ֆայլեր (1, 2) Այնուամենայնիվ, եթե դուք կեղծ ֆայլային համակարգ ստեղծեք գլոբալում, ապա դրա համար վայրկյաններ կամ կոտորակներ կպահանջվեն: Երբ ես փորձեցի ջնջել ենթածառերը տնային համակարգչում, այն 1 վայրկյանում հեռացրեց 96-341 միլիոն հանգույց HDD-ի (ոչ SSD) երկհարկանի ծառից: Ավելին, մենք խոսում ենք ծառի մի մասը ջնջելու մասին, և ոչ միայն ամբողջ ֆայլը գլոբալներով։

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1
Ենթածառերի հեռացումը գլոբալների մեկ այլ ուժեղ կետ է: Դրա համար ռեկուրսիա պետք չէ: Սա տեղի է ունենում անհավատալի արագ:

Մեր ծառում դա կարելի էր անել հրամանով Սպանել.

Kill ^a("+7926X")

Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 1

Ավելի լավ հասկանալու համար, թե ինչ գործողություններ են մեզ հասանելի գլոբալների նկատմամբ, ես կտրամադրեմ կարճ աղյուսակ:

Հիմնական հրամաններ և գործառույթներ COS-ում գլոբալների հետ աշխատելու համար

հավաքածու
Ճյուղերի սահմանում դեպի հանգույց (եթե դեռ սահմանված չէ) և հանգույցի արժեքները

Ընկղմել
Ենթածառի պատճենում

Սպանել
Ենթածառի հեռացում

ZKill
Ջնջել որոշակի հանգույցի արժեքը: Հանգույցից առաջացող ենթածառը չի դիպչում

$Query
Ծառի ամբողջական անցում, խորանալով ծառի մեջ

$Order
Հատուկ հանգույցի ճյուղերի անցում

$Data
Ստուգում, թե արդյոք սահմանված է հանգույց

$Ավելացում
Հանգույցի արժեքի ատոմային ավելացում: ACID-ի համար կարդալ և գրելուց խուսափելու համար: Վերջերս առաջարկվել է փոխել $Հաջորդականություն

Շնորհակալություն ուշադրության համար, մենք պատրաստ ենք պատասխանել ձեր հարցերին։

Հրաժարում պատասխանատվությունից: Այս հոդվածը և դրա վերաբերյալ իմ մեկնաբանությունները իմ կարծիքն են և որևէ առնչություն չունեն InterSystems Corporation-ի պաշտոնական դիրքորոշման հետ:

Շարունակությունը Գլոբալները գանձ-սրեր են տվյալների պահպանման համար: Ծառեր. Մաս 2. Դուք կիմանաք, թե ինչ տեսակի տվյալներ կարող են ցուցադրվել գլոբալների վրա և ինչ խնդիրների վրա են դրանք ապահովում առավելագույն օգուտ:

Source: www.habr.com

Добавить комментарий