Sharded SQL-anslutningsprogram
Kommentar
Vi drar tillbaka Azure HDInsight på AKS den 31 januari 2025. Före den 31 januari 2025 måste du migrera dina arbetsbelastningar till Microsoft Fabric eller en motsvarande Azure-produkt för att undvika plötsliga uppsägningar av dina arbetsbelastningar. Återstående kluster i din prenumeration stoppas och tas bort från värden.
Endast grundläggande stöd kommer att vara tillgängligt fram till datumet för pensionering.
Viktigt!
Den här funktionen finns i förhandsgranskning. De kompletterande användningsvillkoren för Förhandsversioner av Microsoft Azure innehåller fler juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet. Information om den här specifika förhandsversionen finns i Azure HDInsight på AKS-förhandsversionsinformation. Om du vill ha frågor eller funktionsförslag skickar du en begäran på AskHDInsight med informationen och följer oss för fler uppdateringar i Azure HDInsight Community.
Med den fragmenterade SQL-anslutningsappen kan frågor köras över data som distribueras över valfritt antal SQL-servrar.
Förutsättningar
Om du vill ansluta till fragmenterade SQL-servrar behöver du:
- SQL Server 2012 eller senare eller Azure SQL Database.
- Nätverksåtkomst från Trino-koordinatorn och arbetarna till SQL Server. Port 1433 är standardporten.
Allmän konfiguration
Anslutningsappen kan köra frågor mot flera SQL-servrar som en enda datakälla. Skapa en katalogegenskaper-fil och använd connector.name=sharded-sql
för att använda fragmenterad SQL-anslutningsapp.
Konfigurationsexempel:
connector.name=sharded_sqlserver
connection-user=<user-name>
connection-password=<user-password>
sharded-cluster=true
shard-config-location=<path-to-sharding-schema>
Property | beskrivning |
---|---|
connector.name | Namnet på anslutningsappen För fragmenterad SQL, som ska vara sharded_sqlserver |
connection-user | Användarnamn i SQL Server |
connection-password | Lösenord för användaren i SQL Server |
sharded-cluster | Krävs för att ställas in på TRUE för sharded-sql-anslutningsprogram |
shard-config-location | plats för konfigurationsdefinieringsschemat för horisontell partitionering |
Autentisering av datakällor
Anslutningsappen använder autentisering med användarlösenord för att fråga SQL-servrar. Samma användare som anges i konfigurationen förväntas autentisera mot alla SQL-servrar.
Schemadefinition
Anslutningsappen förutsätter en 2D-partition/bucketad layout av fysiska data över SQL-servrar. Schemadefinitionen beskriver den här layouten. För närvarande stöds endast filbaserad schemadefinition för horisontell partitionering.
Du kan ange platsen för partitioneringsschemat json i katalogegenskaperna som shard-config-location=etc/shard-schema.json
.
Konfigurera sharding schema json med önskade egenskaper för att ange layouten.
Följande JSON-fil beskriver konfigurationen för en Trino sharded SQL-anslutning. Här är en uppdelning av dess struktur:
tabeller: En matris med objekt som var och en representerar en tabell i databasen. Varje tabellobjekt innehåller:
- schema: Schemanamnet för tabellen, som motsvarar databasen på SQL-servern.
- name: Namnet på tabellen.
- sharding_schema: Namnet på det fragmenteringsschema som är associerat med tabellen, som fungerar som en referens till det
sharding_schema
som beskrivs i nästa steg.
sharding_schema: En matris med objekt som var och en representerar ett horisontellt schema. Varje fragmenteringsschemaobjekt innehåller:
- name: Namnet på partitioneringsschemat.
- partitioned_by: En matris som innehåller en eller flera kolumner med vilken partitioneringsschemat partitioneras.
- bucket_count(valfritt): Ett heltal som representerar det totala antalet bucketar som tabellen distribueras, vilket är standardvärdet 1.
- bucketed_by(valfritt): En matris som innehåller en eller flera kolumner med vilka data är bucketade, observera att partitionering och bucketing är hierarkiska, vilket innebär att varje partition är bucketad.
- partition_map: En matris med objekt som var och en representerar en partition i fragmenteringsschemat. Varje partitionsobjekt innehåller:
- partition: Partitionsvärdet som anges i formuläret
partition-key=partitionvalue
- shards: En matris med objekt som var och en representerar en shard i partitionen, varje element i matrisen representerar en replik, trino frågar någon av dem slumpmässigt för att hämta data för en partition/buckets. Varje fragmentobjekt innehåller:
- connectionUrl: JDBC-anslutnings-URL:en till sharddatabasen.
- partition: Partitionsvärdet som anges i formuläret
Om du till exempel vill köra frågor mot två tabeller lineitem
part
med den här anslutningsappen kan du ange dem på följande sätt.
"tables": [
{
"schema": "dbo",
"name": "lineitem",
"sharding_schema": "schema1"
},
{
"schema": "dbo",
"name": "part",
"sharding_schema": "schema2"
}
]
Kommentar
Connector förväntar sig att alla tabeller finns i SQL-servern som definierats i schemat för en tabell, om så inte är fallet misslyckas frågorna för den tabellen.
I föregående exempel kan du ange layouten för tabellen lineitem
som:
"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"
}
]
}
]
}
]
I det här exemplet beskrivs:
- Data för tabellradsobjekt som partitionerats av
shipmode
. - Varje partition har 10 bucketar.
- Varje partition är bucketed_by
partkey
kolumn. - Bucketar för partitionsvärde
1-7
AIR
finns itest1
databasen. - Bucketar för partitionsvärde
8-10
AIR
finns itest2
databasen. - Shards är en matris med
connectionUrl
. Varje medlem i matrisen representerar en replikUppsättning. Under frågekörningen väljer Trino ett fragment slumpmässigt från matrisen för att fråga efter data.
Partitionering och bucketrensning
Anslutningsappen utvärderar frågebegränsningarna under planeringen och utför baserat på de angivna frågepredikaten. Detta hjälper till att påskynda frågeprestanda och gör att anslutningsappen kan köra frågor mot stora mängder data.
Bucketing-formel för att fastställa tilldelningar med hjälp av implementeringen av funktionen murmur hash som beskrivs här.
Typmappning
Sharded SQL Connector stöder samma typmappningar som SQL Server Connector-typmappningar.
Pushdown
Följande pushdown-optimeringar stöds:
- Begränsa nedtryckning
- Distributionsaggregeringar
- Gå med i pushdown
JOIN
åtgärden kan endast push-överföras till servern när anslutningsappen fastställer att data är samlokaliserade för tabellen build och probe. Anslutningsappen avgör att data samallokeras när – sharding_schema för båda left
och right
tabellen är densamma.
– Kopplingsvillkoren är supermängden partitionerings- och bucketningsnycklar.
Om du vill använda JOIN
pushdown-optimering bör katalogegenskapen join-pushdown.strategy
vara inställd på EAGER
AGGREGATE
pushdown för den här anslutningsappen kan bara göras för distributionsaggregeringar. Optimeringskonfigurationen optimizer.partial-aggregate-pushdown-enabled
måste anges för att true
aktivera den här optimeringen.