Az Azure Synapse SQL architektúrája
Ez a cikk a Synapse SQL architektúraösszetevőit ismerteti. Azt is ismerteti, hogy Azure Synapse SQL hogyan egyesíti az elosztott lekérdezésfeldolgozási képességeket az Azure Storage-ral a nagy teljesítmény és a méretezhetőség érdekében.
Synapse SQL-architektúra összetevői
A Synapse SQL vertikális felskálázási architektúrával osztja el az adatok számítási feldolgozását több csomópont között. A számítás elkülönül a tárterülettől, így a rendszer adataitól függetlenül skálázhatja a számításokat.
Dedikált SQL-készlet esetén a skálázási egység a számítási teljesítmény absztrakciója, amelyet adattárházegységnek neveznek.
Kiszolgáló nélküli SQL-készlet esetén a kiszolgáló nélküli skálázás automatikusan történik a lekérdezési erőforrás követelményeinek megfelelően. Ahogy a topológia idővel megváltozik csomópontok hozzáadásával, eltávolításával vagy feladatátvétellel, alkalmazkodik a változásokhoz, és gondoskodik arról, hogy a lekérdezés elegendő erőforrással rendelkezik, és sikeresen befejeződjön. Az alábbi képen például a kiszolgáló nélküli SQL-készlet látható, amely négy számítási csomópontot használ egy lekérdezés végrehajtásához.
A Synapse SQL csomópontalapú architektúrát használ. Az alkalmazások T-SQL-parancsokat kötnek össze és adnak ki egy Vezérlő csomóponthoz, amely a Synapse SQL egyetlen belépési pontja.
A Azure Synapse SQL Control csomópont elosztott lekérdezési motort használ a lekérdezések párhuzamos feldolgozásra való optimalizálásához, majd továbbítja a műveleteket a számítási csomópontoknak, hogy párhuzamosan végezzék el a munkájukat.
A kiszolgáló nélküli SQL-készlet vezérlő csomópontja elosztott lekérdezésfeldolgozási (DQP) motort használ a felhasználói lekérdezések elosztott végrehajtásának optimalizálására és vezénylésére úgy, hogy kisebb lekérdezésekre osztja fel, amelyeket a számítási csomópontokon hajtanak végre. Minden kis lekérdezést feladatnak nevezünk, és elosztott végrehajtási egységet jelöl. Beolvassa a fájl(oka)t a tárolóból, más tevékenységekből, csoportokból vagy megrendelésekből származó eredményeket illeszt be más tevékenységekből.
A számítási csomópontok az összes felhasználói adatot az Microsoft Azure Storage-ban tárolják, és futtatják a párhuzamos lekérdezéseket. Az adatáthelyezési szolgáltatás (DMS) egy rendszerszintű belső szolgáltatás, amely szükség szerint áthelyezi az adatokat a csomópontok között a lekérdezések párhuzamos futtatásához és pontos eredmények visszaadásához.
A különálló tárolással és számítással a Synapse SQL használata esetén a számítási teljesítmény független méretezése a tárolási igényektől függetlenül előnyös lehet. A kiszolgáló nélküli SQL-készlet skálázása automatikusan történik, míg a dedikált SQL-készlet esetében az alábbiakra van lehetőség:
- Számítási teljesítmény növelése vagy zsugorítása dedikált SQL-készleten belül, adatok áthelyezése nélkül.
- Szüneteltetheti a számítási kapacitást az adatok megőrzésével, hogy csak a tárterületért kelljen fizetnie.
- Működési időben újra aktiválhatja a számítási kapacitást.
Azure Storage
A Synapse SQL az Azure Storage használatával tartja biztonságban a felhasználói adatokat. Mivel az adatokat az Azure Storage tárolja és kezeli, a tárterület-használatért külön díjat kell fizetnie.
A kiszolgáló nélküli SQL-készlet lehetővé teszi a data lake-fájlok lekérdezését, míg a dedikált SQL-készlet lehetővé teszi az adatok lekérdezését és betöltését a data lake-fájlokból. Ha az adatok dedikált SQL-készletbe kerülnek, az adatok disztribúciókba lesznek osztva a rendszer teljesítményének optimalizálása érdekében. Hogy melyik horizontális skálázási mintát szeretné használni az adatok elosztásához, azt a tábla definiálásakor döntheti el. Ezek a horizontális skálázási minták támogatottak:
- Kivonat
- Ciklikus időszeletelés
- Replikálás
Vezérlő csomópont
A vezérlő csomópont az architektúra agya. Ez az az előtérrendszer, amely az összes alkalmazással és kapcsolattal együttműködik.
A Synapse SQL-ben az elosztott lekérdezési motor a Vezérlő csomóponton fut a párhuzamos lekérdezések optimalizálásához és koordinálásához. Amikor T-SQL-lekérdezést küld a dedikált SQL-készletbe, a Control csomópont az egyes disztribúciókon párhuzamosan futó lekérdezésekké alakítja át.
A kiszolgáló nélküli SQL-készletben a DQP-motor a Vezérlő csomóponton fut, hogy optimalizálja és koordinálja a felhasználói lekérdezés elosztott végrehajtását úgy, hogy kisebb lekérdezésekre osztja fel, amelyeket a számítási csomópontokon hajtanak végre. Emellett az egyes csomópontok által feldolgozandó fájlkészleteket is hozzárendeli.
Számítási csomópontok
A számítási csomópontok biztosítják a számítási teljesítményt.
A dedikált SQL-készletben a disztribúciók számítási csomópontokra lesznek leképezve feldolgozás céljából. A további számítási erőforrásokért való fizetés során a készlet újraképezi a disztribúciókat az elérhető számítási csomópontokra. A számítási csomópontok száma 1 és 60 között mozog, és a dedikált SQL-készlet szolgáltatási szintje határozza meg. Minden számítási csomópont rendelkezik egy csomópontazonosítóval, amely látható a rendszernézetekben. A számítási csomópont azonosítóját úgy tekintheti meg, hogy megkeresi a node_id oszlopot a rendszernézetekben, amelyeknek a neve sys.pdw_nodes kezdődik. A rendszernézetek listáját a Synapse SQL-rendszernézetek című témakörben találja.
A kiszolgáló nélküli SQL-készletben a rendszer minden számítási csomóponthoz hozzárendeli a feladatot és a feladat végrehajtásához szükséges fájlok készletét. A feladat elosztott lekérdezés-végrehajtási egység, amely valójában a felhasználó által elküldött lekérdezés része. Az automatikus skálázás azért van érvényben, hogy elegendő számítási csomópontot használjon a felhasználói lekérdezés végrehajtásához.
Adatáthelyezési szolgáltatás
A Data Movement Service (DMS) a dedikált SQL-készlet adatátviteli technológiája, amely koordinálja a számítási csomópontok közötti adatáthelyezési folyamatokat. Egyes lekérdezések adatáthelyezési elemet igényelnek, hogy a párhuzamos lekérdezések pontos eredményeket adjanak vissza. Az adatáthelyezési igény esetén a DMS biztosítja, hogy a megfelelő adatok a megfelelő helyre kerülnek.
Disztribúciók
A disztribúció a dedikált SQL-készletben elosztott adatokon futó párhuzamos lekérdezések tárolási és feldolgozási alapegysége. Amikor a dedikált SQL-készlet futtat egy lekérdezést, a munka 60, párhuzamosan futó kisebb lekérdezésre van osztva.
A 60 kisebb lekérdezés mindegyike az egyik adatterjesztésen fut. Minden számítási csomópont egy vagy több 60 disztribúciót kezel. A számítási erőforrások maximális számát tartalmazó dedikált SQL-készlet számítási csomópontonként egy elosztással rendelkezik. Egy dedikált SQL-készlet minimális számítási erőforrásokkal rendelkezik az összes disztribúcióval egy számítási csomóponton.
Kivonat alapján elosztott táblák
A kivonat alapján elosztott tábla nyújtja a legnagyobb lekérdezési teljesítményt az összekapcsolásoknál és aggregációknál nagy táblák esetén.
Ha az adatokat egy kivonatelosztott táblába szeretné felosztani, a dedikált SQL-készlet kivonatfüggvényt használ az egyes sorok determinisztikus hozzárendeléséhez egy eloszláshoz. A tábla definíciójában az oszlopok egyike elosztási oszlopként van megjelölve. A kivonatolási függvény az elosztási oszlop értékeit használja az egyes sorok elosztáshoz rendeléséhez.
Az alábbi ábra azt szemlélteti, hogy egy teljes (nem elosztott) tábla hogyan lesz kivonatolt táblaként tárolva.
- Minden sor egy eloszláshoz tartozik.
- A determinisztikus kivonatolási algoritmus minden sort egyetlen eloszláshoz rendel.
- A táblázatsorok eloszlásonkénti száma a táblák különböző méretétől függően változik.
A terjesztési oszlopok kiválasztásánál teljesítménybeli szempontokat kell figyelembe venni, például a különbözőségeket, az adateltérést és a rendszeren futó lekérdezéstípusokat.
Ciklikus időszeleteléssel elosztott táblák
A ciklikus időszeleteléses táblázat a legegyszerűbb tábla, amely gyors teljesítményt nyújt, ha előkészítési táblaként használják a terhelésekhez.
Ciklikus időszeleteléses elosztott tábla egyenletesen osztja el az adatokat a táblázatban, de minden további optimalizálás nélkül. A rendszer először véletlenszerűen választ ki egy eloszlást, majd a sorok puffereit egymás után rendeli hozzá a eloszlásokhoz. Gyorsan betölti az adatokat egy ciklikus időszeleteléses táblába, de a lekérdezési teljesítmény gyakran jobb lehet a kivonatelosztott táblák esetében. A ciklikus időszeleteléses táblákhoz való csatlakozáshoz újra kell írni az adatokat, ami hosszabb időt vesz igénybe.
Replikált táblák
A kisméretű tábláknál a replikált táblák nyújtják a leggyorsabb lekérdezési teljesítményt.
A replikált tábla minden számítási csomóponton gyorsítótárazza a tábla teljes másolatát. A táblák replikálásával tehát nincs szükség az adatok számítási csomópontok közötti átvitelére az összekapcsolás vagy az összesítés előtt. A replikált táblákat legjobban kisméretű táblákkal lehet kihasználni. Extra tárhelyre van szükség, és az adatok írásakor többletterhelés is felmerül, ami miatt a nagyméretű táblák nem praktikusak.
Az alábbi ábrán egy replikált tábla látható, amely az egyes számítási csomópontok első disztribúcióján van gyorsítótárazva.
Következő lépések
Most, hogy megismerkedett a Synapse SQL-lel, megtudhatja, hogyan hozhat létre gyorsan dedikált SQL-készletet , és tölthet be mintaadatokat. Vagy kezdje el használni a kiszolgáló nélküli SQL-készletet. Ha még nem ismerkedik az Azure-tal, hasznosnak találhatja az Azure-szószedetet , amikor új terminológiával találkozik.