2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[OCI]Autonomous Database : MongoDB Atlasに対するデータベース・リンクを作成してデータを参照してみた

2
Posted at

1. MongoDBの準備

今回はMongoDB Atlasのトライアル環境環境を使用して、MongoDBを準備しました。

こちらの手順に沿ってアカウントを取得し、クラスターをデプロイしました。

クラスター内にデータベースsample_databaseを作成し、sample_database内にコレクションsample_deptを作成しました。
また、sample_dept内に以下の4つのドキュメントを準備しました。

{
 "_id":{"$oid":"63509a3c8b416188cff4055c"},
 "deptno":"10",
 "deptname":"ACCOUNTING",
 "location":"NEW YORK",
 "address":{"building":"Tower A","zipcode":"11111"}
}

{
 "_id"{"$oid":"63509af78b416188cff4055d"},
 "deptno":"20",
 "deptname":"RESEARCH",
 "location":"DALLAS",
 "address":{"zipcode":"22222","building":"Tower B"}
}

{
 "_id":{"$oid":"63509b5a8b416188cff4055e"},
 "deptno":"30",
 "deptname":"SALES",
 "location":"CHICAGO",
 "address":{"zipcode":"33333","building":"Tower C"}
}

{
 "_id":{"$oid":"63509bb78b416188cff4055f"},
 "deptno":"40",
 "deptname":"OPERATIONS",
 "location":"BOSTON",
 "address":{"zipcode":"44444","building":"Tower D"}
}

MongoDB Atlasのコンソールでsample_deptの内容を再度確認してみます。
スクリーンショット 2022-10-20 13.03.46.png
addressはオブジェクト型になっており、buildingとzipcodeの2つのフィールドが含まれています。、
スクリーンショット 2022-10-20 13.05.12.png

2. Autonomous DatabaseのアウトバウンドIPアドレスの確認

MongoDB側でAutonomous Databaseからの接続を許可する設定を行うために、以下のSQLでAutonomous DatabaseのアウトバウンドIPアドレスを確認します。

SELECT json_value(cloud_identity, '$.OUTBOUND_IP_ADDRESS[0]') outbound_ip_address FROM v$pdbs;

では、実行して確認してみます。

SQL> SELECT json_value(cloud_identity, '$.OUTBOUND_IP_ADDRESS[0]') outbound_ip_address FROM v$pdbs;

OUTBOUND_IP_ADDRESS
--------------------------------------------------------------------------------
xxx.xxx.xxx.xxx

SQL>

出力されたIPアドレスをメモしておきます。

3. MongoDB Atlasのネットワークセキュリティの設定

先ほど確認したAutonomous DatabaseのアウトバウンドIPアドレスからの接続を許可する設定を行います。

MongoDBのコンソールから「Network Access」に移動します。
スクリーンショット 2022-10-20 13.14.34.png
「ADD IP ADDRESS」をクリックします。
スクリーンショット 2022-10-20 13.13.47.png
以下を入力して、「Confirm」をクリックします。
Acess List Entry:Autonomous DatabaseのアウトバウンドIPアドレス
Comment:Autonomous Database(任意)
スクリーンショット 2022-10-20 13.09.50.png
Autonomous DatabaseのアウトバウンドIPアドレスからの接続を許可するルールが追加されました。
スクリーンショット 2022-10-20 13.10.39.png

4. MongoDBにアクセスするためのクレデンシャルの作成

DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、クレデンシャルを作成します。

SQL> BEGIN
  2    DBMS_CLOUD.CREATE_CREDENTIAL(
  3      credential_name => 'MONGODB_LINK_CRED',
  4      username => 'atlasuser',
  5      password => 'Oracle1'
  6    );
  7  END;
  8  /

PL/SQLプロシージャが正常に完了しました。

SQL>

5. MongoDBに対するデータベース・リンクの作成

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、MongoDBのデータベースsample_databaeへのデータベースリンクを作成します。

SQL> BEGIN
  2       DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
  3            db_link_name => 'MONGODB_LINK', 
  4            hostname => 'cluster0.xxxxxx.mongodb.net', 
  5            port => '27017',
  6  		  service_name => 'sample_database',
  7            credential_name => 'MONGODB_LINK_CRED',
  8            gateway_params => JSON_OBJECT('db_type' value 'MONGODB'),
  9            ssl_server_cert_dn => NULL);
 10  END;
 11  /

PL/SQLプロシージャが正常に完了しました。

SQL>

MongoDBのデータベースsample_database内のコレクションsample_deptが、Autonomous Database側でどのように見えるかを確認してみます。

SQL> desc sample_dept@MONGODB_LINK;
 名前                                       NULL?    型
 ----------------------------------------- -------- ----------------------------
 _ID					                   NOT NULL NVARCHAR2(24)
 DEPTNO 					                        NVARCHAR2(3)
 DEPTNAME					                        NVARCHAR2(15)
 LOCATION					                        NVARCHAR2(12)
 ADDRESS_BUILDING				                    NVARCHAR2(10)
 ADDRESS_ZIPCODE				                    NVARCHAR2(7)

SQL>

MongoDBにObjectとして保存されているaddress内のフィールドは、address_building、address_zipcodeとして展開されていることがわかりました。

MongoDBのデータベースsample_database内のコレクションsample_deptに対してSELECT文を実行してみます。

SQL> set pagesize 100
SQL> SELECT * FROM sample_dept@MONGODB_LINK;


_ID
--------------------------------------------------------------------------------
DEPTNO	     DEPTNAME
------------ ------------------------------------------------------------
LOCATION
------------------------------------------------
ADDRESS_BUILDING			             ADDRESS_ZIPCODE
---------------------------------------- ----------------------------
63509A3C8B416188CFF4055C
10	     ACCOUNTING
NEW YORK
Tower A 				                 11111

63509AF78B416188CFF4055D
20	     RESEARCH
DALLAS
Tower B 				                 22222

63509B5A8B416188CFF4055E
30	     SALES
CHICAGO
Tower C 				                 33333

63509BB78B416188CFF4055F
40	     OPERATIONS
BOSTON
Tower D 				                 44444


SQL>

作成したデータベース・リンク経由で、MongoDB Atlasのデータベースsample_database内のコレクションsample_deptの内容が参照できることが確認できました。

参考資料

Create Database Links to Non-Oracle Databases with Oracle-Managed Heterogeneous Connectivity

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?