Deploy In-Memory Parallel Graph Analytics (PGX) to Oracle Java Cloud Service (JCS) Overview This document provides detailed steps required to deploy PGX to Java Cloud Service Instance. This exercise is based on Oracle Spatial and Graph Property Graph 12.2.0.1; steps may vary if you are using another database version. The following tasks are covered: Create an Oracle Java Cloud Service (JCS) instance Download and Deploy the PGX onto the above JCS instance Download and install the certificate of the HTTPS/SSL based server Connect to the PGX server using SSL Run graph analytics against the remote PGX server Before You Get Started Become familiar with JCS, Oracle Spatial and Graph, as well as Oracle Spatial and Graph Property Graph capabilities JCS Help Center (https://docs.oracle.com/en/cloud/paas/java-cloud/index.html) Oracle Spatial and Graph (http://www.oracle.com/technetwork/database/options/spatialandgraph/overview /index.html ) Oracle Spatial and Graph Property Graph capabilities (https://docs.oracle.com/database/122/nav/spatial-and-graph.htm ) Obtain an Oracle Cloud subscription or trial account including Java Cloud Service (JCS) Available at http://cloud.oracle.com
Create an Oracle Java Cloud Service (JCS) instance Sign in to your Oracle Cloud account With your account welcome email handy, navigate to at https://cloud.oracle.com/ Select the Data Center listed in your welcome email and click My Services Enter the Identity Domain listed in your welcome email and continue Enter your username and password listed in your welcome email and sign in If this is your first time signing in, follow the instructions to change your password You will be taken to your Dashboard listing your available services: Click the Action Menu for Java and select Open Service Console. If you do not see the Java in Dashboard, click in Customize Dashboard and set Java to show. Click Create Service > Java Cloud Service
Service step: Provide a Service Name and optional Service Description Select Oracle Java Cloud Service as Service Level, 12.2.1.2 as Software Release, Enterprise Edition as Software Edition Click Next
Create Server details steps: Under WebLogic Configuration Select a Compute Shape, here we select the lowest one for this document purpose For SSH Public Key, click Edit and then Browse to select the Public Key you created earlier or you can create one by select Create a New key For this exercise, we can leave cluster size as 1 Under WebLogic Access, provide a password for the weblogic user (i.e. admin user) Expand Advanced Settings Check the option to Enable access to Administrative Consoles Leave Domain Partitions as 0 Optionally uncheck the option to Deploy Sample Application Under Database Configuration For Name, select your DBCS instance from the pull-down menu For Administrator Username, enter sys For password, enter the administrator password you chose when creating your DBCS instance Under Load Balancer, leave response as no Under Backup and Recovery For Backup Destination, select Both Cloud Storage and Local Storage Enter a Cloud Storage Container name as we did when creating DBCS instance, for example: https://uspm020.storage.oraclecloud.com/v1/storage-uspm020/gdbc2 Enter your cloud account Username and Password Check the box to Create Cloud Storage Container if this is a new container
Click Next Confirm step Observe conformation of backup container creation If you checked the create new container box Verify other settings Click Create
It may take 20 to 30 minutes to create the instance; it will send notice to the mail box that you entered. To monitor progress, click the refresh button (circular arrow button to the right of the As of date-time) Once the service has been created, click on the service name to view details Observe details and note the Public IP of our JCS instance
(Optional) Enable 7002 port to be allowed to access WebLogic console if you didn t select this when you create the service. Click the button to the right of your JCS name and select Open WebLogic Server Console
You should see the WebLogic Server Console log in page.
Download and Deploy PGX to JCS instance Download the Oracle Big Data Spatial and Graph with this link: https://support.oracle.com/epmos/faces/patchdetail?patchid=27118297&requestid= 21722011 Unzip the file and locate the pgx war file, pgx-webapp-wls.war, under folder: md/property_graph/pgx/server/ In your browser Open WebLogic Server Console log in page Log in with the user weblogic and the password you defined when creating the instance. At the top left, click the button Lock & Edit On the left under Domain Structure, click Deployments In the middle under Deployments, click Install Above the Path textbox, click the link to Upload your file(s)
Next to Deployment Archive, click Browse and open pgx-webapp-<version>-wls.war which you downloaded earlier Click Next and wait for the upload to complete. Upload % complete is displayed on the lower left corner of your browser When complete you will see a message indicating upload successful.
Click Next Under Choose installation type and scope, leave the default selection ( Install this deployment as an application ) Click Next Under Servers check the JCS1_dom_adminserver, you can also use the clusters and check all servers in the cluster Click Next Under General, leave the name as it is Click Next Under Additional Configuration leave default ( Yes, take me to the deployment's configuration screen. ) Click Finish At top left, click button Activate Changes In the middle under Settings for pgx-webapp-name, click the tab Control Check the box next to pgx-webapp-name Click on the menu Start and select Servicing all requests
Click Yes when prompted to confirm You should now see pgx state is Active Congratulation! The PGX server is now deployed to Java Cloud Service and ready to be used with your PGX client instance for development.
Connect to the PGX server using HTTPS/SSL Download the server side certificate Simply used Firefox, connected to the SSL-based endpoint, and exported the certificate. You may refer to the following screenshot to download the pgx server side self-signed certification, note the host name, you will need to add this to your client hosts file. Add the server side certificate to your client* key store Create an empty keystore The following example command creates a keystore.jks. It will ask a few questions along the way but those are very straightforward. You definitely want to use a much stronger password than "changeit". keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048 Import the server side certificate to the above keystore keytool -import -trustcacerts -alias DemoCertFor_JCS1_domain -file <YOUR_CERTIFICATE_FILE_HERE> -keystore keystore.jks Specify the keystore for your client
For example, if you are using the built-in Groovy, you can add the following to the JAVA_OPTIONS setting in gremlin-opg-rdbms.sh. -Djavax.net.ssl.trustStore=/home/oracle/keystore.jks -Djavax.net.ssl.trustStorePassword=changeit Or run below scripts with your console export JAVA_OPTIONS="$JAVA_OPTIONS -Djavax.net.ssl.trustStore=/home/oracle/jcs_final/keysto re.jks -Djavax.net.ssl.trustStorePassword=changeit" Configure the client hosts file for the connection Because the self signed certificate uses host name instead of IP address, user needs to modify the client side hosts file to translate the specified host name to an IP address, you can follow the below steps to complete this operation 1, Login to the client machine 2, Open the /etc/hosts file (assume client system is Linux based) 3, Add one line like below to the end of the file and save the change <YOUR_IP_ADDRESS> <YOUT_HOST_NAME> You may refer to another post for this topic: https://blogs.oracle.com/oraclespatial/four-quick-steps-to-use-a-https-ssl-based-pgx-servi ce-endpoint Now it is time to test the secure connection to the PGX server from your client. cd $ORACLE_HOME/md/property_graph/dal/groovy sh./gremlin-opg-rdbms.sh cfg =GraphConfigBuilder.forPropertyGraphRdbms().setJdbcUrl("jdbc:o racle:thin:@(description=(address=(host=your_client_ip)(port=1 521)(PROTOCOL=tcp))(CONNECT_DATA=(SERVICE_NAME=PDB1.uspm020.or aclecloud.internal)))").setusername("scott").setpassword("<you R_PASSWORD_HERE>").setName("connections").setMaxNumConnections (8).setLoadEdgeLabel(false).addVertexProperty("name",PropertyT ype.string, "default_name").addedgeproperty("cost",propertytype.double, "1000000").build(); opg = OraclePropertyGraph.getInstance(cfg); opg.clearrepository(); // start from scratch opgdl=oraclepropertygraphdataloader.getinstance(); vfile="../../data/connections.opv" //vertex flat file efile="../../data/connections.ope" //edge flat file opgdl.loaddata(opg, vfile, efile, 2,10000, true, null); session=pgx.createsession("https://your_host_name:port/pgx", "session-id-1231");
opg-nosql> analyst=session.createanalyst(); opg-nosql> pgxgraph = session.readgraphwithproperties(opg.getconfig(),true); //count triangles analyst.counttriangles(pgxgraph, true); //pgql pgxresultset = pgxgraph.querypgql("select n.company,m WHERE (n WITH company='koch Industries')->(m)->(n), n!=m") pgxresultset.print(10); +------------------------------------+ n m +------------------------------------+ PgxVertex[ID=2] PgxVertex[ID=1] PgxVertex[ID=3] PgxVertex[ID=1] PgxVertex[ID=6] PgxVertex[ID=1] PgxVertex[ID=7] PgxVertex[ID=1] PgxVertex[ID=8] PgxVertex[ID=1] PgxVertex[ID=9] PgxVertex[ID=1] PgxVertex[ID=10] PgxVertex[ID=1] PgxVertex[ID=11] PgxVertex[ID=1] PgxVertex[ID=12] PgxVertex[ID=1] PgxVertex[ID=19] PgxVertex[ID=1] *A PGX client could be any machine with the database (12.2 or above) installed.