Gremlin 콘솔에서 Neptune DB 인스턴스에 연결하도록 설정 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Gremlin 콘솔에서 Neptune DB 인스턴스에 연결하도록 설정

Gremlin 콘솔을 사용하면 REPL (루프) 환경에서 TinkerPop 그래프와 쿼리를 실험해 볼 수 있습니다. read-eval-print

Gremlin 콘솔 설치 및 일반적인 방법으로 연결

Gremlin 콘솔을 사용하여 원격 그래프 데이터베이스에 연결할 수 있습니다. 다음 섹션에서는 Gremlin 콘솔을 설치하고 구성하여 원격으로 Neptune DB 인스턴스에 연결하는 방법을 안내합니다. 사용자의 Neptune DB 인스턴스와 동일한 Virtual Private Cloud(VPC)에 있는 Amazon EC2 인스턴스에서 이러한 지침을 따라야 합니다.

SSL/TLS(필수)를 사용하여 Neptune에 연결하는 데 도움이 필요하면 SSL/TLS 구성을 참조하세요.

참고

Neptune DB 클러스터에서 IAM 인증을 활성화한 경우 여기의 지침 대신 Gremlin 콘솔을 설치하기 위한 Signature Version 4 서명으로 Gremlin 콘솔을 사용하여 Neptune에 연결의 지침을 따르세요.

Gremlin 콘솔을 설치하고 Neptune에 연결하려면
  1. Gremlin 콘솔 이진은 Java 8 또는 Java 11이 필요합니다. 이 지침에서는 Java 11의 사용을 전제로 합니다. 다음과 같이 EC2 인스턴스에 Java 11을 설치할 수 있습니다.

    • Amazon Linux 2(AL2)를 사용하는 경우:

      sudo amazon-linux-extras install java-openjdk11
    • Amazon Linux 2023(AL2023)을 사용하는 경우:

      sudo yum install java-11-amazon-corretto-devel
    • 다른 배포판의 경우 다음 중 적절한 것을 사용하세요.

      sudo yum install java-11-openjdk-devel

      또는:

      sudo apt-get install openjdk-11-jdk
  2. 다음을 입력하여 사용자의 EC2 인스턴스에 Java 11을 기본 런타임으로 설정합니다.

    sudo /usr/sbin/alternatives --config java

    메시지가 표시되면 Java 11에 대한 숫자를 입력합니다.

  3. Apache 웹 사이트에서 적절한 버전의 Gremlin 콘솔을 다운로드합니다. 현재 실행 중인 Neptune 엔진 버전의 엔진 릴리스 페이지에서 지원하는 Gremlin 버전을 확인할 수 있습니다. 예를 들어, 버전 3.6.5의 경우 다음과 같이 Apache TinkerPop3 웹 사이트에서 EC2 인스턴스로 Gremlin 콘솔을 다운로드할 수 있습니다.

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Gremlin 콘솔 zip 파일의 압축을 풉니다.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. 압축을 푼 디렉터리로 디렉터리를 변경합니다.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. 추출된 디렉토리의 conf 하위 디렉터리에서 다음 텍스트가 있는 파일 neptune-remote.yaml을 생성합니다. Neptune DB 인스턴스의 호스트 이름 또는 IP 주소로 your-neptune-endpoint대체합니다. 대괄호([ ])를 사용해야 합니다.

    참고

    사용자의 Neptune DB 인스턴스 호스트 이름을 찾는 방법은 Amazon Neptune 엔드포인트에 연결 섹션을 참조하세요.

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
  7. 터미널에서 Gremlin 콘솔 디렉터리(apache-tinkerpop-gremlin-console-3.6.5)로 이동한 후 다음 명령을 입력하여 Gremlin 콘솔을 실행합니다.

    bin/gremlin.sh

    다음 결과가 표시됩니다.

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    이제 gremlin> 프롬프트가 표시됩니다. 이 프롬프트에 나머지 단계를 입력합니다.

  8. gremlin> 프롬프트에 다음을 입력하여 Neptune DB 인스턴스에 연결합니다.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. gremlin> 프롬프트에 다음을 입력하여 원격 모드로 전환합니다. 그러면 모든 Gremlin 쿼리가 원격 연결로 전송됩니다.

    :remote console
  10. 다음과 같이 입력하여 Gremlin 그래프에 쿼리를 전송합니다.

    g.V().limit(1)
  11. 완료했으면 다음을 입력하여 Gremlin 콘솔을 종료합니다.

    :exit
