Horizontális SQL-összekötő
Fontos
Ez a szolgáltatás jelenleg előzetes kiadásban elérhető. A Microsoft Azure Előzetes verzió kiegészítő használati feltételei további jogi feltételeket tartalmaznak, amelyek a bétaverzióban, előzetes verzióban vagy egyébként még nem általánosan elérhető Azure-funkciókra vonatkoznak. Erről az adott előzetes verzióról az Azure HDInsight az AKS előzetes verziójában tájékozódhat. Ha kérdése vagy funkciójavaslata van, küldjön egy kérést az AskHDInsightban a részletekkel együtt, és kövessen minket további frissítésekért az Azure HDInsight-közösségről.
A szilánkos SQL-összekötő lehetővé teszi a lekérdezések végrehajtását tetszőleges számú SQL-kiszolgálón elosztott adatokon keresztül.
Előfeltételek
A szegmenses SQL-kiszolgálókhoz való csatlakozáshoz a következőkre van szükség:
- SQL Server 2012 vagy újabb, vagy Azure SQL Database.
- Hálózati hozzáférés a Trino-koordinátortól és a dolgozóktól az SQL Serverhez. Az alapértelmezett port az 1433-as port.
Általános konfiguráció
Az összekötő több SQL-kiszolgálót is lekérdezhet egyetlen adatforrásként. Hozzon létre egy katalógustulajdonság-fájlt, és használjon connector.name=sharded-sql
szegmenses SQL-összekötőt.
Konfigurációs példa:
connector.name=sharded_sqlserver
connection-user=<user-name>
connection-password=<user-password>
sharded-cluster=true
shard-config-location=<path-to-sharding-schema>
Tulajdonság | Leírás |
---|---|
connector.name | Az összekötő neve a szegmenses SQL-hez, amelynek sharded_sqlserver |
kapcsolat-felhasználó | Felhasználónév az SQL Serverben |
kapcsolati jelszó | A felhasználó jelszava az SQL Serveren |
szegmenses fürt | Szegmenses SQL-összekötőre kell beállítani TRUE |
shard-config-location | a horizontális skálázási sémát meghatározó konfiguráció helye |
Adatforrás-hitelesítés
Az összekötő felhasználói jelszóval történő hitelesítést használ az SQL-kiszolgálók lekérdezéséhez. A konfigurációban megadott felhasználónak az összes SQL-kiszolgálón hitelesítenie kell magát.
Séma meghatározása
Csatlakozás or feltételezi a fizikai adatok 2D partíciós/gyűjtős elrendezését az SQL-kiszolgálókon. A sémadefiníció ezt az elrendezést ismerteti. Jelenleg csak a fájlalapú horizontális skálázási sémadefiníció támogatott.
A skálázási séma json helyét megadhatja a katalógustulajdonságokban, például shard-config-location=etc/shard-schema.json
.
Az elrendezés megadásához konfigurálja a sharding schema jsont a kívánt tulajdonságokkal.
Az alábbi JSON-fájl egy Trino-szegmenses SQL-összekötő konfigurációját ismerteti. Íme a szerkezet lebontása:
táblák: Objektumok tömbje, amelyek mindegyike egy-egy táblát jelöl az adatbázisban. Minden táblaobjektum a következőket tartalmazza:
- séma: A tábla sémaneve, amely megfelel az SQL Server adatbázisának.
- név: A tábla neve.
- sharding_schema: A táblához társított horizontális skálázási séma neve, amely a
sharding_schema
következő lépésekben ismertetettekre hivatkozik.
sharding_schema: Objektumok tömbje, amelyek mindegyike horizontálisan skálázási sémát jelöl. Az egyes horizontálisan skálázási sémaobjektumok a következőket tartalmazzák:
- név: A horizontális skálázási séma neve.
- partitioned_by: Egy vagy több oszlopot tartalmazó tömb, amely particionálta a horizontális skálázási sémát.
- bucket_count(nem kötelező): A tábla gyűjtőinek teljes számát jelölő egész szám, amely alapértelmezés szerint 1.
- bucketed_by(nem kötelező): Egy vagy több oszlopot tartalmazó tömb, amellyel az adatok gyűjtőbe vannak helyezve, vegye figyelembe, hogy a particionálás és a gyűjtőzés hierarchikus, ami azt jelenti, hogy minden partíció gyűjtőben van.
- partition_map: Objektumok tömbje, amelyek mindegyike egy partíciót jelöl a horizontális skálázási sémán belül. Minden partícióobjektum a következőket tartalmazza:
- partíció: Az űrlapon megadott partícióérték
partition-key=partitionvalue
- szegmensek: Objektumok tömbje, amelyek mindegyike egy szegmenst jelöl a partíción belül, a tömb minden eleme replikát jelöl, a trino véletlenszerűen lekérdezi bármelyiket egy partíció/gyűjtő adatainak lekéréséhez. Minden szegmensobjektum a következőket tartalmazza:
- connectionUrl: A szegmens adatbázisához tartozó JDBC-kapcsolat URL-címe.
- partíció: Az űrlapon megadott partícióérték
Ha például két táblát lineitem
part
szeretne lekérdezni ezzel az összekötővel, az alábbiak szerint adhatja meg őket.
"tables": [
{
"schema": "dbo",
"name": "lineitem",
"sharding_schema": "schema1"
},
{
"schema": "dbo",
"name": "part",
"sharding_schema": "schema2"
}
]
Feljegyzés
Csatlakozás or elvárja, hogy az összes tábla jelen legyen a tábla sémájában definiált SQL Serveren, ha ez nem így van, a tábla lekérdezései sikertelenek lesznek.
Az előző példában a táblázat lineitem
elrendezését a következőképpen adhatja meg:
"sharding_schema": [
{
"name": "schema1",
"partitioned_by": [
"shipmode"
],
"bucketed_by": [
"partkey"
],
"bucket_count": 10,
"partition_map": [
{
"partition": "shipmode='AIR'",
"buckets": 1-7,
"shards": [
{
"connectionUrl": "jdbc:sqlserver://sampleserver.database.windows.net:1433;database=test1"
}
]
},
{
"partition": "shipmode='AIR'",
"buckets": 8-10,
"shards": [
{
"connectionUrl": "jdbc:sqlserver://sampleserver.database.windows.net:1433;database=test2"
}
]
}
]
}
]
Ez a példa a következőket írja le:
- A táblasorelem adatai particionáltak a következő szerint
shipmode
: . - Minden partícióhoz 10 gyűjtő tartozik.
- Minden partíció bucketed_by
partkey
oszlop. - A partícióérték gyűjtői
1-7
az adatbázisban találhatóktest1
.AIR
- A partícióérték gyűjtői
8-10
az adatbázisban találhatóktest2
.AIR
- A szegmensek a
connectionUrl
. A tömb minden tagja replikakészletet jelöl. A lekérdezés végrehajtása során a Trino véletlenszerűen kiválaszt egy szegmenst a tömbből az adatok lekérdezéséhez.
Partíció- és gyűjtőmetszet
Csatlakozás or kiértékeli a lekérdezési korlátozásokat a tervezés során, és a megadott lekérdezési predikátumok alapján hajtja végre. Ez felgyorsítja a lekérdezési teljesítményt, és lehetővé teszi az összekötő számára a nagy mennyiségű adat lekérdezését.
Gyűjtőképlet a hozzárendelések meghatározásához az itt ismertetett murmur kivonatfüggvény-implementációval.
Típusleképezés
A szegmenses SQL-összekötő ugyanazokat a típusleképezéseket támogatja, mint az SQL Server-összekötők típusleképezései.
Leküldéses leküldés
A következő leküldéses optimalizálások támogatottak:
- Leküldéses leküldés korlátozása
- Terjesztési aggregátumok
- Csatlakozás leküldéses leküldéshez
JOIN
a művelet csak akkor küldhető le a kiszolgálóra, ha az összekötő megállapítja, hogy az adatok a build- és mintavételtáblához vannak áthelyezve. Csatlakozás or határozza meg, hogy az adatok együtt vannak-e helyezve, amikor a sharding_schema mindkettőhöz left
és a right
táblához ugyanaz.
- az illesztési feltételek a particionálási és gyűjtőkulcsok szuperhalmazai.
A leküldéses optimalizálás használatához JOIN
a katalógustulajdonságnak join-pushdown.strategy
a következőre kell beállítania: EAGER
AGGREGATE
Az összekötő leküldéses leküldése csak a terjesztési aggregátumok esetében végezhető el. Az optimalizálás engedélyezéséhez be kell állítani az true
optimalizáló konfigurációtoptimizer.partial-aggregate-pushdown-enabled
.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: