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


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.

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.