다음을 통해 공유


분할된 SQL 커넥터

중요하다

AKS의 Azure HDInsight는 2025년 1월 31일에 사용 중지되었습니다. 이 공지 을 통해에 대해 더 알아보세요.

워크로드가 갑자기 종료되는 것을 방지하기 위해 워크로드를 Microsoft Fabric 또는 동등한 Azure 제품으로 워크로드를 마이그레이션해야 합니다.

중요하다

이 기능은 현재 미리 보기로 제공됩니다. Microsoft Azure 프리뷰에 대한 추가 사용 약관은 베타, 프리뷰, 또는 아직 일반 공급으로 출시되지 않은 Azure 기능에 적용되는 더 많은 법적 조건을 포함합니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보를 참조하세요. 질문 또는 기능 제안에 대한 자세한 내용은 AskHDInsight 대한 요청을 제출하고 Azure HDInsight Community 대한 자세한 업데이트를.

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

필수 구성 요소

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

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

일반 구성

커넥터는 여러 SQL 서버를 단일 데이터 원본으로 쿼리할 수 있습니다. 카탈로그 속성 파일을 만들고 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입니다.
연결 사용자 SQL Server의 사용자 이름
연결 비밀번호 SQL Server에서 사용자의 암호
샤드 클러스터 sharded-sql 커넥터에는 TRUE로 설정해야 합니다.
샤드 구성 위치 분할 스키마를 정의하는 구성의 위치

데이터 원본 인증

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

스키마 정의

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

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

다음 JSON 파일은 Trino 분할된 SQL 커넥터에 대한 구성을 설명합니다. 다음은 해당 구조의 분석입니다.

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

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

    • 이름: 분할 스키마의 이름입니다.
    • partitioned_by: 샤딩 스키마를 분할 기준으로 하는 하나 이상의 열을 포함하는 배열입니다.
    • bucket_count(선택 사항): 테이블이 배포되는 총 버킷 수를 나타내는 정수이며, 기본값은 1입니다.
    • bucketed_by(선택 사항): 데이터가 버킷팅되는 하나 이상의 열을 포함하는 배열입니다. 분할 및 버킷팅은 계층적이므로 각 파티션이 버킷팅됩니다.
    • partition_map: 분할 스키마 내의 파티션을 나타내는 개체의 배열입니다. 각 파티션 개체에는 다음이 포함됩니다.
      • 파티션: partition-key=partitionvalue로 지정된 양식의 파티션 값
      • 분할된 데이터베이스 : 각 개체 배열은 파티션 내의 분할된 데이터베이스를 나타내고 배열의 각 요소는 복제본을 나타내며, 트리노는 임의로 쿼리하여 파티션/버킷에 대한 데이터를 가져옵니다. 각 샤드 개체에는 다음이 포함됩니다.
        • 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 데이터베이스에 있습니다.
  • 버킷 8-10는 파티션 값 AIR에 대해 test2 데이터베이스에 위치해 있습니다.
  • 샤드는 connectionUrl배열입니다. 배열의 각 멤버는 replicaSet을 나타냅니다. 쿼리를 실행하는 동안 Trino는 배열에서 임의로 분할된 데이터베이스를 선택하여 데이터를 쿼리합니다.

파티션 및 버킷 정리

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

여기 에 설명된 murmur 해시 함수 구현을 사용하여 할당을 결정하는 버킷팅 수식은에 있습니다.

형식 매핑

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

푸시다운

지원되는 푸시다운 최적화는 다음과 같습니다.

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

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

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

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