분산 시스템의 쿼리 최적화

이 장에서는 분산 데이터베이스 시스템의 쿼리 최적화에 대해 설명합니다.

분산 쿼리 처리 아키텍처

분산 데이터베이스 시스템에서 쿼리 처리는 글로벌 및 로컬 수준 모두에서 최적화로 구성됩니다. 쿼리는 클라이언트 또는 제어 사이트의 데이터베이스 시스템에 입력됩니다. 여기에서 사용자의 유효성이 검사되고 쿼리가 글로벌 수준에서 확인, 번역 및 최적화됩니다.

아키텍처는 다음과 같이 표현할 수 있습니다.

글로벌 쿼리를 로컬 쿼리에 매핑

전역 쿼리를 로컬 쿼리에 매핑하는 프로세스는 다음과 같이 실현할 수 있습니다.

  • 전역 쿼리에 필요한 테이블에는 여러 사이트에 분산 된 조각이 있습니다. 로컬 데이터베이스에는 로컬 데이터에 대한 정보 만 있습니다. 제어 사이트는 전역 데이터 사전을 사용하여 배포에 대한 정보를 수집하고 조각에서 전역보기를 재구성합니다.

  • 복제가없는 경우 글로벌 최적화 프로그램은 조각이 저장된 사이트에서 로컬 쿼리를 실행합니다. 복제가있는 경우 글로벌 최적화 프로그램은 통신 비용, 워크로드 및 서버 속도에 따라 사이트를 선택합니다.

  • 글로벌 옵티마이 저는 사이트 전체에서 최소한의 데이터 전송이 발생하도록 분산 실행 계획을 생성합니다. 계획은 조각의 위치, 쿼리 단계를 실행해야하는 순서 및 중간 결과 전송과 관련된 프로세스를 명시합니다.

  • 로컬 쿼리는 로컬 데이터베이스 서버에 의해 최적화됩니다. 마지막으로 로컬 쿼리 결과는 수평 조각의 경우 유니온 연산, 수직 조각의 경우 조인 연산을 통해 병합됩니다.

예를 들어, 다음 프로젝트 스키마는 도시에 따라 수평으로 분할되어 있으며, 도시는 뉴 델리, 콜카타 및 하이데라바드입니다.

계획

PId 시티 학과 상태

상태가 "진행 중"인 모든 프로젝트의 세부 정보를 검색하는 쿼리가 있다고 가정합니다.

글로벌 쿼리는 & inus;

$$ \ sigma_ {status} = {\ small "진행 중"} ^ {(PROJECT)} $$

뉴 델리 서버의 쿼리는-

$$ \ sigma_ {status} = {\ small "진행 중"} ^ {({NewD} _- {PROJECT})} $$

콜카타 서버의 쿼리는-

$$ \ sigma_ {status} = {\ small "진행 중"} ^ {({Kol} _- {PROJECT})} $$

Hyderabad 서버의 쿼리는 다음과 같습니다.

$$ \ sigma_ {status} = {\ small "진행 중"} ^ {({Hyd} _- {PROJECT})} $$

전체 결과를 얻으려면 다음과 같이 세 가지 쿼리의 결과를 통합해야합니다.

$ \ sigma_ {status} = {\ small "진행 중"} ^ {({NewD} _- {PROJECT})} \ cup \ sigma_ {status} = {\ small "진행 중"} ^ {({kol} _- {PROJECT})} \ cup \ sigma_ {status} = {\ small "ongoing"} ^ {({Hyd} _- {PROJECT})} $

분산 쿼리 최적화

분산 쿼리 최적화를 위해서는 각각 필요한 쿼리 결과를 생성하는 많은 쿼리 트리를 평가해야합니다. 이는 주로 대량의 복제 및 조각화 된 데이터가 있기 때문입니다. 따라서 목표는 최상의 솔루션 대신 최적의 솔루션을 찾는 것입니다.

분산 쿼리 최적화의 주요 문제는 다음과 같습니다.

  • 분산 시스템에서 리소스를 최적으로 활용합니다.
  • 쿼리 거래.
  • 쿼리의 솔루션 공간 감소.

분산 시스템에서 자원의 최적 활용

분산 시스템에는 쿼리와 관련된 작업을 수행하기 위해 다양한 사이트에 여러 데이터베이스 서버가 있습니다. 다음은 최적의 리소스 활용을위한 접근 방식입니다.

Operation Shipping− 작업 출하시 작업은 클라이언트 사이트가 아닌 데이터가 저장된 사이트에서 실행됩니다. 그런 다음 결과는 클라이언트 사이트로 전송됩니다. 동일한 사이트에서 피연산자를 사용할 수있는 작업에 적합합니다. 예 : 선택 및 프로젝트 작업.

Data Shipping− 데이터 전달에서 데이터 조각은 작업이 실행되는 데이터베이스 서버로 전송됩니다. 피연산자가 서로 다른 사이트에 배포되는 작업에 사용됩니다. 이는 통신 비용이 낮고 로컬 프로세서가 클라이언트 서버보다 훨씬 느린 시스템에서도 적합합니다.

Hybrid Shipping− 이것은 데이터와 운영 배송의 조합입니다. 여기서 데이터 조각은 작업이 실행되는 고속 프로세서로 전송됩니다. 결과는 클라이언트 사이트로 전송됩니다.

쿼리 거래

분산 데이터베이스 시스템을위한 쿼리 거래 알고리즘에서 분산 쿼리를위한 제어 / 클라이언트 사이트를 구매자라고하고 로컬 쿼리가 실행되는 사이트를 판매자라고합니다. 구매자는 판매자를 선택하고 글로벌 결과를 재구성하기위한 여러 대안을 공식화합니다. 구매자의 목표는 최적의 비용을 달성하는 것입니다.

알고리즘은 구매자가 판매자 사이트에 하위 쿼리를 할당하는 것으로 시작됩니다. 최종 결과를 재구성하기위한 통신 비용과 결합 된 판매자가 제안한 지역 최적화 된 쿼리 계획에서 최적의 계획이 생성됩니다. 글로벌 최적 계획이 수립되면 쿼리가 실행됩니다.

쿼리의 솔루션 공간 감소

최적의 솔루션은 일반적으로 솔루션 공간을 줄여 쿼리 및 데이터 전송 비용을 줄이는 것입니다. 이는 중앙 집중식 시스템의 휴리스틱과 마찬가지로 일련의 휴리스틱 규칙을 통해 달성 할 수 있습니다.

다음은 몇 가지 규칙입니다.

  • 가능한 한 빨리 선택 및 투영 작업을 수행하십시오. 이것은 통신 네트워크를 통한 데이터 흐름을 줄입니다.

  • 특정 사이트와 관련이없는 선택 조건을 제거하여 수평 조각에 대한 작업을 단순화합니다.

  • 여러 사이트에있는 Fragment로 구성된 Join 및 Union 작업의 경우 단편화 된 데이터를 대부분의 데이터가있는 사이트로 전송하고 거기에서 작업을 수행합니다.

  • 세미 조인 작업을 사용하여 조인 할 튜플을 한정합니다. 이는 데이터 전송량을 줄여 통신 비용을 줄여줍니다.

  • 분산 쿼리 트리에서 일반적인 잎과 하위 트리를 병합합니다.