빠른 시작: Gremlin 콘솔 및 Apache Gremlin용 Azure Cosmos DB를 사용하여 꼭짓점 및 에지 트래버스
적용 대상: Gremlin
Azure Cosmos DB for Apache Gremlin는 Gremlin 쿼리 언어를 사용하는 그래프 컴퓨팅 프레임워크인 널리 사용되는 Apache Tinkerpop
을 구현하는 완전 관리형 그래프 데이터베이스 서비스입니다. Gremlin용 API는 최소한의 관리로 필요한 만큼 확장하고 확장할 수 있는 서비스와 함께 Gremlin 사용을 시작할 수 있는 부담 없는 방법을 제공합니다.
이 빠른 시작에서는 Gremlin 콘솔을 사용하여 새로 만든 Azure Cosmos DB for Gremlin 계정에 연결합니다.
필수 조건
- 활성 구독이 있는 Azure 계정.
- Azure 구독이 없으신가요? 무료 Azure 계정을 등록합니다.
- Azure 구독을 원하지 않으시나요? 구독 없이 Azure Cosmos DB를 무료로 사용해 볼 수 있습니다.
- 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 계정을 사용할 수 있으며 계정을 만들 때 옵트인해야 합니다. 이 명령이 무료 계층 할인을 적용하지 못하면 구독의 다른 계정이 이미 무료 계층으로 사용하도록 설정되었음을 의미합니다.
az cosmosdb show
를 사용하여 계정의 Gremlin용 API 엔드포인트 NAME을 가져옵니다.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
az-cosmosdb-keys-list
를 사용하여 계정에 대한 키 목록에서 KEY를 찾습니다.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
NAME 및 KEY 값을 기록합니다. 나중에 이 자격 증명을 사용합니다.
az cosmosdb gremlin database create
를 사용하여cosmicworks
라는 데이터베이스를 만듭니다.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 계정에 연결합니다.
tinkerpop/gremlin-console
컨테이너 이미지의3.4
버전을 가져옵니다.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.4
Gremlin 콘솔 컨테이너 내에서 remote-secure.yaml 구성 파일을 사용하여 원격(Gremlin용 API) 계정에 연결합니다.
:remote connect tinkerpop.server conf/remote-secure.yaml
꼭짓점 및 에지 만들기 및 트래버스
이제 콘솔이 계정에 연결되었으므로 표준 Gremlin 구문을 사용하여 꼭짓점과 에지를 모두 만들고 트래버스합니다.
다음 속성을 사용하여 제품에 대한 꼭짓점을 추가합니다.
값 label product
id 68719518371
name
Kiama classic surfboard
price
285.55
category
surfboards
:> g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')
Important
:>
접두사를 잊지 마세요. 명령을 원격으로 실행하려면 이 접두사가 필요합니다.다음 속성을 사용하여 다른 제품 꼭짓점을 추가합니다.
값 label product
id 68719518403
name
Montau Turtle Surfboard
price
600
category
surfboards
:> 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 명령을 실행했습니다.