Couchbase 또는 Capella를 사용하는 개발자라면 다음 사항에 대해 알고 싶을 것입니다. 카펠라 데이터스튜디오. 커뮤니티가 지원하는 무료 도구로, 매끄러운 단일 창 UI로 다음을 관리할 수 있습니다. 카펠라 운영, 카펠라 칼럼카우치베이스 서버 클러스터. 개발자의 생산성을 높일 뿐만 아니라 사용자 경험을 훨씬 더 원활하고 멋지게 만들어 줍니다. 

이제 새로운 기능이 추가되었습니다: 합성 데이터 생성기.

카펠라 데이터스튜디오의 합성 데이터 생성기 는 개발자가 코드 없이도 원활하게 프로젝트를 위한 사실적이고 의미 있는 데이터를 생성할 수 있도록 설계되었습니다. 애플리케이션 테스트, 머신 러닝 모델 교육, 대규모 시스템 시뮬레이션 등 어떤 작업을 수행하든 이 기능은 탁월한 유연성과 강력한 성능을 제공합니다.

합성 데이터란 무엇인가요?

합성 데이터는 단순한 '가짜' 데이터가 아니라 실제 데이터의 속성, 분포, 관계를 모방하도록 설계된 데이터입니다. 가짜 데이터는 맥락 없이 임의의 값을 생성할 수 있지만, 합성 데이터는 이를 목표로 합니다:

    • 필드 간의 논리적 관계 유지(예: 도시와 주가 일관성 있게 유지)
    • 정규 분포 또는 가중치 분포를 따르는 값을 생성하는 등 현실적인 분포를 따릅니다.
    • 테스트, 분석 및 시뮬레이션에 통계적으로 관련성이 있어야 합니다.
    • 따라서 합성 데이터는 실제 데이터를 사용할 수 없거나 민감하거나 불충분한 시나리오에서 매우 유용합니다.

합성 데이터 생성에 대해 자세히 알아보려면 계속 읽거나 이 동영상을 시청하세요.

카펠라 데이터스튜디오의 합성 데이터 생성기의 주요 기능

현실적인 상관관계 데이터

저희의 생성기는 의미 있는 데이터 관계를 보장합니다. 예를 들어 주소에는 일치하는 도시, 주, 우편번호, 위도 및 경도 값이 포함됩니다. 이름과 인구 통계는 논리적으로 일관성이 있습니다.

기본 제공 서체, 완전한 구성 가능

다양한 기본 제공 서체 중에서 선택하여 데이터 생성을 빠르게 시작할 수 있습니다. 이름, 위치, 날짜, 숫자 필드 등 특정 요구 사항에 맞게 각 유형을 사용자 지정할 수 있습니다.

확장 가능: 나만의 서체 가져오기

나만의 데이터 세트나 특정 요구사항이 있나요? 사용자 지정 서식을 가져와서 생성기의 기능을 확장하고 고유한 사용 사례에 맞는 맞춤형 데이터를 생성하세요.

기본 키 / 외래 키 관계s

필드 간의 관계를 정의하여 복잡한 데이터세트를 쉽게 모델링할 수 있습니다. 외래 키는 기본 키 데이터를 참조할 수 있으므로 사실적인 관계형 데이터 구조를 구현할 수 있습니다.

강력한 함수로 표현식 처리

내장 함수를 활용하여 코드를 한 줄도 작성하지 않고도 복잡한 표현식을 만들 수 있습니다. 필드를 동적으로 결합하고 조작하여 데이터를 완벽하게 제어할 수 있습니다.

데이터 크기 제한 없음

소규모 테스트를 위한 몇 개의 행부터 대규모 시뮬레이션을 위한 수백만 개의 문서에 이르기까지 모든 규모의 데이터를 생성할 수 있습니다. 생성할 수 있는 데이터에는 제한이 없습니다.

Capella Operational 및 Couchbase Server와의 원활한 통합

합성 데이터를 Capella Operational 또는 Couchbase Server로 직접 가져와서 한 단계 더 발전시킬 수 있습니다. 이렇게 하면 생성부터 배포까지 간소화된 워크플로우를 보장합니다.

