Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 1 бөлүк

Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 1 бөлүк Чыныгы маалымат базасы кылычтары - глобалдык - көптөн бери белгилүү, бирок дагы эле аз адамдар аларды кантип натыйжалуу колдонууну билишет же бул супер куралга такыр ээ эмес.

Эгерде сиз глобалдык маселелерди чечүүдө алар чындап эле жакшы болгон нерселерди колдонсоңуз, анда сонун натыйжаларга жетише аласыз. Же өндүрүмдүүлүктө же маселенин чечилишин жөнөкөйлөтүүдө (1, 2).

Глобалдар - бул SQLдеги таблицалардан таптакыр айырмаланган маалыматтарды сактоонун жана иштетүүнүн өзгөчө жолу. Алар 1966-жылы тилде пайда болгон M(UMPS) (эволюциялык өнүгүү - ObjectScript кэш, мындан ары COS) медициналык маалымат базасында жана дагы эле бар активдүү колдонулат, ошондой эле ишенимдүүлүк жана жогорку өндүрүмдүүлүк талап кылынган кээ бир башка чөйрөлөргө да кирген: каржы, соода ж.б.

Заманбап DBMSдеги глобалдуулар транзакцияларды, журналдарды каттоону, репликациялоону жана бөлүүнү колдойт. Ошол. алар заманбап, ишенимдүү, бөлүштүрүлгөн жана тез системаларды куруу үчүн колдонулушу мүмкүн.

Глобалдар сизди реляциялык модель менен чектебейт. Алар сизге белгилүү бир тапшырмалар үчүн оптималдаштырылган маалымат структураларын иштеп чыгуу эркиндигин берет. Көптөгөн тиркемелер үчүн глобалдарды акылдуу колдонуу чындап эле жашыруун курал болуп, реляциялык тиркемелерди иштеп чыгуучулар кыялдангандай аткарууну камсыздай алат.

Глобалдар маалыматтарды сактоонун бир жолу катары көптөгөн заманбап программалоо тилдеринде, жогорку деңгээлдеги жана төмөнкү деңгээлдеги да колдонулушу мүмкүн. Ошондуктан, бул макалада мен глобалдык тилдерге эмес, алар качан келген тилге өзгөчө көңүл бурам.

2. Глобалдар кантип иштейт

Келгиле, адегенде глобалдар кантип иштээрин жана алардын күчтүү жактары эмнеде экенин түшүнүп алалы. Глобалдарды ар кандай көз караш менен кароого болот. Макаланын бул бөлүгүндө биз аларды дарак катары карайбыз. Же иерархиялык маалымат кампалары сыяктуу.

Жөнөкөй сөз менен айтканда, глобалдык - бул туруктуу массив. Дискке автоматтык түрдө сакталган массив.
Маалыматтарды сактоо үчүн жөнөкөй нерсени элестетүү кыйын. Коддо (COS/M тилдеринде) ал кадимки ассоциативдик массивден символу менен гана айырмаланат. ^ аты алдында.

Глобалдык маалыматтарды сактоо үчүн SQL суроо тилин үйрөнүүнүн кереги жок, алар менен иштөө үчүн буйруктар абдан жөнөкөй. Аларды бир сааттын ичинде үйрөнсө болот.

Эң жөнөкөй мисалдан баштайлы. 2 бутактары бар бир деңгээлдүү дарак. Мисалдар COS тилинде жазылган.

Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 1 бөлүк

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



Глобалдык (Орнотуу буйругу) маалыматты киргизүүдө 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 кэш үчүн. Дарактагы деңгээлдердин саны (өлчөмдөрдүн саны) 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. Ички каталогдор жана файлдар менен каталогдорду жок кылуу ылдамдыгы кескин жогорулайт. Хабреде миллиондогон майда файлдарды жок кылуу канчалык узак жана кыйын экендиги жөнүндө көп жолу макалалар чыккан (1, 2). Бирок, эгерде сиз глобалдык псевдофайлдык системаны жасасаңыз, анда ал секунда же анын бөлчөк бөлүгүн алат. Мен үйдөгү компьютерде ички дарактарды жок кылууну сынаганымда, ал HDDдеги (SSD эмес) эки деңгээлдүү дарактан 1 секунданын ичинде 96-341 миллион түйүн алып салды. Андан тышкары, биз глобалдык файлды эле эмес, дарактын бир бөлүгүн жок кылуу жөнүндө болуп жатабыз.

Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 1 бөлүк
Көбүрөөк дарактарды жок кылуу глобалдык дагы бир күчтүү нерсе. Бул үчүн рекурсиянын кереги жок. Бул укмуштуудай тез болот.

Биздин даракта муну буйрук менен жасоого болот өлтүрүү.

Kill ^a("+7926X")

Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 1 бөлүк

Глобалдык масштабда кандай аракеттер бар экенин жакшыраак түшүнүү үчүн мен кыскача таблицаны берем.

Негизги буйруктар жана COS глобалдык менен иштөө үчүн милдеттери

коюлган
Түйүнгө бутактарды коюу (эгерде али аныктала элек болсо) жана түйүн маанилери

кошулуу
Кошумча даракты көчүрүү

өлтүрүү
Кошумча даракты алып салуу

ZKill
Белгилүү бир түйүндүн маанисин жок кылуу. Түйүндөн чыккан субтерек тийбейт

$Query
Дарактын толук өтүшү, дарактын тереңине баруу

$Order
Белгилүү бир түйүндүн бутактарын аралап өтүү

$Data
Түйүндүн аныкталгандыгын текшерүү

$Increment
Түйүн маанисин атомдук түрдө көбөйтүү. Окуу жана жазууну болтурбоо үчүн, ACID үчүн. Жакында өзгөртүү сунушталды $Sequence

Көңүл бурганыңыз үчүн рахмат, суроолоруңузга жооп берүүгө даярбыз.

баш тартуу: Бул макала жана ага менин комментарийлерим менин оюм жана InterSystems Corporation расмий позициясына эч кандай тиешеси жок.

узартуу Глобалдар маалыматтарды сактоо үчүн кенч-кылычтар болуп саналат. Дарактар. 2 бөлүк. Глобалдарда кандай маалыматтарды көрсөтүүгө болоорун жана алар кандай тапшырмаларда максималдуу пайда алып келерин билесиз.

Source: www.habr.com

Комментарий кошуу