Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 1-бөлім

Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 1-бөлім Нағыз деректер базасының қылыштары - жаһандық - бұрыннан белгілі, бірақ әлі де оларды қалай тиімді пайдалану керектігін біледі немесе бұл супер қаруға мүлде ие емес.

Егер сіз шынымен жақсы болатын мәселелерді шешу үшін глобальды қолдансаңыз, керемет нәтижелерге қол жеткізе аласыз. Не өнімділікте, не мәселені шешуді жеңілдетуде (1, 2).

Globals - бұл SQL-дегі кестелерден мүлде өзгеше деректерді сақтау және өңдеудің ерекше тәсілі. Олар 1966 жылы тілде пайда болды M(UMPS) (эволюциялық даму - ObjectScript кэш, бұдан әрі COS) медициналық деректер базасында және әлі де бар белсенді қолданылады, сонымен қатар сенімділік пен жоғары өнімділік талап етілетін кейбір басқа салаларға еніп кетті: қаржы, сауда және т.б.

Заманауи ДҚБЖ-дағы глобалдар транзакцияларды, журналдарды тіркеуді, репликациялауды және бөлуді қолдайды. Анау. олар заманауи, сенімді, бөлінген және жылдам жүйелерді құру үшін пайдаланылуы мүмкін.

Ғаламшарлар сізді реляциялық модельмен шектемейді. Олар сізге нақты тапсырмалар үшін оңтайландырылған деректер құрылымдарын әзірлеуге еркіндік береді. Көптеген қолданбалар үшін ғаламдық құралдарды ақылды пайдалану шынымен де құпия қару болуы мүмкін, бұл реляциялық қолданбаларды әзірлеушілер армандай алатын өнімділікті қамтамасыз етеді.

Деректерді сақтау тәсілі ретінде глобальды көптеген заманауи бағдарламалау тілдерінде, жоғары деңгейлі де, төмен деңгейлі де қолдануға болады. Сондықтан, бұл мақалада мен олардың бір кездері шыққан тілге емес, жаһандықтарға ерекше назар аударамын.

2. Ғаламшарлар қалай жұмыс істейді

Алдымен жаһандықтардың қалай жұмыс істейтінін және олардың күшті жақтары қандай екенін түсінейік. Ғаламдықтарды әртүрлі көзқараспен қарауға болады. Мақаланың осы бөлігінде біз оларды ағаштар ретінде қарастырамыз. Немесе иерархиялық деректер қоймалары сияқты.

Қарапайым тілмен айтқанда, жаһандық - тұрақты массив. Дискіге автоматты түрде сақталатын массив.
Деректерді сақтау үшін қарапайым нәрсені елестету қиын. Кодта (COS/M тілдерінде) ол кәдімгі ассоциативті массивтен тек символымен ерекшеленеді. ^ атының алдында.

Деректерді ғаламдық деңгейде сақтау үшін SQL сұрау тілін үйренудің қажеті жоқ, олармен жұмыс істеу командалары өте қарапайым. Оларды бір сағатта үйренуге болады.

Ең қарапайым мысалдан бастайық. 2 бұтағы бар бір деңгейлі ағаш. Мысалдар COS тілінде жазылған.

Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 1-бөлім

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



Ғаламдық (Орнату пәрмені) ақпаратты енгізу кезінде автоматты түрде 3 нәрсе орын алады:

  1. Деректерді дискіге сақтау.
  2. Индекстеу. Жақшаның ішінде кілт болып табылады (ағылшын әдебиетінде – «жазба»), ал теңдердің оң жағында мән («түйін мәні»).
  3. Сұрыптау. Деректер кілт бойынша сұрыпталады. Болашақта массивті айналып өту кезінде бірінші элемент «Сергей Смит», екіншісі «Джон Сидоров» болады. Жаһандық пайдаланушылардың тізімін алу кезінде деректер базасы сұрыптауға уақытты жоғалтпайды. Сонымен қатар, кез келген кілттен, тіпті жоқ кілттен бастап сұрыпталған тізімнің шығысын сұрауға болады (шығыс жоқ кілттен кейін келетін бірінші нақты кілттен басталады).

Бұл операциялардың барлығы керемет жылдам орындалады. Менің үйдегі компьютерімде бір процесте 750 000 кірістіру/сек дейінгі мәндерді алдым. Көп ядролы процессорларда мәндерге жетуге болады ондаған миллион кірістіру/сек.

Әрине, кірістіру жылдамдығының өзі көп нәрсені білдірмейді. Сіз, мысалы, мәтіндік файлдарға ақпаратты өте жылдам жаза аласыз - осылай қауесеттерге сәйкес Виза рәсімдеу жұмыстары. Бірақ жаһандық жағдайда біз болашақта оңай және жылдам жұмыс істеуге болатын құрылымдық индекстелген жадты аламыз.

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

Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 1-бөлім
Ішкі ағаштарды жою - жаһандықтардың тағы бір күшті нүктесі. Бұл үшін сізге рекурсия қажет емес. Бұл керемет тез орын алады.

Біздің ағашта мұны пәрмен арқылы жасауға болады Kill.

Kill ^a("+7926X")

Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 1-бөлім

Ғаламдық елдерде бізге қандай әрекеттер қол жетімді екенін жақсырақ түсіну үшін мен қысқаша кесте беремін.

COS жүйесінде глобальдермен жұмыс істеуге арналған негізгі командалар мен функциялар

жиынтық
Түйінге тармақтарды орнату (егер әлі анықталмаған болса) және түйін мәндері

Біріктіру
Ішкі ағашты көшіру

Kill
Ішкі ағашты жою

ZKill
Белгілі бір түйіннің мәнін жою. Түйіннен шығатын ішкі ағаш ұсталмайды

$Query
Ағашты толық айналып өту, ағашқа терең кіру

$Тапсырыс
Белгілі бір түйіннің тармақтарын айналып өту

$Data
Түйіннің анықталғанын тексеру

$Increment
Түйін мәнін атомдық түрде арттыру. Оқу мен жазуды болдырмау үшін, ACID үшін. Жақында оны өзгерту ұсынылды $Sequence

Назарларыңызға рахмет, сұрақтарыңызға жауап беруге дайынбыз.

Жауапкершіліктен бас тарту: Бұл мақала және оған менің пікірлерім менің пікірім және InterSystems корпорациясының ресми ұстанымына қатысы жоқ.

Жалғастыру Ғаламшарлар деректерді сақтауға арналған қазына қылыштары болып табылады. Ағаштар. 2-бөлім. Сіз ғаламдық құрылғыларда қандай деректер түрлерін көрсетуге болатынын және олар қандай тапсырмаларда максималды пайда беретінін білесіз.

Ақпарат көзі: www.habr.com

пікір қалдыру