Megosztás a következőn keresztül:


Tóadatbázisok elérése kiszolgáló nélküli SQL-készlet használatával az Azure Synapse Analyticsben

Az Azure Synapse Analytics-munkaterület lehetővé teszi, hogy két típusú adatbázist hozzon létre egy Spark-adattó tetején:

  • Lake-adatbázisok, ahol apache Spark-jegyzetfüzetek , adatbázissablonok vagy Microsoft Dataverse (korábban Common Data Service) használatával definiálhat táblákat a tóadatok tetején. Ezek a táblák a T-SQL (Transact-SQL) nyelv használatával történő lekérdezéshez lesznek elérhetők a kiszolgáló nélküli SQL-készlet használatával.
  • SQL-adatbázisok , amelyekben saját adatbázisokat és táblákat határozhat meg közvetlenül a kiszolgáló nélküli SQL-készletek használatával. A T-SQL CREATE DATABA Standard kiadás, CREATE EXTERNAL TABLE használatával definiálhatja az objektumokat, és további SQL-nézeteket, eljárásokat és beágyazott tábla-érték függvényeket adhat hozzá a táblákhoz.

Diagram that shows Lake and SQL databases that are created on top of Data Lake files.

Ez a cikk az Azure Synapse Analytics kiszolgáló nélküli SQL-készletében lévő tóadatbázisokkal foglalkozik.

Az Azure Synapse Analytics lehetővé teszi, hogy lake-adatbázisokat és táblákat hozzon létre a Spark vagy az adatbázis-tervező használatával, majd elemezze az adatokat a tóadatbázisokban a kiszolgáló nélküli SQL-készlet használatával. Az Apache Spark-készleteken, adatbázissablonokon vagy Dataverse-en létrehozott tóadatbázisok és táblák (parquet vagy CSV-háttér) automatikusan elérhetők a kiszolgáló nélküli SQL-készletmotorral való lekérdezéshez. A módosított tóadatbázisok és táblák egy idő után elérhetők lesznek a kiszolgáló nélküli SQL-készletben. A Sparkban vagy az adatbázisban végrehajtott módosítások kiszolgáló nélküli környezetben való megjelenéséig késni fog.

Tóadatbázis kezelése

A Spark által létrehozott lake-adatbázisok kezeléséhez Apache Spark-készleteket vagy Adatbázis-tervezőt használhat. Létrehozhat vagy törölhet például egy tóadatbázist egy Spark-készletfeladaton keresztül. A kiszolgáló nélküli SQL-készlet használatával nem hozhat létre tóadatbázist vagy objektumokat a tóadatbázisokban.

A Spark-adatbázis default a kiszolgáló nélküli SQL-készlet környezetében érhető el egy tóadatbázisként.default

Megjegyzés:

Nem hozható létre tó és SQL-adatbázis a kiszolgáló nélküli SQL-készletben ugyanazzal a névvel.

A tóadatbázisokban lévő táblák nem módosíthatók kiszolgáló nélküli SQL-készletből. Az Adatbázis-tervező vagy az Apache Spark-készletek segítségével módosíthatja a tóadatbázist. A kiszolgáló nélküli SQL-készlettel a következő módosításokat hajthatja végre egy tóadatbázisban Transact-SQL-parancsokkal:

  • Nézetek, eljárások, beágyazott tábla-érték függvények hozzáadása, módosítása és elvetése egy tóadatbázisban.
  • Adatbázis-hatókörű Microsoft Entra-felhasználók hozzáadása és eltávolítása.
  • Microsoft Entra-adatbázis felhasználóinak hozzáadása vagy eltávolítása a db_datareader szerepkörhöz. Az db_datareader szerepkörben lévő Microsoft Entra-adatbázis felhasználói jogosultak a tóadatbázis összes táblájának olvasására, de más adatbázisokból nem olvashatnak adatokat.

Biztonsági modell

A tóadatbázisok és -táblák két szinten vannak biztosítva:

  • A mögöttes tárolási réteg a Microsoft Entra-felhasználókhoz az alábbiak egyikének hozzárendelésével:
    • Azure szerepköralapú hozzáférés-vezérlés (Azure RBAC)
    • Azure attribútumalapú hozzáférés-vezérlési (Azure ABAC) szerepkör
    • ACL-engedélyek
  • Az SQL-réteg, ahol definiálhat egy Microsoft Entra-felhasználót, és sql-engedélyeket adhat a tóadatokra hivatkozó táblákból származó Standard kiadás LECT-adatokhoz.