합성 데이터 생성을 위해 Capella DataStudio를 선택하는 이유는 무엇인가요?

직관적인 UI와 강력한 기능 세트를 갖춘 Capella DataStudio의 합성 데이터 생성기는 고품질의 의미 있는 데이터 세트를 생성하기 위한 최고의 도구입니다. 개발자, 데이터 과학자, 테스터 모두 이 기능을 사용하면 시간을 절약하고 복잡성을 줄이며 사실적인 데이터로 프로젝트를 향상시킬 수 있습니다. 무한한 가능성을 탐색하고 데이터 생성 경험을 새롭게 정의하세요.


합성 데이터 생성

합성 데이터 생성기가 어떻게 작동하는지 살펴보겠습니다. 

스키마 빌더

스키마는 한 번에 한 행씩 필드 단위로 구축됩니다. 각 행에는 최소 두 개의 속성이 있습니다:

    • 필드 이름
    • 필드의 데이터 유형 - t그의 핵심 또는 사용자 서체

데이터 유형에 따라 더 많은 속성이 노출될 수 있습니다:

주문 스키마의 예

필드 이름

    • 필드 이름은 JSON 호환 필드 이름이면 됩니다.
    • 중첩된 JSON 객체는 점 형식으로 지정됩니다.
      • 심층 중첩 JSON 지원
    • 이중 대시 접두사가 있는 필드 이름은 기본 키로 취급됩니다.
      • 데이터 세트 생성 시 이러한 키도 내보내지며 다음과 같이 저장됩니다. localStore/합성데이터/데이터세트/schemaName.pk 파일
      • 기본 키는 루트 문서의 필드에만 지정할 수 있습니다.
        • JSON 개체, 중첩된 필드 및 숨겨진 필드는 기본 키가 될 수 없습니다.
    • 대시 접두사가 하나 있는 필드 이름은 숨겨진 필드로 취급됩니다.
      • 숨겨진 필드는 필드 참조에 사용되는 임시 저장소로 사용됩니다.
      • 숨겨진 필드는 기본 키가 될 수 없습니다.
      • 숨겨진 필드는 JSON 문서에 표시되지 않습니다.
      • JSON 개체는 숨길 수 없습니다.
      • 중첩된 필드는 숨길 수 있습니다.

데이터 유형

데이터 유형은 대화 상자에서 선택합니다:

사진은 핵심 서체와 사용자 제공 서체(acme.pizzas)를 모두 보여줍니다.

핵심 서체

카펠라 데이터스튜디오 제공:

사용자 서체

데이터 생성기의 기능을 확장하기 위해 귀하가 제공합니다. 두 개의 파일을 제공해야 합니다:

    • 데이터가 포함된 CSV 파일
    • 서체를 설명하는 매니페스트 파일

사용자 조판 프로세스

사용자 서체로 문서가 생성되면 다음과 같은 일이 발생합니다:

    • 파일에서 임의의 행 하나를 읽습니다.
    • 행이 행 캐시에 캐시됩니다.
    • 그런 다음 이 행 캐시에서 필드를 읽습니다.
      • 필드를 읽으면 해당 필드는 행 캐시에서 무효화됩니다.
      • 필드가 null인 경우 전체 행 캐시가 무효화되고 새로운 임의 행이 읽혀집니다.
      • 필드는 행 캐시에서 읽혀지고 주어진 문서에 대해 데이터가 상호 연관됩니다.
      • 각 문서는 새로운 행 캐시로 시작됩니다.

피자 조판 예시

핵심 기능

세 가지 특수 데이터 유형이 있습니다:

    1. 표현식
    2. foreignKey
    3. jsonArray

1. core.function.expression

표현식은 스키마를 사용자 지정하는 강력한 방법입니다:

    • 표현식은 문자열일 뿐입니다.
    • 임베디드 참조 ( %%) 및 함수

문서 및 표현식 아키텍처

