4.2. 데이터 인덱스 서비스


Data Index 서비스는 워크플로우 인스턴스 및 관련 작업과 관련된 데이터를 저장하는 전용 지원 서비스입니다. 이 서비스는 사용자가 해당 데이터를 쿼리할 수 있는 GraphQL 엔드포인트를 제공합니다.

데이터 인덱스 서비스는 이벤트를 통해 수신된 데이터를 처리하며, 이는 모든 워크플로우에서 시작되거나 작업 서비스에서 직접 시작될 수 있습니다.

데이터 인덱스는 워크플로우의 CloudEvents 메시지를 사용하도록 Apache Kafka 또는 Knative Eventing을 지원합니다. 이 이벤트 데이터를 인덱싱하고 데이터베이스에 저장하여 GraphQL을 통해 액세스할 수 있습니다. 이러한 이벤트는 워크플로우 실행에 대한 자세한 정보를 제공합니다. Data Index 서비스는 OpenShift Serverless Logic 검색, 통찰력 및 관리 기능의 핵심입니다.

Data Index 서비스의 주요 기능은 다음과 같습니다.

  • 유연한 데이터 구조
  • 배포 가능한 클라우드 지원 형식
  • Apache Kafka, Knative 및 CloudEvents를 통한 워크플로우와 메시지 기반 통신
  • 강력한 GraphQL 기반 쿼리 API
참고

OpenShift Serverless Operator를 사용하여 워크플로우를 배포하는 경우 Data Index 서비스를 수동으로 설치하거나 구성할 필요가 없습니다. Operator는 각 워크플로우에 연결하는 데 필요한 모든 구성을 자동으로 관리합니다.

4.2.1. 워크플로우 인스턴스 및 작업에 대한 GraphQL 쿼리

워크플로우 인스턴스 및 작업에 대한 데이터를 검색하려면 GraphQL 쿼리를 사용할 수 있습니다.

4.2.1.1. 워크플로우 인스턴스에서 데이터 검색

다음 쿼리 예제를 사용하여 특정 워크플로우 인스턴스에 대한 정보를 검색할 수 있습니다.

{
  ProcessInstances {
    id
    processId
    state
    parentProcessInstanceId
    rootProcessId
    rootProcessInstanceId
    variables
    nodes {
      id
      name
      type
    }
  }
}

4.2.1.2. 작업에서 데이터 검색

다음 쿼리 예제를 사용하여 특정 작업 인스턴스에서 데이터를 검색할 수 있습니다.

{
  Jobs {
    id
    status
    priority
    processId
    processInstanceId
    executionCounter
  }
}

4.2.1.3. where 매개변수를 사용하여 쿼리 결과를 필터링

where 매개변수를 사용하여 쿼리 결과를 필터링하여 워크플로우 특성에 따라 여러 조합을 허용할 수 있습니다.

상태별로 필터링할 쿼리 예

{
  ProcessInstances(where: {state: {equal: ACTIVE}}) {
    id
    processId
    processName
    start
    state
    variables
  }
}

ID로 필터링할 쿼리 예

{
  ProcessInstances(where: {id: {equal: "d43a56b6-fb11-4066-b689-d70386b9a375"}}) {
    id
    processId
    processName
    start
    state
    variables
  }
}

기본적으로 AND Operator를 사용하여 필터를 결합합니다. 필터를 AND 또는 OR 연산자와 결합하여 이 동작을 수정할 수 있습니다.

OR Operator와 필터를 결합하는 예제 쿼리

{
  ProcessInstances(where: {or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}) {
    id
    processId
    processName
    start
    end
    state
  }
}

AND 및 OR Operator와 필터를 결합하는 예제 쿼리

{
  ProcessInstances(where: {and: {processId: {equal: "travels"}, or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}}) {
    id
    processId
    processName
    start
    end
    state
  }
}

특성 유형에 따라 다음 사용 가능한 Operator를 사용할 수 있습니다.

특성 유형사용 가능한 Operator

문자열 배열

  • contains: 문자열
  • containsAll: 문자열 배열
  • containsAny: 문자열 배열
  • IsNull: 부울 (true 또는 false)

문자열

  • in: 문자열 배열
  • : 문자열
  • IsNull: 부울 (true 또는 false)
  • 동일: 문자열

ID

  • in: 문자열 배열
  • IsNull: 부울 (true 또는 false)
  • 동일: 문자열

부울

  • IsNull: 부울 (true 또는 false)
  • 동일한: 부울(true 또는 false)

Numeric

  • in: 정수 배열
  • IsNull: 부울
  • 동일하게: 정수
  • greaterThan: Integer
  • greaterThanEqual: Integer
  • lessThan: Integer
  • lessThanEqual: Integer
  • between: 숫자 범위
  • from: 정수
  • 대상: 정수

날짜

  • IsNull: 부울 (true 또는 false)
  • 동일: 날짜 시간
  • greaterthan: 날짜 시간
  • greaterThanEqual: 날짜 시간
  • lessThan: 날짜 시간
  • lessThanEqual: 날짜 시간
  • between: 날짜 범위
  • 출처: 날짜
  • 대상: 날짜

4.2.1.4. orderBy 매개변수를 사용하여 쿼리 결과 정렬

orderBy 매개변수를 사용하여 워크플로우 특성을 기반으로 쿼리 결과를 정렬할 수 있습니다. 오름차순 (ASC) 또는 내림차순으로 정렬 방향을 지정할 수도 있습니다. 지정한 순서에 따라 여러 속성이 적용됩니다.

ASC 순서에서 시작 시간별로 정렬할 쿼리의 예

{
  ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}) {
    id
    processId
    processName
    start
    end
    state
  }
}

4.2.1.5. pagination 매개변수를 사용하여 결과 수 제한

반환된 결과 수를 제어하고 pagination 매개변수를 사용하여 오프셋을 지정할 수 있습니다.

결과를 오프셋 0부터 시작하여 10으로 제한하는 쿼리의 예

{
  ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}, pagination: {limit: 10, offset: 0}) {
    id
    processId
    processName
    start
    end
    state
  }
}

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.