Lake biztonsági modell

A tóadatbázis-fájlokhoz való hozzáférés a tárrétegen lévő tóengedélyek használatával van szabályozva. Csak a Microsoft Entra-felhasználók használhatnak táblákat a tóadatbázisokban, és saját identitásukkal férhetnek hozzá a tó adataihoz.

A külső táblák alapjául szolgáló adatokhoz hozzáférést adhat egy biztonsági tagnak, például egy felhasználónak, egy Hozzárendelt szolgáltatásnévvel rendelkező Microsoft Entra-alkalmazásnak vagy egy biztonsági csoportnak. Adathozzáféréshez adja meg az alábbi engedélyeket:

  • Engedélyek megadása read (R) fájlokon (például a tábla alapjául szolgáló adatfájlokon).
  • Adjon execute (X) engedélyt arra a mappára, amelyben a fájlok vannak tárolva, és minden szülőmappában egészen a gyökérkönyvtárig. Ezekről az engedélyekről a Hozzáférés-vezérlési listák (ACL-ek) oldalán olvashat bővebben.

A biztonsági tagoknak például a https://<storage-name>.dfs.core.windows.net/<fs>/synapse/workspaces/<synapse_ws>/warehouse/mytestdb.db/myparquettable/következőkre van szükségük:

  • execute (X)az összes mappára vonatkozó engedélyek a kezdő időponttól <fs> kezdve.myparquettable
  • read (R) engedélyeket myparquettable és fájlokat a mappában, hogy képes legyen olvasni egy táblázatot egy adatbázisban (szinkronizált vagy eredeti).

Ha egy biztonsági tagnak szüksége van arra, hogy objektumokat hozzon létre vagy objektumokat helyezzen el egy adatbázisban, további write (W) engedélyekre van szükség a mappában lévő warehouse mappákhoz és fájlokhoz. Az adatbázisok objektumainak módosítása kiszolgáló nélküli SQL-készletből nem lehetséges, csak a Spark-készletekből vagy az adatbázis-tervezőből.

SQL biztonsági modell

Az Azure Synapse-munkaterület egy T-SQL-végpontot biztosít, amely lehetővé teszi a tóadatbázis lekérdezését a kiszolgáló nélküli SQL-készlet használatával. Az adathozzáférés mellett az SQL-felület lehetővé teszi annak szabályozását, hogy ki férhet hozzá a táblákhoz. Engedélyeznie kell egy felhasználónak, hogy a kiszolgáló nélküli SQL-készlet használatával hozzáférjen a megosztott tóadatbázisokhoz. A tóadatbázisokhoz kétféle felhasználó fér hozzá:

  • Rendszergazda istratorok: Rendelje hozzá a Synapse SQL Rendszergazda istrator-munkaterületi szerepkör vagy sysadmin kiszolgálószintű szerepkör a kiszolgáló nélküli SQL-készleten belül. Ez a szerepkör minden adatbázis felett teljes körűen szabályozható. A Synapse Rendszergazda istrator és a Synapse SQL Rendszergazda istrator szerepkörök alapértelmezés szerint minden engedéllyel rendelkeznek a kiszolgáló nélküli SQL-készlet összes objektumához.
  • Munkaterület-olvasók: Adja meg a kiszolgálószintű engedélyeket a GRANT CONNECT ANY DATABA Standard kiadás és a GRANT Standard kiadás LECT ALL U Standard kiadás R Standard kiadás CURABLES kiszolgáló nélküli SQL-készleten olyan bejelentkezéshez, amely lehetővé teszi a bejelentkezést bármely adatbázis eléréséhez és olvasásához. Ez jó választás lehet, ha olvasói/nem rendszergazdai hozzáférést rendel egy felhasználóhoz.
  • Adatbázis-olvasók: Hozzon létre adatbázis-felhasználókat a Microsoft Entra-azonosítóból a tóadatbázisban, és vegye fel őket db_datareader szerepkörbe, amely lehetővé teszi számukra az adatok olvasását a tóadatbázisban.

A megosztott adatbázisok hozzáférés-vezérlésének beállításáról itt olvashat bővebben.

Egyéni SQL-objektumok a tóadatbázisokban