참고

세미콜론(;) 또는 줄 바꿈 문자(\n)를 사용하여 각 문장을 구분합니다.

최종 순회 이전의 각 순회는 실행할 next()로 끝나야 합니다. 최종 순회의 데이터만 반환됩니다.

Gremlin의 Neptune 구현에 대한 자세한 내용은 Amazon Neptune에 사용되는 Gremlin 표준 규정 준수 섹션을 참조하세요.

Gremlin 콘솔에 연결하는 다른 방법

일반 연결 접근 방식의 단점

Gremlin 콘솔에 연결하는 가장 일반적인 방법은 위에서 설명한 것처럼 gremlin> 프롬프트에서 다음과 같은 명령을 사용하는 방법입니다.

gremlin> :remote connect tinkerpop.server conf/(file name).yaml gremlin> :remote console

이 방법은 효과적으로 작동하며, Neptune에 쿼리를 보낼 수 있도록 지원합니다. 하지만 Groovy 스크립트 엔진을 루프에서 제외하므로, Neptune은 모든 쿼리를 순수 Gremlin으로 취급합니다. 즉, 다음과 같은 쿼리 양식은 실패합니다.

gremlin> 1 + 1 gremlin> x = g.V().count()

이렇게 연결한 경우 변수를 사용하여 가장 근접하게 할 수 있는 작업은 콘솔에서 유지하는 result 변수를 사용하고 다음과 같이 :> 기호를 사용하여 쿼리를 전송하는 것입니다.

gremlin> :remote console ==>All scripts will now be evaluated locally - type ':remote console' to return to remote mode for Gremlin Server - [krl-1-cluster.cluster-ro-cm9t6tfwbtsr.us-east-1.neptune.amazonaws.com/172.31.19.217:8182] gremlin> :> g.V().count() ==>4249 gremlin> println(result) [result{object=4249 class=java.lang.Long}] gremlin> println(result['object']) [4249]

 

다른 연결 방법

다음과 같이 다른 방법으로 Gremlin 콘솔에 연결할 수도 있습니다. 이 방법이 더 효과적일 수도 있습니다.

gremlin> g = traversal().withRemote('conf/neptune.properties')

neptune.properties는 다음과 같은 형식을 취합니다.

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection gremlin.remote.driver.clusterFile=conf/my-cluster.yaml gremlin.remote.driver.sourceName=g

my-cluster.yaml 파일은 다음과 비슷해야 합니다.

hosts: [my-cluster-abcdefghijk.us-east-1.neptune.amazonaws.com] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false } } connectionPool: { enableSsl: true }

Gremlin 콘솔 연결을 이와 같이 구성하면 다음과 같은 종류의 쿼리를 성공적으로 수행할 수 있습니다.

gremlin> 1+1 ==>2 gremlin> x=g.V().count().next() ==>4249 gremlin> println("The answer was ${x}") The answer was 4249

다음과 같이 결과가 표시되지 않도록 할 수 있습니다.

gremlin> x=g.V().count().next();[] gremlin> println(x) 4249

일반적인 모든 쿼리 방법(터미널 단계 없음)은 계속 작동합니다. 예:

gremlin> g.V().count() ==>4249

g.io().read() 단계를 사용하여 이런 종류의 연결이 있는 파일을 로드할 수도 있습니다.