Important
여러 지역에서 99.999% 가용성 서비스 수준 계약, 즉각적인 자동 크기 조정 및 자동 장애 조치(failover)가 있는 대규모 시나리오에 대한 데이터베이스 솔루션을 찾고 있나요? NoSQL용 Azure Cosmos DB를 고려합니다.
OLAP(온라인 분석 처리) 그래프를 구현하거나 기존 Apache Gremlin 애플리케이션을 마이그레이션하시겠습니까? Microsoft Fabric에서 그래프를 고려합니다.
Azure Cosmos DB for Apache Gremlin는 Gremlin 쿼리 언어를 사용하는 그래프 컴퓨팅 프레임워크인 널리 사용되는 Apache Tinkerpop을 구현하는 완전 관리형 그래프 데이터베이스 서비스입니다. Gremlin용 API는 최소한의 관리로 필요한 만큼 확장하고 확장할 수 있는 서비스와 함께 Gremlin 사용을 시작할 수 있는 부담 없는 방법을 제공합니다.
이 빠른 시작에서는 Gremlin 콘솔을 사용하여 새로 만든 Azure Cosmos DB for Gremlin 계정에 연결합니다.
필수 조건
- 활성 구독이 있는 Azure 계정.
- Azure 구독이 없으신가요? 무료 Azure 계정을 등록합니다.
-
Docker 호스트
- Docker가 설치되어 있지 않나요? GitHub Codespaces에서 이 빠른 시작을 사용해 보세요.
- Azure CLI(명령줄 인터페이스)
Azure Cloud Shell
Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.
Azure Cloud Shell을 시작하려면 다음을 수행합니다.
| 옵션 | 예제/링크 |
|---|---|
| 코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. |
|
| https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. |
|
| Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. |
|
Azure Cloud Shell을 사용하려면:
Cloud Shell을 시작합니다.
코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.
Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.
Enter를 선택하여 코드 또는 명령을 실행합니다.
Gremlin용 API 계정 및 관련 리소스 만들기
Gremlin 콘솔을 사용하기 전에 Gremlin용 API 계정을 만들어야 합니다. 또한 데이터베이스와 그래프를 배치하는 데도 도움이 됩니다.
accountName, resourceGroupName 및 location에 대한 셸 변수를 만듭니다.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart" location="westus" # Variable for account name with a randomly generated suffix let suffix=$RANDOM*$RANDOM accountName="msdocs-gremlin-$suffix"아직 로그인하지 않았다면
az login을 사용하여 Azure CLI에 로그인합니다.구독에 새 리소스 그룹을 만들려면
az group create를 사용합니다.az group create \ --name $resourceGroupName \ --location $location기본 설정으로 새 API for Gremlin 계정을 만들려면
az cosmosdb create를 사용합니다.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true참고 항목
Azure 구독당 최대 1개의 체험 계층 Azure Cosmos DB 계정을 사용할 수 있으며 계정을 만들 때 옵트인해야 합니다. 이 명령이 무료 계층 할인을 적용하지 못하면 구독의 다른 계정이 이미 무료 계층으로 사용하도록 설정되었음을 의미합니다.
를 사용하여 계정의 Gremlin용 API 엔드포인트
az cosmosdb show을 가져옵니다.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"를 사용하여 계정에 대한 키 목록에서
az-cosmosdb-keys-list를 찾습니다.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"NAME 및 KEY 값을 기록합니다. 나중에 이 자격 증명을 사용합니다.
를 사용하여
cosmicworks라는az cosmosdb gremlin database create를 만듭니다.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"를 사용하여
az cosmosdb gremlin graph create를 만듭니다. 그래프 이름을products로 지정한 다음, 처리량을400로 설정하고 마지막으로 파티션 키 경로를/category로 설정합니다.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Docker를 사용하여 Gremlin 콘솔 시작 및 구성
gremlin 콘솔의 경우 이 빠른 시작에서는 Docker Hub의 tinkerpop/gremlin-console 컨테이너 이미지를 사용합니다. 이 이미지에서는 Gremlin용 API와의 연결에 적절한 버전의 콘솔(3.4)을 사용하고 있는지 확인합니다. 콘솔이 실행되면 로컬 Docker 호스트에서 원격 Gremlin용 API 계정에 연결합니다.
3.4컨테이너 이미지의tinkerpop/gremlin-console버전을 가져옵니다.docker pull tinkerpop/gremlin-console:3.4빈 작업 폴더를 만듭니다. 빈 폴더에서 remote-secure.yaml 파일을 만듭니다. 이 YAML 구성을 파일에 추가합니다.
hosts: [<account-name>.gremlin.cosmos.azure.com] port: 443 username: /dbs/cosmicworks/colls/products password: <account-key> connectionPool: { enableSsl: true, sslEnabledProtocols: [TLSv1.2] } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { serializeResultToString: true } }참고 항목
<account-name>및<account-key>자리 표시자를 이 빠른 시작의 앞부분에서 가져온 NAME 및 KEY 값으로 바꿉니다.remote-secure.yaml 파일이 포함된 작업 폴더의 컨텍스트에서 새 터미널을 엽니다.
대화형(
--interactive --tty) 모드에서 Docker 컨테이너 이미지를 실행합니다. 현재 작업 폴더를 컨테이너 내의/opt/gremlin-console/conf/경로에 탑재해야 합니다.docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4Gremlin 콘솔 컨테이너 내에서 remote-secure.yaml 구성 파일을 사용하여 원격(Gremlin용 API) 계정에 연결합니다.
:remote connect tinkerpop.server conf/remote-secure.yaml
꼭짓점 및 에지 만들기 및 트래버스
이제 콘솔이 계정에 연결되었으므로 표준 Gremlin 구문을 사용하여 꼭짓점과 에지를 모두 만들고 트래버스합니다.
다음 속성을 사용하여 제품에 대한 꼭짓점을 추가합니다.
값 label productid 68719518371nameKiama classic surfboardprice285.55categorysurfboards:> g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')Important
접두사를
:>잊지 마세요. 명령을 원격으로 실행하려면 이 접두사가 필요합니다.다음 속성을 사용하여 다른 제품 꼭짓점을 추가합니다.
값 label productid 68719518403nameMontau Turtle Surfboardprice600categorysurfboards:> g.addV('product').property('id', '68719518403').property('name', 'Montau Turtle Surfboard').property('price', 600).property('category', 'surfboards')라는
replaces를 만들어 두 제품 간의 관계를 정의합니다.:> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))그래프 내의 모든 꼭짓점을 계산합니다.
:> g.V().count()그래프를 트래버스하여
Kiama classic surfboard를 대체하는 모든 꼭짓점을 찾습니다.:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()그래프를 트래버스하여
Montau Turtle Surfboard가 대체하는 모든 꼭짓점을 찾습니다.:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()
리소스 정리
Gremlin용 API 계정이 더 이상 필요하지 않으면 해당 리소스 그룹을 삭제합니다.
아직 존재하지 않는 경우 resourceGroupName에 대한 셸 변수를 만듭니다.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"az group delete를 사용하여 리소스 그룹을 삭제합니다.az group delete \ --name $resourceGroupName
문제를 어떻게 해결했나요?
Azure Cosmos DB for Apache Gremlin은 Gremlin을 서비스로 제공하여 문제를 해결했습니다. 이 제품을 사용하면 자체 Gremlin 서버 인스턴스를 유지하거나 자체 인프라를 관리할 필요가 없습니다. 또한 시간이 지남에 따라 요구 사항이 증가함에 맞춰 솔루션을 확장할 수 있습니다.
Gremlin용 API 계정에 연결하기 위해 tinkerpop/gremlin-console 컨테이너 이미지를 사용하여 로컬 설치가 필요하지 않은 방식으로 gremlin 콘솔을 실행했습니다. 그런 다음, remote-secure.yaml 파일에 저장된 구성을 사용하여 실행 중인 컨테이너에서 Gremlin용 API 계정에 연결했습니다. 여기에서 여러 개의 일반적인 Gremlin 명령을 실행했습니다.