A Lake-adatbázisok lehetővé teszik egyéni T-SQL-objektumok, például sémák, eljárások, nézetek és beágyazott táblaértékfüggvények (iTVF-ek) létrehozását. Egyéni SQL-objektumok létrehozásához létre kell hoznia egy sémát, ahol elhelyezi az objektumokat. Az egyéni SQL-objektumok nem helyezhetők sémába dbo , mert a Sparkban, az adatbázis-tervezőben vagy a Dataverse-ben definiált tótáblákhoz vannak fenntartva.

Fontos

Egyéni SQL-sémát kell létrehoznia, ahol elhelyezi az SQL-objektumokat. Az egyéni SQL-objektumok nem helyezhetők el a dbo sémában. A dbo séma a Sparkban vagy az adatbázis-tervezőben eredetileg létrehozott tótáblák számára van fenntartva.

Példák

SQL-adatbázis-olvasó létrehozása a Lake Database-ben

Ebben a példában hozzáadunk egy Microsoft Entra-felhasználót a tóadatbázishoz, aki megosztott táblákon keresztül tud adatokat olvasni. A felhasználók a kiszolgáló nélküli SQL-készleten keresztül kerülnek a tóadatbázisba. Ezután rendelje hozzá a felhasználót a db_datareader szerepkörhöz, hogy adatokat tudjon olvasni.

CREATE USER [customuser@contoso.com] FROM EXTERNAL PROVIDER;
GO
ALTER ROLE db_datareader
ADD MEMBER [customuser@contoso.com];

Munkaterületszintű adatolvasó létrehozása

A bejelentkezéssel GRANT CONNECT ANY DATABASE és GRANT SELECT ALL USER SECURABLES engedélyekkel minden táblát beolvashat a kiszolgáló nélküli SQL-készlet használatával, de nem hozhat létre SQL-adatbázisokat, és nem módosíthatja a bennük lévő objektumokat.

CREATE LOGIN [wsdatareader@contoso.com] FROM EXTERNAL PROVIDER
GRANT CONNECT ANY DATABASE TO [wsdatareader@contoso.com]
GRANT SELECT ALL USER SECURABLES TO [wsdatareader@contoso.com]

Ez a szkript lehetővé teszi, hogy rendszergazdai jogosultságokkal nem rendelkező felhasználókat hozzon létre, akik bármilyen táblát elolvashatnak a Lake-adatbázisokban.

Spark-adatbázis létrehozása és csatlakoztatása kiszolgáló nélküli SQL-készlettel

Először hozzon létre egy új Spark-adatbázist a mytestdb munkaterületen már létrehozott Spark-fürt használatával. Ezt például egy Spark C#-jegyzetfüzettel érheti el az alábbi .NET for Spark utasítással:

spark.sql("CREATE DATABASE mytestlakedb")

Rövid késés után láthatja a tóadatbázist a kiszolgáló nélküli SQL-készletből. Futtassa például a következő utasítást kiszolgáló nélküli SQL-készletből.

SELECT * FROM sys.databases;

Ellenőrizze, hogy mytestlakedb szerepel-e az eredmények között.

Egyéni SQL-objektumok létrehozása a Lake Database-ben

Az alábbi példa bemutatja, hogyan hozhat létre egyéni nézetet, eljárást és beágyazott táblaérték függvényt (iTVF) a reports sémában:

CREATE SCHEMA reports
GO

CREATE OR ALTER VIEW reports.GreenReport
AS SELECT puYear, puMonth,
            fareAmount = SUM(fareAmount),
            tipAmount = SUM(tipAmount),
            mtaTax = SUM(mtaTax)
FROM dbo.green
GROUP BY puYear, puMonth
GO

CREATE OR ALTER PROCEDURE reports.GreenReportSummary
AS BEGIN
SELECT puYear, puMonth,
            fareAmount = SUM(fareAmount),
            tipAmount = SUM(tipAmount),
            mtaTax = SUM(mtaTax)
FROM dbo.green
GROUP BY puYear, puMonth
END
GO

CREATE OR ALTER FUNCTION reports.GreenDataReportMonthly(@year int)
RETURNS TABLE
RETURN ( SELECT puYear = @year, puMonth,
                fareAmount = SUM(fareAmount),
                tipAmount = SUM(tipAmount),
                mtaTax = SUM(mtaTax)
        FROM dbo.green
        WHERE puYear = @year
        GROUP BY puMonth )
GO

További lépések