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);
// Իրական համակարգում անհրաժեշտ է կապվել համապատասխան շարդի տվյալների բազայի հետ
?>