GraphQL 스키마 파일을 내보내거나 생성하여 디스크에 저장합니다. 다음 두 가지 모드가 지원됩니다.
- 임시 DAB 런타임 인스턴스에서 기존 스키마 가져오기
- 샘플링을 사용하여 NoSQL 데이터에 대한 Cosmos DB에서 스키마 생성
Syntax
dab export --graphql -o <output-directory> [options]
중요합니다
유효한 DAB 구성이 필요합니다. 데이터베이스 형식은 구성 파일에서 읽습니다. 플래그가 허용되지 않습니다 --database-type .
한눈에 보기
| Option | 필수 | Default | 적용 |
|---|---|---|---|
--graphql |
Yes | false | 스키마 내보내기용으로 설정해야 합니다. |
-o, --output <dir> |
Yes | – | 출력 스키마에 대한 디렉터리 |
-g, --graphql-schema-file <name> |
아니오 | schema.gql |
출력 dir 내에 배치된 파일 이름 |
--generate |
아니오 | false | Cosmos DB 데이터에서 스키마 생성 |
-m, --sampling-mode <mode> |
아니오 | TopNExtractor |
다음 중 하나: TopNExtractor, EligibleDataSamplerTimePartitionedSampler |
-n, --sampling-count <int> |
아니오 | 모드 종속 | 모드당 레코드 수 |
--sampling-partition-key-path <path> |
아니오 | – | 만 해당 EligibleDataSampler |
-d, --sampling-days <int> |
아니오 | – | N일보다 최신 레코드로 제한 |
--sampling-group-count <int> |
아니오 | – | 만 해당 TimePartitionedSampler |
-c, --config <file> |
아니오 | Env 관련 또는 dab-config.json |
구성 파일 경로 |
행동
| Mode | Description |
|---|---|
| 기존 스키마 내보내기 | 임시 런타임을 시작하고, GraphQL 스키마를 검색하고, 파일을 씁니다. |
| 스키마 생성 | Cosmos DB 문서 샘플 및 스키마 유추 |
빈 스키마로 인해 오류가 발생합니다. "생성된 GraphQL 스키마가 비어 있습니다. 스키마를 생성하는 데 데이터를 사용할 수 있는지 확인하세요."
샘플링 모드
TopNExtractor
- 샘플 N 최근 문서
- 선택적 시간 필터
--sampling-days
더 작고 균일한 데이터 세트에 사용
EligibleDataSampler
- 파티션 인식 샘플링
- 파티션당 N 문서
-
--sampling-partition-key-path선택적
파티션에 다양한 스키마가 있는 경우 사용
TimePartitionedSampler
- 최소/최대
_ts값을 시간 그룹으로 분할 - 그룹당 N개 문서
-
--sampling-group-count필수
시간이 지남에 따라 스키마가 발전할 때 사용
비고
여러 쿼리로 인해 리소스를 많이 사용합니다.
Options
--graphql
스키마 내보내기 사용 그것없이, 아무것도 발생하지 않습니다.
-o, --output
스키마 파일의 디렉터리입니다. 누락된 경우 생성됩니다.
-g, --graphql-schema-file
출력 파일 이름만, 기본값은 .입니다 schema.gql.
--generate
- false(기본값): 런타임 시작, 내성 스키마
- true: Cosmos DB 데이터에서 스키마 생성
-m, --sampling-mode
옵션: TopNExtractor, EligibleDataSampler, TimePartitionedSampler 기본값: TopNExtractor
-n, --sampling-count
- TopNExtractor: 총 문서
- EligibleDataSampler: 파티션당
- TimePartitionedSampler: 시간별 그룹
--sampling-partition-key-path
EligibleDataSampler에 대한 파티션 키 경로
-d, --sampling-days
회신을 통해 문서 필터링(일)
--sampling-group-count
TimePartitionedSampler의 시간 그룹 수
-c, --config
구성 파일 경로입니다. 생략된 경우:
-
dab-config.<DAB_ENVIRONMENT>.jsonenv var이 설정된 경우 - 그렇지 않으면
dab-config.json
반환 코드
| 코드 | Meaning |
|---|---|
| 0 | 내보내기 성공 |
| 0이 아닌 경우 | 내보내기 실패 |
예시
기존 스키마 내보내기
dab export --graphql -o ./schema-out
스키마 생성(TopNExtractor)
dab export --graphql -o ./schema-gen \
--generate \
--sampling-mode TopNExtractor \
--sampling-count 25 \
--sampling-days 14
파티션 인식 샘플링
dab export --graphql -o ./schema-partitions \
--generate \
--sampling-mode EligibleDataSampler \
--sampling-partition-key-path /customerId \
--sampling-count 10
시간 기반 샘플링
dab export --graphql -o ./schema-time \
--generate \
--sampling-mode TimePartitionedSampler \
--sampling-group-count 8 \
--sampling-count 5 \
--sampling-days 60
사용자 지정 출력 파일 이름
dab export --graphql -o ./out \
-g cosmos-schema.graphql \
--generate \
--sampling-mode TopNExtractor \
--sampling-count 15
생성된 파일 사용
업데이트 구성:
{
"data-source": {
"database-type": "cosmosdb_nosql"
},
"runtime": {
"graphql": {
"enabled": true,
"schema-file": "schema.gql"
}
}
}
팁 (조언)
생성된 스키마를 안정적으로 커밋합니다. 데이터 모델이 변경되면 다시 실행합니다.
Troubleshooting
| 증상 | 원인 | 수정 |
|---|---|---|
| 빈 스키마 | 데이터 없음 또는 부족 | 대표 데이터 추가 |
| 연결 오류 | 잘못된 연결 문자열 | 자격 증명 또는 네트워크 수정 |
| 필드 누락 | 샘플링된 문서에 없음 | 개수 늘리기 또는 변경 모드 |
| 몇 가지 파티션 결과 | 잘못된 파티션 키 | 올바른 키 경로 제공 |
| 느린 시간 샘플링 | 큰 데이터 세트 | 그룹 또는 일 줄이기 |
모범 사례
- TopNExtractor 시작
- 버전 제어를 사용하여 스키마 변경 내용 차이 제거
- 중요한 컬렉션의 경우 다른 매개 변수를 사용하여 여러 패스를 실행합니다.