設定 Gremlin 主控台來連線至 Neptune 資料庫執行個體 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Gremlin 主控台來連線至 Neptune 資料庫執行個體

Grimlin 控制台允許您在REPL(read-eval-print 循環)環境中嘗試 TinkerPop 圖形和查詢。

安裝 Gimlin 主控台並以尋常的方式連線至其中

您可以使用 Gremlin 主控台連接到遠端圖形資料庫。下節會引導您安裝與設定 Gremlin 主控台,從遠端連線至 Neptune 資料庫執行個體。您必須遵循與 Neptune 資料庫EC2執行個體位於相同虛擬私有雲端 (VPC) 中 Amazon 執行個體的這些指示。

如需使用SSL/TLS(必要) 連線至 Neptune 的說明,請參閱SSL/TLS配置

注意

如果您已在 Neptune DB 叢集上啟用IAM驗證,請依照中搭配 Signature 第 4 版簽署,使用 Gremlin 主控台連線到 Neptune的指示安裝 Gemlin 主控台,而非此處的指示。

安裝 Gremlin 主控台並連線至 Neptune
  1. Gremlin 主控台二進位檔需要 Java 8 或 Java 11。這些指示假設使用 Java 11。您可以在您的EC2實例上安裝 Java 11,如下所示:

    • 如果您使用的是 Amazon Linux 2 (AL2)

      sudo amazon-linux-extras install java-openjdk11
    • 如果您使用的AL2是 Amazon

      sudo yum install java-11-amazon-corretto-devel
    • 對於其他發行版,請使用以下任一適當的方式:

      sudo yum install java-11-openjdk-devel

      或:

      sudo apt-get install openjdk-11-jdk
  2. 輸入以下內容,將 Java 11 設定為執行EC2個體的預設執行階段。

    sudo /usr/sbin/alternatives --config java

    出現提示時,輸入 Java 11 的編號。

  3. 從 Apache 網站下載適當版本的 Gremlin 主控台。您可以檢查您目前正在執行之 Neptune 版本的引擎版本頁面,以確定它支援哪個 Grinlin 版本。例如,對於版本 3.6.5,您可以從 Apache Tinkerpop3 網站下載小鬼主控台到您的執行個體,如下所示:EC2

    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 的檔案。Replace (取代) your-neptune-endpoint 使用 Neptune 資料庫執行個體的主機名稱或 IP 位址。需使用方括號 ([ ])。

    注意

    如需尋找 Neptune 資料庫執行個體主機名稱的相關資訊,請參閱 連線至 Amazon Neptune 端點 一節。

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
    注意

    序列化程式已從gremlin-driver模組移至 3.7.0 版中的新gremlin-util模組。該軟件包從組織改變了修補程序。

  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 資料庫執行個體。

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. gremlin> 提示下,輸入以下內容以切換為遠端模式。這會傳送所有 Gremlin 查詢到遠端連線。

    :remote console
  10. 輸入以下內容以將查詢傳送到 Gremlin 圖形。

    g.V().limit(1)
  11. 完成後,輸入以下內容以退出 Gremlin 主控台。

    :exit
注意

使用分號 (;) 或換行符號字元 (\n) 來分隔每個陳述式。

最終周遊之前的每個周遊節尾必須為 next(),才能執行。但只有最後的周遊資料會傳回。

如需 Neptune 實作 Gremlin 的詳細資訊,請參閱 Amazon Neptune 中的 Gremlin 標準合規

連線至 Gremlin 主控台的替代方式

正常連線方法的缺點

連線到 Gemlin 主控台的最常用方法是上面說明的方法,在 gremlin> 提示處使用如下的命令:

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

其效果很好,並且可讓您將查詢傳送至 Neptune。不過,它需要將 Groovy 指令碼引擎帶出迴圈,因此 Neptune 會將所有查詢視為純粹的 Grimlin。這表示下列查詢形式會失敗:

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]

 

不同的連線方式

您也可以透過不同的方式連線到 Gemlin 主控台,從而可能發現更好的方式,如下所示:

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.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false } } connectionPool: { enableSsl: true }
注意

序列化程式已從gremlin-driver模組移至 3.7.0 版中的新gremlin-util模組。該軟件包從組織改變了修補程序。

像這樣設定 Gimlin 主控台連線可讓您成功地進行以下類型的查詢:

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() 步驟,搭配這種類型的連線載入檔案。