(この手順はバージョン 22.3.0 でテストしています。新しいバージョンについてはこちらの記事をご覧ください。)
前編では、Oracle Database をコンテナ上に起動し、これをグラフ・データベースとして使う方法をご説明しました。この環境だけでも、表データからグラフへの変換やビューの作成、さらには JSON と組み合わせなど、さまざまな利用方法がありますので、おいおいご紹介していきたいと思います。
ここでは、あくまで構築手順だけに絞って、その後半として Graph Server のためのコンテナを追加する方法をご説明します。次のアーキテクチャ図で、既に 2-tier deployment は構築できているので、これから 3-tier deployment を追加します。
Graph Server の構築
Graph Server と Graph Viz が含まれる RPM パッケージと Graph Client が含まれる ZIP ファイルをこちらのサイトからダウンロードします。次のパッケージを選択すると、ライセンスへの同意と Oracle アカウントでのログインを要求されます。
- Oracle Graph Server
- Oracle Graph Client
加えて、JDK 11 をこちらのサイトからダウンロードしておきます。こちらも個人用途や開発用途であればライセンス費用がかからないので、安心してお使いいただけます。
- Linux - x64 RPM Package
ここでダウンロードしたこれらの RPM パッケージと次に作成する Dockerfile を同じディレクトリに配置します。
- oracle-graph-21.4.2.x86_64.rpm
- oracle-graph-client-21.4.2.zip
- jdk-11.x.xx_linux-x64_bin.rpm
vi Dockerfile
Dockerfile
FROM oraclelinux:7
ARG VERSION_JDK
ARG VERSION_GSC
COPY ./jdk-${VERSION_JDK}_linux-x64_bin.rpm /tmp
COPY ./oracle-graph-${VERSION_GSC}.x86_64.rpm /tmp
COPY ./oracle-graph-client-${VERSION_GSC}.zip /tmp
RUN yum install -y unzip numactl vim python3 python3-devel gcc openssl \
&& yum clean all \
&& rm -rf /var/cache/yum/* \
&& rpm -ivh /tmp/jdk-${VERSION_JDK}_linux-x64_bin.rpm \
&& rpm -ivh /tmp/oracle-graph-${VERSION_GSC}.x86_64.rpm
ENV JAVA_HOME=/usr/java/jdk-${VERSION_JDK}
ENV PATH=$PATH:/opt/oracle/graph/bin
ENV SSL_CERT_FILE=/etc/oracle/graph/ca_certificate.pem
RUN keytool -import -trustcacerts \
-keystore $JAVA_HOME/lib/security/cacerts -storepass changeit \
-alias pgx -file /etc/oracle/graph/ca_certificate.pem -noprompt \
&& pip3 install wheel \
&& pip3 install /tmp/oracle-graph-client-${VERSION_GSC}.zip
EXPOSE 7007
WORKDIR /opt/oracle/graph/bin
CMD ["sh", "/opt/oracle/graph/pgx/bin/start-server"]
イメージをビルドします。JDK のバージョンは例えば 11.0.13
といったものに置き換えてください。
docker build . \
--tag graph-server:21.4.2 \
--build-arg VERSION_GSC=21.4.2 \
--build-arg VERSION_JDK=<version_of_JDK>
イメージが完成したらコンテナを起動します。この時点では、データベース接続のための JDBC URL が設定されていないためエラーが表示されます。
docker run \
--name graph-server \
--publish 7007:7007 \
graph-server:21.4.2
別のコンソールからコンテナに接続し、データベース接続のための JDBC URL を書き換えます。
$ docker exec -it graph-server /bin/bash
# vi /etc/oracle/graph/pgx.conf
pgx.conf
"jdbc_url": "jdbc:oracle:thin:@host.docker.internal:1521/xepdb1",
ホストに戻り、Graph Server のコンテナを再起動します。ログにエラーが表示されていないことを確認します。
# exit
$ docker restart graph-server
$ docker logs -f graph-server
...
INFO: Starting ProtocolHandler ["https-jsse-nio-7007"]
Graph Viz にログイン
ウェブ・ブラウザから Graph Visualization にログインします。
自己署名証明書が使われているため、セキュリティ警告が表示されます。
- Chrome: "thisisunsafe" とタイプします
- Firefox: Advanced > Accept the Risk and continue
データベース・ユーザーでログインします。
- User: graphuser
- Password: Welcome1(前編の通りに設定した場合)
- Advanced Options: Database
- jdbc:oracle:thin:@host.docker.internal:1521/xepdb1
前編で作成したグラフ GRAPH1
を可視化するため、次の PGQL クエリを実行します。
SELECT v1.name, v2.brand, e.since
FROM MATCH (v1)-[e]->(v2)
LIMIT 100
ノードやエッジを右クリックするとプロパティの値を確認することができます。
以上で Oracle Graph の環境を作成することができました。この環境を使用して、グラフ・データベースの様々なユースケースを議論していければと思います。