다음을 통해 공유


분할된 SQL 커넥터

참고 항목

2025년 1월 31일에 Azure HDInsight on AKS가 사용 중지됩니다. 2025년 1월 31일 이전에 워크로드가 갑자기 종료되지 않도록 워크로드를 Microsoft Fabric 또는 동등한 Azure 제품으로 마이그레이션해야 합니다. 구독의 나머지 클러스터는 호스트에서 중지되고 제거됩니다.

사용 중지 날짜까지 기본 지원만 사용할 수 있습니다.

Important

이 기능은 현지 미리 보기로 제공됩니다. Microsoft Azure 미리 보기에 대한 보충 사용 약관에는 베타 또는 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 더 많은 약관이 포함되어 있습니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보를 참조하세요. 질문이나 기능 제안이 있는 경우 AskHDInsight에서 세부 정보와 함께 요청을 제출하고 Azure HDInsight 커뮤니티에서 더 많은 업데이트를 확인하세요.

분할된 SQL 커넥터를 사용하면 여러 SQL Server에 분산된 데이터에 대해 쿼리를 실행할 수 있습니다.

필수 조건

분할된 SQL Server에 연결하려면 다음이 필요합니다.

  • SQL Server 2012 이상 또는 Azure SQL Database
  • Trino 코디네이터 및 작업자에서 SQL Server로의 네트워크 액세스입니다. 기본 포트는 포트 1433입니다.

일반 구성

커넥터는 여러 SQL Server를 단일 데이터 원본으로 쿼리할 수 있습니다. 카탈로그 속성 파일을 만들고 connector.name=sharded-sql을 사용하여 분할된 SQL 커넥터를 사용합니다.

구성 예제:

connector.name=sharded_sqlserver
connection-user=<user-name>
connection-password=<user-password>
sharded-cluster=true
shard-config-location=<path-to-sharding-schema>
속성 설명
connector.name 분할된 SQL의 커넥터 이름은 sharded_sqlserver여야 합니다.
connection-user SQL Server의 사용자 이름
connection-password SQL Server 사용자의 암호
sharded-cluster sharded-sql 커넥터의 경우 TRUE로 설정해야 합니다.
shard-config-location 분할 스키마를 정의하는 구성의 위치

데이터 원본 인증

커넥터는 사용자 암호 인증을 사용하여 SQL Server를 쿼리합니다. 구성에 지정된 동일한 사용자가 모든 SQL Server에 대해 인증을 받아야 합니다.

스키마 정의

커넥터는 SQL Server 전체에서 실제 데이터의 2D 파티션/버킷형 레이아웃을 가정합니다. 스키마 정의는 이 레이아웃을 설명합니다. 현재는 파일 기반 분할 스키마 정의만 지원됩니다.

shard-config-location=etc/shard-schema.json과 같은 카탈로그 속성에서 분할 스키마 json의 위치를 지정할 수 있습니다. 레이아웃을 지정하려면 원하는 속성으로 분할 스키마 json을 구성합니다.

다음 JSON 파일은 Trino 분할 SQL 커넥터의 구성을 설명합니다. 그 구조를 분석하면 다음과 같습니다.

  • tables: 각각 데이터베이스의 테이블을 나타내는 개체 배열입니다. 각 테이블 개체에는 다음이 포함됩니다.

    • schema: SQL Server의 데이터베이스에 해당하는 테이블의 스키마 이름입니다.
    • name: 테이블의 이름입니다.
    • sharding_schema: 테이블과 연결된 분할 스키마의 이름으로, 다음 단계에서 설명하는 sharding_schema에 대한 참조 역할을 합니다.
  • sharding_schema: 각각 분할 스키마를 나타내는 개체 배열입니다. 각 분할 스키마 개체에는 다음이 포함됩니다.

    • name: 분할 스키마의 이름입니다.
    • partitioned_by: 분할 스키마가 분할되는 하나 이상의 열을 포함하는 배열입니다.
    • bucket_count(선택 사항): 테이블이 배포되는 총 버킷 수를 나타내는 정수이며 기본값은 1입니다.
    • bucketed_by(선택 사항): 데이터가 버킷팅되는 하나 이상의 열을 포함하는 배열입니다. 파티션 나누기와 버킷팅은 계층적이므로 각 파티션이 버킷팅됩니다.
    • partition_map: 개체 배열로, 각각은 분할 스키마 내의 파티션을 나타냅니다. 각 파티션 개체에는 다음이 포함됩니다.
      • partition: partition-key=partitionvalue 형식으로 지정된 파티션 값입니다.
      • shards: 각각 파티션 내의 분할을 나타내는 개체 배열, 배열의 각 요소는 복제본을 나타냅니다. trino는 임의로 이들 중 하나를 쿼리하여 파티션/버킷에 대한 데이터를 가져옵니다. 각 분할 개체에는 다음이 포함됩니다.
        • connectionUrl: 분할 데이터베이스에 대한 JDBC 연결 URL입니다.

