Кіріспе

Деректер қорын индекстеудің кері стратегиясы
Кері индекс (DBMS)

Деректерді басқару жүйелері әртүрлі қолданбаларда өнімділікті және деректердің сақтығын жақсарту үшін түрлі индекс түрлерін ұсынады. Индекс түрлеріне b-ағаштар, биттік карталар және r-ағаштар жатады. Деректерді басқару жүйелерінде кері кілт индексі стратегиясы кілт мәнін индекске енгізер алдында керітеді. Мысалы, 24538 мәні индексте 83542 болып өзгереді. Кілт мәнін керіте беру, әсіресе, әрбір жаңа кілт мәні алдыңғысынан үлкен болатын, яғни мәндер монотонды түрде өсетін реттік нөмірлер сияқты деректерді индекстеу үшін тиімді. Кері кілт индекстері жоғары көлемді транзакцияларды өңдеу жүйелерінде ерекше маңызға ие, себебі олар индекс блоктарына талас тудыруды азайтады.

Деректерді құру

Кері кілт индекстері b ағаш құрылымдарын пайдаланады, бірақ кілт мәндерін енгізу алдында алдын ала өңдейді. Тұрақтандыру үшін, b ағаштары ұқсас мәндерді бір индекс блогына орналастырады, мысалы, 24538 және 24539 бір блокқа сақталады. Бұл оларды нақты мәнді іздеуде де, белгілі бір диапазон ішіндегі мәндерді табуда да тиімді етеді. Дегенмен, егер қолданба мәндерді тізбекпен енгізсе, әрбір енгізу жаңа мәнді қосу үшін индекстегі ең соңғы блокқа қол жеткізуі керек. Егер көптеген пайдаланушылар бір уақытта енгізуге тырысса, олардың барлығы сол блокқа жазуға тырысып, кезекке тұруға мәжбүр болады, бұл қолданбаның жұмысын баяулатады. Бұл мәселе кластерленген деректер базаларында ерекше айқын болады, онда блок келесі пайдаланушының енгізуін жүзеге асыруына мүмкіндік беру үшін бір компьютердің жадынан екіншісіне көшірілуі мүмкін. Кілтті кері аудару ұқсас жаңа мәндерді бір жапырақ блокке шоғырландырудың орнына, бүкіл индекс бойынша таратып береді. Яғни, 24538 14538-мен бір блокқа, ал 24539 басқа блокқа түседі, бұл қақтығыстың себебін жояды. (14538, 24538-ден бұрын жасалғандықтан, олардың енгізілуі бір-біріне кедергі келтірмейді.)

Сұрау салу деректері

Кері индекстер нақты мәндерді табу үшін кері емес индекстердей тиімді, бірақ олар диапазондық сұраныстар үшін көмектеспейді. Диапазондық сұраныстар реттік нөмірлер сияқты жасалма мәндер үшін сирек кездеседі. Индекс бойынша іздеу кезінде сұраныс процессор ізделіп жатқан мәнді іздеуден бұрын керітеді.

Деректерді өшіру

Әдетте, қосымшалар жаңа деректерді өшірмес бұрын орташа есеппен ескі деректерді өшіреді. Сондықтан, кіші реттік нөмірлері бар деректер, әдетте, үлкен мәндері бар деректерге дейін өшіріледі. Уақыт өте келе, стандартты b-ағаштарында кіші мәндерге арналған индекс блоктарында азын-малы мәндер қалады, соған сәйкес бос орын көбейеді, бұл "шірік" деп аталады. Шірік тек орынды ғана ысыраптап қоймайды, сонымен қатар сұраныс жылдамдығын төмендетеді, себебі шіріген индекс блоктарының аз бөлігі бір уақытта жадқа сыяды. b-ағашында, егер 14538 саны өшірілсе, оның индекс орыны бос қалады.