Oracle NoSQL Database Cloudシミュレータ を使い PythonでNoSQLをさわってみる

#本投稿の背景
  Oracle Cloud にも NoSQL(Oracle NoSQL Database Cloud) があるのですが、
  NoSQLの場合、Pythonで DDLや DMLはどうやって実行するのか？を調査したいと思ったのがきっかけです。
  
  Oracle NoSQL Database Cloudシミュレータというのがあり、
  ローカルPCで試すことができますので、Oracle NoSQL Database Cloudシミュレータを使用する手順とPythonでDDLやDMLをどうやって実行するのかをまとめました。

  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fda5e4ab-cc34-fa27-6141-6a7ac0174bf9.png" width=80%>


  本投稿では
  Windows10環境で Pythonから Oracle NoSQL Database Cloud シミュレータを触ってみる内容となります。
  
  前提はWindows10環境にAnaconda-Python 3.7 versionがインストールしている状態からの手順です。
  
#Oracle NoSQL Database Cloudシミュレータとは
 
https://docs.cloud.oracle.com/ja-jp/iaas/nosql-database/doc/developing-oracle-nosql-database-cloud-simulator.html

>Oracle NoSQL Database Cloudシミュレータでは、クラウド・サービスをシミュレートし、
>Oracle NoSQL Database Cloud Serviceにアクセスせずにローカルでアプリケーションを記述およびテストできます。
>Oracle NoSQL Database Java SDKには、開発者が使用するサンプルがいくつか含まれています。

>Oracle NoSQL Database Cloud Serviceを使用して開始する前に、
>Oracle NoSQL Database Cloud Simulatorでアプリケーションを開発し、基本的な例を理解できます。 

  ⇒Oracle NoSQL Database Cloudシミュレータは、Oracle Cloud に接続せずに、ローカル環境(ノートPC)で、アプリ(Python、Java、Node.js、Go)を試せる環境が準備できます。



#環境準備
環境準備は以下２つを準備します
**1.Oracle NoSQL Database Cloudシミュレータのダウンロード**
**2.Oracle NoSQL Database Python SDK のインストール**