문서가 어떻게 작성되는지 살펴봅시다:

    • 문서가 위에서 아래로, 행 단위로 작성됩니다.
      • 모든 행 단계에는 항상 부분 문서가 있습니다.
    • 첫째, 표현식은 문자열입니다.
    • 다음 주소로 이동합니다. 표현식 평가기
      • 필드와 값이 포함된 부분 문서가 평가자에게 제공됩니다.
        • 즉, 이전 필드와 해당 평가값을 이제 사용할 수 있습니다.
    • 그런 다음 문자열에 다음이 검사됩니다. 참조
      • 참조는 부분 문서에서 이전에 사용된 필드 이름과 해당 값입니다.
      • 참조는 다음과 같은 값으로 대체됩니다.
      • 즉, 레퍼런스는 다음과 같이 함수
    • 그런 다음 문자열에 다음이 검사됩니다. 함수
      • 그런 다음 함수가 실행되고 해당 값이 부분 문서에서 대체됩니다.
    • 평가자는 최종적으로 출력을 반환합니다.

2. core.function.foreignKey

외래 키와 데이터 상관 관계

관계형 데이터로 작업할 때는 외래 키를 통해 참조 무결성을 유지하는 것이 중요합니다. 다음은 합성 데이터 생성기가 외래 키 관계를 처리하는 방식입니다:

외래 키 작동 방식

먼저 기본 데이터 집합을 생성해야 합니다. 다음에 대한 스키마가 있다고 가정해 보겠습니다. 부서 를 호출하면 부서 ID와 이름이 포함된 CSV 파일이 생성됩니다. 이러한 부서 ID는 부서 데이터 집합에서 기본 키 역할을 합니다.

다른 스키마를 만들 때, 예를 들어 직원를 사용하여 이러한 기존 기본 키를 참조하는 필드를 지정할 수 있습니다. 스키마 빌더는 두 개의 드롭다운 메뉴를 제공합니다:

    • 소스 데이터 집합을 선택하는 드롭다운(예: "부서")
    • 참조할 기본 키 필드를 선택할 수 있는 드롭다운(예: "id")

데이터 생성 프로세스

외래 키 참조가 있는 데이터를 생성할 때 시스템:

    • 원본 데이터 집합에서 행을 무작위로 선택합니다.
    • 해당 행에서 기본 키 값을 읽습니다.
    • 생성되는 새 데이터 세트에서 이 값을 사용합니다.

데이터 상관관계 유지

중요한 기능은 여러 외래 키 참조를 처리하는 방식입니다. 스키마가 동일한 소스 데이터 집합의 여러 열을 참조하는 경우, 논리적 상관관계를 유지하기 위해 동일한 행에서 값을 가져옵니다.

예를 들어 Employee 스키마가 부서 데이터 집합의 department_id와 department_location을 모두 참조하는 경우, 두 값 모두 동일한 부서 레코드에서 가져옵니다. 이렇게 하면 합성 데이터가 관련 필드 간의 실제적인 관계를 유지합니다.

이 접근 방식은 실제 데이터에 존재하는 참조 무결성과 논리적 관계를 보존하여 보다 사실적인 합성 데이터 세트를 생성하는 데 도움이 됩니다.

3. core.function.jsonArray

JSON 배열 구성

JSON 배열 필드를 구성할 때 다음을 지정할 수 있습니다:

    • 배열의 최소 개체 수
    • 배열의 최대 개체 수

그러면 생성기가 지정한 범위 내에서 임의의 수의 오브젝트로 배열을 생성합니다.

구조 및 제한 사항

JSON 배열은 다음 규칙을 따릅니다:

    1. 각 배열에는 단순하고 평평한 JSON 객체가 포함됩니다.
    2. 배열 중첩은 지원되지 않습니다(배열 내 배열은 지원되지 않음).
    3. 배열의 각 객체는 동일한 구조를 따릅니다.

데이터 생성

스키마가 만족스럽게 구축되었다면 이제 데이터를 생성할 차례입니다.

