Sobes.tech
Middle+

Ի՞նչ է հորիզոնական շարդավորումը։

sobes.tech AI

Պատասխան AI-ից

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

Հորիզոնական շարդավորման առավելությունները՝

  • Մասշտաբայնություն՝ թույլ է տալիս մշակել աճող տվյալների ծավալը և տրաֆիկը՝ ավելացնելով նոր սերվերներ շարդերի պահեստավորման համար։
  • Արդյունավետություն՝ նվազեցնում է յուրաքանչյուր սերվերի հետ աշխատող տվյալների ծավալը, ինչը արագացնում է հարցումների կատարմանը։
  • Հասանելիություն՝ եթե մի շարդ դառնա անհասանելի, մնացած շարդերը շարունակում են գործել։
  • Բեռնաթափում՝ բաշխում է ներմուծման/արտահանումը մի քանի սերվերների միջև։

Հորիզոնական շարդավորման թերությունները՝

  • Կարծրություն՝ շարդավորման ներդրումը և կառավարումը պահանջում է մեծ ինժեներական ջանքեր։
  • Բաշխված գործարքներ՝ մի քանի շարդներ ընդգրկող գործարքները բարդ են իրականացնել և կարող են նվազեցնել կատարողականությունը։
  • Վերաբալանսավորում՝ տվյալների վերաօգտագործումը շարդների միջև՝ բեռի փոփոխության կամ նոր սերվերների ավելացման դեպքում, կարող է լինել բարդ և ռեսուրսներ պահանջող։
  • Հարցումներ շարդների միջև՝ հարցումները, որոնք պահանջում են տվյալների միավորում տարբեր շարդներից, կարող են լինել անարդյունավետ։

Շարդավորման մեթոդներ՝

  • Տարածաշրջանային շարդավորում՝ տվյալները բաժանվում են արժեքների տիրույթների հիման վրա։
  • Հեշային շարդավորում՝ տվյալները բաժանվում են հեշ արժեքի հիման վրա։
  • Ձեռնարկային շարդավորում՝ համապատասխան աղյուսակը ցույց է տալիս, թե որ շարդում են որոշ տվյալներ կամ տվյալների տիրույթներ։

Պարզեցված շարդավորման օրինակ՝

Կան մեծ տվյալներով օգտվողների աղյուսակ։ Փոխարենը, որ բոլոր օգտվողներին պահենք մեկ սերվերում, կարող ենք բաժանել նրանց առաջին տառով ազգանվան՝

  • Շարդ 1՝ ազգանվան առաջին տառը Ա-ից E։
  • Շարդ 2՝ ազգանվան առաջին տառը Ж-ից Լ։
  • Շարդ 3՝ ազգանվան առաջին տառը Մ-ից Ս։
  • Շարդ 4՝ ազգանվան առաջին տառը Տ-ից Յ։

Յուրաքանչյուր շարդ պահվում է առանձին սերվերում։

<?php

// Օրինակ ֆունկցիա, որը որոշում է շարդը ազգանվան հիման վրա
function determineShardByLastName(string $lastName): int
{
    $firstLetter = mb_strtoupper(mb_substr($lastName, 0, 1));

    if ($firstLetter >= 'Ա' && $firstLetter <= 'Ե') {
        return 1;
    } elseif ($firstLetter >= 'Ж' && $firstLetter <= 'Լ') {
        return 2;
    } elseif ($firstLetter >= 'М' && $firstLetter <= 'С') {
        return 3;
    } elseif ($firstLetter >= 'Տ' && $firstLetter <= 'Յ') {
        return 4;
    }

    return 0; // Վերադարձնում է 0՝ անորոշ դեպքերում
}

// Օգտագործում
$lastName = "Иванов";
$shardId = determineShardByLastName($lastName);
// Իրական համակարգում անհրաժեշտ է կապվել համապատասխան շարդի տվյալների բազայի հետ

?>