예를 들어, 이 커넥터를 사용하여 두 개의 테이블 lineitempart를 쿼리하려는 경우 다음과 같이 지정할 수 있습니다.

	"tables": [
		{
			"schema": "dbo",
			"name": "lineitem",
			"sharding_schema": "schema1"
		},
		{
			"schema": "dbo",
			"name": "part",
			"sharding_schema": "schema2"
		}
    ]

참고 항목

커넥터는 테이블의 스키마에 정의된 SQL Server에 모든 테이블이 있을 것으로 예상합니다. 그렇지 않으면 해당 테이블에 대한 쿼리가 실패합니다.

이전 예에서는 테이블 lineitem의 레이아웃을 다음과 같이 지정할 수 있습니다.

	"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"
						}
					]
				}                
			]
        }
    ]

이 예에서는 다음을 설명합니다.

  • shipmode로 파티션을 나눈 테이블 항목의 데이터입니다.
  • 각 파티션에는 10개의 버킷이 있습니다.
  • 각 파티션은 partkey 열로 버킷화됩니다.
  • 파티션 값 AIR에 대한 버킷 1-7test1 데이터베이스에 있습니다.
  • 파티션 값 AIR에 대한 버킷 8-10test2 데이터베이스에 있습니다.
  • 분할은 connectionUrl의 배열입니다. 배열의 각 멤버는 ReplicaSet를 나타냅니다. 쿼리 실행 중에 Trino는 데이터를 쿼리하기 위해 배열에서 임의로 분할을 선택합니다.

파티션 및 버킷 정리

커넥터는 계획 중에 쿼리 제약 조건을 평가하고 제공된 쿼리 조건자를 기반으로 수행합니다. 이를 통해 쿼리 성능이 향상되고 커넥터가 대량의 데이터를 쿼리할 수 있습니다.

여기에 설명된 중얼거리는 해시 함수 구현을 사용하여 할당을 결정하는 버킷팅 수식입니다.

형식 매핑

분할된 SQL 커넥터는 SQL Server 커넥터 형식 매핑과 동일한 형식 매핑을 지원합니다.

푸시다운

다음 푸시다운 최적화가 지원됩니다.

  • 푸시다운 제한
  • 분산 집계
  • 조인 푸시다운

JOIN 작업은 커넥터가 빌드 및 프로브 테이블에 대해 데이터가 같은 위치에 있다고 판단하는 경우에만 서버로 푸시다운될 수 있습니다. 커넥터는 leftright 테이블 모두에 대한 sharding_schema가 동일한 경우 데이터가 같은 위치에 있는지 결정합니다. - 조인 조건은 분할 키와 버킷팅 키의 상위 집합입니다.

JOIN 푸시다운 최적화를 사용하려면 카탈로그 속성 join-pushdown.strategyEAGER로 설정해야 합니다.

이 커넥터에 대한 AGGREGATE 푸시다운은 분산 집계에 대해서만 수행할 수 있습니다. 이 최적화를 사용하도록 설정하려면 최적화 프로그램 구성 optimizer.partial-aggregate-pushdown-enabledtrue로 설정해야 합니다.