사진: 합성 데이터 세트 생성

    • 데이터 세트가 생성되어 다음 위치에 기록됩니다. 로컬스토어/합성데이터/데이터세트/
    • 데이터 세트 파일 이름은 스키마 이름.json
      • 이것은 JSON 라인 파일
      • 문서에 기본 키로 표시된 필드(이중 대시로 접두사가 붙음)가 있는 경우에는 schemaName.pk 도 생산됩니다.
        • .pk 파일은 CSV 파일입니다.
    • 필드에 seq() 함수를 사용하면 시퀀스가 1씩 증가합니다.
    • 문서 수에는 제한이 없습니다.

데이터 세트 예시

customer.json

customer.pk

데이터 집합 미리 보기

생성된 데이터 집합을 미리 볼 수 있습니다. 미리보기 패널은 JSON 형식 또는 테이블 형식의 데이터 미리보기를 지원합니다.

그림은 미리 보기 패널과 테이블 미리 보기를 보여줍니다.

가져오기

생성된 데이터 집합을 Couchbase 컬렉션으로 가져올 수 있습니다:

    • 가져오기는 cbimport 유틸리티를 사용하며 모든 가져오기 옵션을 제공합니다.
    • 가져올 파일 제한은 없습니다.

그림은 가져오기 대화상자 및 옵션을 보여줍니다.


생산성을 높일 준비가 되셨나요?

Capella DataStudio는 개발자들이 기다려온 도구입니다. Couchbase Server, Capella Operational 또는 Capella Columnar 클러스터를 관리하든, 이 앱은 작업을 더 쉽고, 더 빠르고, 더 멋지게 만들어 줍니다.

시도 카펠라 데이터스튜디오 무료 를 확인하고 튜토리얼 동영상:

카펠라 데이터스튜디오를 사용하면 데이터 관리가 이렇게 재미있고 생산적이었던 적이 없습니다!


부록 - f표현식에서 지원되는 함수

표에는 표현식에 사용할 수 있는 함수 목록이 나와 있습니다:

유형 출력
int(최소,최대) int(1,10) 6
float(min,max) float(1.234,10.587) 5.824
float(min,max,dec) float(1,10,2) 5.82
정상(평균,표준,감소) normal(50,10,3) 56.48
bool() bool() FALSE
bool(바이어스) bool(0.8) TRUE
날짜(시작,종료) date(01/01/2024,12/31/2024) “02/02/2024”
시간(from,to) 시간(오전 08:00, 오후 5:00) "08:47 AM"
arrayItem(array) arrayItem(["cat","mouse","dog"]) "cat"
arrayItem(array) arrayItem(["cat:2″,"mouse:1″,"dog:7"]) "dog"
arrayItems(array,length) arrayItems(["cat","mouse","dog"],2) ["cat","mouse"]
arrayItems(array,length) arrayItems(["cat:2″,"mouse:1″,"dog:7"]) ["cat","dog"]
arrayKV(array,field) arrayKV(["cat:2″,"mouse:1″,"dog:7″],"cat") 2
GPS(위도, 경도) gps(37.3382,-121.8863) gpsObject
gpsNearby(gps,반경) gpsNearby(%gps%,20) gpsObject
seq(startNumber) seq(1000) 1030
uuid() uuid() "e46b493a-..."
add(num1,num2) add(1.23,3.45) 4.68
subtract(num1,num2) subtract(1.23,3.45) -2.22
multiply(num1,num2) multiply(1.23,3.45) 4.24
퍼센트(숫자,덴) 퍼센트(1.23,3.45) “35.65%”
accumulate(num,name) accumulate(%orders.subTotal%,sale) 1304.84



작성자

게시자 프라사드 도디

Prasad는 Couchbase 지원성, 관리성 및 도구의 선임 제품 관리자입니다. Couchbase에 입사하기 전에는 IBM에서 개발, QA, 지원, 기술 영업 등 다양한 부서에서 근무했습니다. Prasad는 클라크슨 대학교에서 화학 석사 학위를 받았습니다. 뉴욕 클락슨 대학교에서 화학 석사 학위를 받았습니다.

댓글 남기기