前提はWindows10環境にAnaconda-Python 3.7 versionがインストールしている状態からの手順です。Anacondaのインストールは [こちら] (https://www.anaconda.com/products/individual) から

##1.Oracle NoSQL Database Cloudシミュレータのダウンロード

https://docs.cloud.oracle.com/ja-jp/iaas/nosql-database/doc/downloading-oracle-nosql-cloud-simulator.html#GUID-3E11C056-B144-4EEA-8224-37F4C3CB83F6 にアクセス

　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/eff69545-29fd-c203-348b-24f25c0fbc75.png" width=90%>
　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/96551fc4-b9c4-41e4-20b0-81f92c91b6ef.png" width=90%>
　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a5ec44fb-baa6-433e-8d6d-8523aa04de14.png" width=70%>

oracle-nosql-cloud-simulator-1.2.0.zip　を任意のフォルダにダウンロードして解凍します。





###Oracle NoSQL Database Cloudシミュレータを動かすための要件

**・使用しているマシンにJava JDKバージョン10以上がインストールされていること。**
**・Oracle NoSQL Database Cloud Simulatorをインストールする5 GB以上の使用可能なディスク領域。**


####Java JDKバージョン10以上インストールされていない場合
※私の環境ではJava JDKが未インストールでしたので、新規インストール手順となります。例は新規インストールとなります。

https://www.oracle.com/java/technologies/javase-downloads.html
こちらの[ JDK Download ]をクリックして、Windows x64 Installer をダウンロード。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/d3d67163-4099-b89e-3c27-5001432caa7a.png" width=70%>

1.ダウンロードした jdk-14.0.1_windows-x64_bin.exe をダブルクリック。
2.以下手順でJava SDKをインストール
　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/199d1820-3a79-8c6b-c0df-7feefd596dc2.png" width=50%>
　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/67f59126-623f-a8c3-452a-3e2df1ade05f.png" width=50%>
　  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/39086129-d2d9-a85a-6092-bd189cf70c28.png" width=50%>


##2.Oracle NoSQL Database Python SDK のインストール
Anaconda プロンプトを起動
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/09d93dc8-680a-0094-8103-812612216e49.png" width=70%>

Anaconda プロンプトで

```python
pip install borneo
```

と入力して [Enter]
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/36eaec2d-c338-bab3-ecf3-73ac6aea99fa.png" width=90%>
 ※Successfully installed borneo-5.2.0 が出ればOK

#Oracle NoSQL Database Cloudシミュレータの起動
1.コマンドプロンプトを起動 
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/1cf81bb3-6637-35c7-85a1-9ef5f0e22bcd.png" width=30%>
コマンドプロンプトを起動される
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a6c78a56-05ba-db73-700f-767e8ae5f24b.png" width=70%>

2.環境変数(PATH)に Java JDK のパスをいれる
今回インストールしたJava JDKのパスは、C:\Program Files\Java\jdk-14.0.1\bin
 set PATH=C:\Program Files\Java\jdk-14.0.1\bin;%PATH%　で環境変数PATHにJava JDKのパスを設定
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/f6f3566d-658e-ef0c-5e4d-34e9d2e4a83b.png" width=70%>
Java -version と入力して、Java JDKのバージョンを確認
⇒今回インストールした Java JDK 14になっていることを確認
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/afd78cba-8422-00a8-169a-dac082b79b97.png" width=70%>
コマンドプロンプトで
oracle-nosql-cloud-simulator-1.2.0を解凍したディレクトリに移動
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/b934accb-4f20-9390-ffec-309fbd99457c.png" width=70%>
cdコマンドで、oracle-nosql-cloud-simulator-1.2.0を解凍したディレクトリに移動
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/0452d482-16c5-8692-0997-faa77ef8c8d6.png" width=80%>

コマンドプロンプトで以下のコマンドを入力
※マニュアルでは Linux のコマンドしかない。実行ファイル「runCloudSim」 をメモ帳で開き中に書いてあるコマンドを確認。 必須パラメータ -root は 現在のディレクトリとするため . としています。

```
java -Djava.util.logging.config.file=logging.properties -jar cloudsim/lib/cloudsim.jar -root . 
```

「Oracle NoSQL Cloud Simulator is ready」で　起動されている状態になります
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/7351d8fa-557f-9cd5-eeac-8190696ca6c0.png" width=80%>

##Oracle NoSQL Database Cloudシミュレータの停止方法
[Ctrl]+C で停止になります。

#サンプルスクリプトを実行してみる
GitHubから pythonのサンプルスクリプト(nosql-python-sdk-5.2.0.zip)をダウンロードします。 
　https://github.com/oracle/nosql-python-sdk/releases
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/158de9ba-7ba1-ac8e-d274-8442534e64a3.png" width=70%>

nosql-python-sdk-5.2.0.zipを任意のフォルダに解凍します。
サンプルスクリプトは [examples]フォルダに格納されています。
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fb4e76c9-e99c-a1cc-cd79-36bdca0dda4f.png" width=70%>

Anaconda プロンプトを起動
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/09d93dc8-680a-0094-8103-812612216e49.png" width=70%>

  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/92d4f3e3-d470-1739-4f8e-4c6dbb8a495b.png" width=80%>
サンプルスクリプトを実行(試しにsingle_data_ops.pyを実行)
サンプルスクリプトをドラッグして[Enter]キーを押下します。
※Oracle NoSQL Database Cloudシミュレータは起動しておく必要があります
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/85d2d87b-4fc3-a396-f588-0e2d0c66e3f6.png" width=100%>


single_data_ops.py の 実行結果
　※single_data_ops.py の中で、各処理実行後、結果を表示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/8f4c4018-2ca5-b122-8d27-b9ac98704132.png)
single_data_ops.pyの中に
テーブル作成、データ登録、データ抽出、データ削除、テーブルDropの処理が記載されておりましたので、single_data_ops.pyを参考にして頂ければと思います。

また詳細は、[Oracle NoSQL Database Python SDK(日本語)](https://docs.oracle.com/cd/E83857_01/paas/nosql-cloud/sdk/tables.html) 、[SQL Reference for Oracle NoSQL Database(SELECT Expression)](https://docs.oracle.com/en/database/other-databases/nosql-database/19.5/sqlreferencefornosql/select-expression.html
)　も参考になりました。



multi_data_ops.py、table_ops.py　もサンプルスクリプトとして実行することができます。


#参考
・Oracle NoSQL Database Python SDK 
　　https://docs.oracle.com/cd/E83857_01/paas/nosql-cloud/sdk/index.html

・SQL Reference for Oracle NoSQL Database(SELECT Expression)
    https://docs.oracle.com/en/database/other-databases/nosql-database/19.5/sqlreferencefornosql/select-expression.html

・NoSQLデータベース マニュアル
　　https://docs.cloud.oracle.com/ja-jp/iaas/nosql-database/index.html

・NoSQLデータベース マニュアル (Oracle NoSQL Database Cloudシミュレータでの開発)
　　https://docs.cloud.oracle.com/ja-jp/iaas/nosql-database/doc/developing-oracle-nosql-database-cloud-simulator.html