MarketplaceからOracle Property Graph Serverをデプロイしてみた
この記事は、RexZhengさんが執筆した記事を日本語化したものです。
本記事はこちらから。
前の記事(Oracle Property Graph serverのセットアップとその活用方法をまとめてみた)で、DBCSインスタンス上でOracle Graph Server and Clientをセットアップする方法を紹介しました。しかし、その手順は一つ一つ手作業でしたし、グラフサーバとデータベースインスタンスは同じサーバ(VM)の中に配置されています。これはベストプラクティスとは正直言えないアプローチです...。グラフサーバとデータベースインスタンスは、お互いに干渉を防ぐためにも、それぞれ異なるサーバにデプロイしておくべきです。
と言うか、デプロイにはもっと簡単な方法はあるんじゃないでしょうか。
だってクラウドですから。
事前準備
グラフサーバは、DBCSインスタンスより手前にインストールしていきたいです。
そのために、データベースのいくつかの設定を変更する必要があります。
詳しくは、前記事のこちらを参照してください。
Oracle Databaseの設定
oracle
ユーザに変更後、sys
ユーザとして、Oracle Databaseに接続していきましょう、
sudo su - oracle
sqlplus / as sysdba
[Figure: connect to DB]
- PL/SQLパッケージ
Oracle Graph Server and Clientは、Oracle Database 12.2かそれ以降に対応しています。
しかし、Oracle Graph Server and Client downloadから最新版のPL/SQLパッケージをインストールする必要があります。
Oracle Graph Client for PL/SQL
をダウンロードして、解凍したファイルは任意のディレクトリに保存して下さい。
Oracle Databaseにログインして、下記のスクリプトを実行しましょう
-- Connect as SYSDBA
SQL> alter session set container=<YOUR_PDB_NAME>;
SQL> @opgremov.sql
SQL> @catopg.sql
注記: 未解凍のZipディレクトリには2つのディレクトリがあると思います。一つは、Oracle Database 18c以下を使っているユーザのためのもの。もう一つが、Oracle Database 19c以降を使っているユーザ用です。DBA権限を持つデータベースユーザとして、REAME.mdファイル内のインストラクションに従って下さい。インストラクションを参考にする時は、自分のデータベースのバージョンに合っているか確認してください。これは、グラフ機能が入ったPDBを使用する際に、都度必要になります。私が作ったDBCSインスタンスは19cですから、私は19c_and_aboveのスクリプトを流していきます。
- ユーザとロール
PDBであるpdb1
にdemograph
ユーザを作成して、ロールや表領域を下記のようにグラントしましょう。
全ての表は、demograph
スキーマで作成されロードされていくことになります。
CREATE USER demograph IDENTIFIED BY <PASSWORD>;
GRANT CONNECT, resource TO demograph;
GRANT ALTER SESSION,CREATE PROCEDURE,CREATE SESSION,CREATE TABLE, CREATE TYPE, CREATE VIEW to demograph;
CREATE ROLE graph_developer;
CREATE ROLE graph_administrator;
GRANT graph_developer TO demograph;
GRANT graph_administrator to demograph;
ALTER USER demograph QUOTA 10G ON USERS
GRANT UNLIMITED TABLESPACE TO demograph;
[Figure: prepare DB user demograph
]
Online Retail表を作成する
前記事のOnline Retail表の作成を参照して作成してください。
Marketplaceからデプロイする
OCI Marketplaceの検索バーでgraph
と入力し、検索してください。
Oracle Property Graph Server & Client imageがヒットするはずです。
Launch Stack
ボタンをクリックする前に、Overview
とUsage Instructions
は読んでおいて下さい。
任意にスタックの名称を入力後、コンパートメントは、スタックをlaunchした時と同じコンパートメントを選択して下さい。
On the next page, we need to input more information.
次のページから、更に情報を入力していきます。
Oracle Graph Server コンピュートインスタンスのセクションでは、下記の情報を入力していきます。
-
RESOURCE NAME PREFIX
は、作成したリソースの特定に役立ちます。 -
ORACLE GRAPH SERVER COMPARTMENT
では、graph serverをデプロイするコンパートメントを選択することができます。 -
ORACLE GRAPH SERVER SHAPE
では、サーバのパフォーマンスを決める、シェイプの選択ができます。 シェイプについては、VM Shape pageをご参照ください。 -
SSH PUBLIC KEY
には、グラフサーバがデプロイさせたコンピュートインスタンスにアクセスするための公開鍵を、預けましょう。 [Figure: Stack info 2-1]
少し画面をスクロールダウンしましょう。
Instance Networkセクションで、コンパートメント、VCN、サブネットを下記のように選択していきましょう。
Graph Server Configurationセクションで確認できる, JDBC URL FOR AUTHENTICATION
という項目は、前もって私たちが設定しておくJDBC connection stringを入力します。 そのURLはグラフサーバからアクセス可能である必要があります。
PGQL ENGINE FOR GRAPHVIZ`はデフォルトのままでOKです。
Nextをクリックすると、今した設定の確認画面が表示されます。
Create
をクリックして、デプロイを開始しましょう。
Marketplace imageからのデプロイはOCIリソースマネジャーによって行われます。
先ほどの設定通りに処理が実行されます。
何分か待つと、リソースマネジャーのジョブは完了します。
コンピュートインスタンスにアクセスすることで可能な状態です。
接続して、作成したグラフサーバを確認しましょう。
[Figure: Graph server compute instance]
デプロイの正常実行を確認
PGX service
コンピュートインスタンスのコンソールから確認できるようにgraph server (PGX20201127)はrunningの状態のようです。では、お気に入りの任意のターミナルを使って、サーバに接続してPGXサーバのステータスを確認していきましょう。
systemctl status pgx
Java Shellツールのopg-jshell
下記のコマンドを使って、サーバに接続していきましょう。
opg-jshell --base_url https://localhost:7007 --username demograph
Python clientのopgpy
Java Shell toolであるopgjshell
に加えて、, Oracleは、opgpy
というPython clientもあります。もし、Pythonの方がお好みでしたら、こちらをお使いください。
opgpy --base_url https://localhost:7007 --user demograph
[Figure: Python client]
PGXのグラフ
このセクションでは、Python clientであるopgpy
を使ってproperty graph serverに接続し、データベースとやりとりしていきます。
graphを作成
stmt_create = """
CREATE PROPERTY GRAPH "or"
VERTEX TABLES (
CUSTOMERS KEY(CUSTOMER_ID) PROPERTIES ARE ALL COLUMNS,
PRODUCTS KEY(STOCK_CODE) PROPERTIES ARE ALL COLUMNS,
PURCHASES_DISTINCT KEY(PURCHASE_ID) PROPERTIES ALL COLUMNS
)
EDGE TABLES (
PURCHASES_DISTINCT as has_purchased
KEY (PURCHASE_ID)
SOURCE KEY(CUSTOMER_ID) REFERENCES CUSTOMERS
DESTINATION KEY(STOCK_CODE) REFERENCES PRODUCTS
LABEL "has_purchased"
, PURCHASES_DISTINCT as purchased_by
KEY (PURCHASE_ID)
SOURCE KEY(STOCK_CODE) REFERENCES PRODUCTS
DESTINATION KEY(CUSTOMER_ID) REFERENCES CUSTOMERS
LABEL "purchased_by"
)
"""
session.prepare_pgql(stmt_create).execute()
graph_or = session.get_graph("or")
graph_or
[Figure: create graph or]
graphを問い合わせる
graph_or.query_pgql("SELECT ID(c), ID(p), p.description FROM or MATCH (c)-[has_purchased]->(p) WHERE c.CUSTOMER_ID = 'cust_12353'").print();
[Figure: query graph or]
graphを壊す
graph_or.destroy()
session.get_graph("or")
[Figure: destroy graph]
まとめ
今回は、marketplace imageを使って、フルに動くProperty Graph Serverを手に入れました。しかも、基本的な情報を入力し、いくつかのボタンをクリックするだけで実現することができました。もし適切な準備があれば、5分以内に実現することも可能です。めちゃくちゃ簡単でしたよね!
Author And Source
この問題について(MarketplaceからOracle Property Graph Serverをデプロイしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/yuki_coffee/items/0b26475fbb7e4433c8ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .