diff --git a/_pages/adb.md b/_pages/adb.md index 504e627734..9a2a9c813d 100644 --- a/_pages/adb.md +++ b/_pages/adb.md @@ -102,7 +102,7 @@ toc: true + **[211: クローン機能を使ってみよう](/ocitutorials/adb/adb211-clone/){:target="_blank"}** * ADBを簡単に複製することができる、クローニング機能についてご紹介します -+ **[212: Autonomous Data Guardを構成してみよう](/ocitutorials/adb/adb212-audg/){:target="_blank"}** ++ **[212: Autonomous Database を災害対策構成にしてみよう](/ocitutorials/adb/adb212-audg/){:target="_blank"}** * たった数クリックでスタンバイ・データベースをプロビジョニングしDR構成を実現します + **[213 : Application Continuityを設定しよう](/ocitutorials/adb/adb213-tac/){:target="_blank"}** diff --git a/_pages/cloud-native.md b/_pages/cloud-native.md index 952265fa8d..2a2335f90a 100644 --- a/_pages/cloud-native.md +++ b/_pages/cloud-native.md @@ -154,3 +154,6 @@ lastmod: "2022-04-06" + **[OCI Cacheを使ってみよう](/ocitutorials/cloud-native/ocicache-for-beginners/)** Oracleが提供するフルマネージドのRedisサービスであるOCI Cacheを体験していただけるチュートリアルです。【所要時間:約1時間】 + ++ **[OCI Cacheを使ってレスポンス・キャッシングをしてみよう](/ocitutorials/cloud-native/ocicache-for-commons/)** + OCI Cacheをレスポンス・キャッシングのキャッシュサーバーとして使う方法を学んでいただけるチュートリアルです。【所要時間:約1.5時間】 \ No newline at end of file diff --git a/_pages/hpc.md b/_pages/hpc.md index 59e37d820e..7047b7dacb 100644 --- a/_pages/hpc.md +++ b/_pages/hpc.md @@ -142,9 +142,16 @@ HPC/機械学習ワークロードを実行する際に有益なテクニカル ## 1-3. ファイル共有ストレージ -本章は、HPCクラスタやGPUクラスタから利用するファイル共有ストレージを構築するチュートリアルを集めています。 +本章は、HPC/GPUクラスタから利用するファイル共有ストレージを構築するチュートリアルを集めています。自身の要件に合わせてチュートリアルを選んだら、そのチュートリアル名をクリックします。 -現時点は、 **[マーケットプレース](#5-5-マーケットプレイス)** から無料で利用可能な **[スタック](#5-3-スタック)** を利用して **ブロック・ボリューム** とベアメタルインスタンスからNFSでファイル共有ストレージを自動構築するチュートリアル **[ブロック・ボリュームでNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** を利用することが可能です。 +| チュートリアル名 | 保存対象データ | **IOR** ターゲット性能 | サービス可用性 | データ可用性 |構築の
難易度 | 最大容量|ストレージ
に使用する
OCIサービス | ヘッドノード
に使用する
OCIサービス | ファイル共有
プロトコル | +| :-------------------------------------------------------------------------: | :-----: | :------------------------------: | :--------------: | :---------------------: | :-------------------: |:-------------------: |:------------------: | :---------: |:---------: | +| **[ファイル・ストレージ
でファイル共有ストレージ
を構築する](/ocitutorials/hpc/spinup-nfs-server-fss/)** | 長期保存データ | 1 GiB/s(Read)
0.8 GiB/s(Write)
(※7) | HA構成
のヘッドノード | **ファイル・システム** 内
データ複製 |低 |8EB | **ファイル・システム** | **マウント・ターゲット** | NFS v3 | +| **[ブロック・ボリューム
でNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** | 中期保存データ | 5 GiB/s(Read)
4 GiB/s(Write) | ヘッドノード障害
でサービス停止 | **ブロック・ボリューム** 内
データ複製 |高|1PB| **ブロック・ボリューム** | **BM.Optimized3.36** | NFS v3/v4 | +| **[短期保存データ用
高速ファイル共有ストレージ
を構築する](/ocitutorials/hpc/spinup-nfs-server-nvme/)** | 短期保存データ | 10 GiB/s(Read)
8 GiB/s(Write) | ヘッドノード障害
でサービス停止 |ヘッドノードの
NVMe SSD
ローカルディスク
のRAID10 |中|38TB| ヘッドノードの
NVMe SSD
ローカルディスク |**BM.DenseIO.E5.128** | NFS v3/v4 | + +※7)以下で公開されているIOサイズ1 MiBでのスループットを記載しており、 **IOR** で計測した性能ではありません。 +**[https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf](https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf)** ## 1-4. チュートリアルを組み合わせた実践的HPCシステム構築 @@ -157,13 +164,13 @@ HPC/機械学習ワークロードを実行する際に有益なテクニカル 下表は、各チュートリアルで構築するシステム仕様を示します。 -| No. | 構築手法 | クラスタ管理機能 | スタティック/オンデマンド | コンテナランタイム(※8) | +| No. | 構築手法 | クラスタ管理機能 | スタティック/オンデマンド | コンテナランタイム(※9) | | :-: | :--: | :------: | :--------------------: | :-----------: | -| 1 | 手動 | 無し(※7) | スタティック | **Docker CE** | +| 1 | 手動 | 無し(※8) | スタティック | **Docker CE** | | 2 | 自動 | 有り | スタティック
or
オンデマンド | **Enroot** | -※7)ファイル共有ストレージは、 **ブロック・ボリューム** NFSサーバが提供します。 -※8)GPUクラスタが対象です。 +※8)ファイル共有ストレージは、 **ブロック・ボリューム** NFSサーバが提供します。 +※9)GPUクラスタが対象です。 *** # 2. OCI HPCパフォーマンス関連情報 @@ -316,10 +323,10 @@ HPC/機械学習ワークロードを実行する際に有益なテクニカル 高速スクラッチ領域として利用することを想定したNVMe SSDローカルディスクを内蔵するHPCクラスタ向けベアメタルシェイプ **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** やGPUクラスタ向けベアメタルシェイプ **[BM.GPU4.8/BM.GPU.A100-v2.8/BM.GPU.H100.8](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-gpu)** は、NVMe SSDローカルディスクをOSのファイルシステムとして利用するための設定をユーザ自身が行う必要があります。 本テクニカルTipsは、このファイルシステム作成方法を解説します。 -- **[コストパフォーマンスの良いファイル共有ストレージ構築方法](/ocitutorials/hpc/tech-knowhow/howto-configure-sharedstorage/)** +- **[HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法](/ocitutorials/hpc/tech-knowhow/howto-configure-sharedstorage/)** - HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれを構築することが一般的ですが、この際の選択肢として、NFSのマネージドサービスである **ファイル・ストレージ** を使用する方法と、 **ブロック・ボリューム** とベアメタルインスタンスを組み合わせたNFSサーバを構築する方法があります。 - 本テクニカルTipsは、コストパフォーマンス等を考慮してどちらの方法を選択すればよいか、 **ブロック・ボリューム** とベアメタルインスタンスを組み合わせたNFSサーバを構築する場合どのように **ブロック・ボリューム** とベアメタルインスタンスを構成すればよいか、解説します。 + HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれを構築することが一般的ですが、この際の選択肢は、NFSのマネージドサービスである **ファイル・ストレージ** を使用する方法と、高帯域のネットワークポートを持つベア・メタル・インスタンスとストレージサービスを組合せてNFSサーバを自身で構築する方法があります。 + 本テクニカルTipsは、コストパフォーマンス、可用性、構築・運用のしやすさ等を考慮し、最適なファイル共有ストレージ構築手法を解説します。 - **[ブロック・ボリュームを使用するNFSサーバのインスタンス障害からの復旧方法](/ocitutorials/hpc/tech-knowhow/bv-sharedstorage-recovery/)** diff --git a/tutorials/_adb/adb-data/BANK_GRAPH.dsnb b/tutorials/_adb/adb-data/BANK_GRAPH.dsnb new file mode 100644 index 0000000000..a504a87ccd --- /dev/null +++ b/tutorials/_adb/adb-data/BANK_GRAPH.dsnb @@ -0,0 +1,740 @@ +[ + { + "name" : "BANK_GRAPH", + "description" : null, + "tags" : null, + "version" : "6", + "layout" : "zeppelin", + "type" : "Default", + "readOnly" : false, + "snapshot" : false, + "template" : "dsrgmn3y", + "templateConfig" : "{\"visualization\":{\"filters\":[{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]}},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}]}],\"version\":4}}", + "paragraphs" : [ + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "組み込みのセッションオブジェクトを使ってデータベースからグラフをメモリに読み込み、読み込まれたグラフを扱うPgXGraphオブジェクトを生成します。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "", + "GRAPH_NAME=\"BANK_GRAPH\"", + "# try getting the graph from the in-memory graph server", + "graph = session.get_graph(GRAPH_NAME)", + "# if it does not exist read it into memory", + "if (graph == None) :", + " session.read_graph_by_name(GRAPH_NAME, \"pg_view\")", + " print(\"Graph \"+ GRAPH_NAME + \" successfully loaded\")", + " graph = session.get_graph(GRAPH_NAME)", + "else :", + " print(\"Graph '\"+ GRAPH_NAME + \"' already loaded\")" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "Graph 'BANK_GRAPH' already loaded\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "転送数が多い銀行口座の上位10口座を探してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%pgql-pgx", + "/* List 10 accounts with the most number of transactions (that is, incoming + outgoing edges) */", + "SELECT a.acct_id, (in_degree(a) + out_degree(a)) AS num_transactions", + "FROM MATCH (a) ON bank_graph", + "ORDER BY num_transactions DESC", + "LIMIT 10" + ], + "selectedVisualization" : "table", + "visualizationConfig" : "[{\"visualization\":{\"graphAction\":{\"graphName\":\"NEW_BANK_GRAPH\",\"lastRun\":1661372405795},\"viewTransform\":[[-147.35935165796423,-30.089878101556792,1.2432685696958705,1250]],\"lastColumns\":[\"ACCT_ID\",\"NUM_TRANSACTIONS\"],\"version\":9}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "pgql-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "{\"schema\":null,\"name\":\"BANK_GRAPH\",\"resultSetId\":\"pgql_4\",\"graph\":{\"idType\":\"string\",\"vertices\":[{\"_id\":\"BANK_ACCOUNTS(330)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"6.066148594531791E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"330\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"35\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(934)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.332844916182532E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"934\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"44\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(746)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"3.9716804480425085E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"746\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"33\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(559)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.143859631254514E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"559\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"31\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(406)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"2.601811141728169E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"406\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"33\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(380)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.7281690923236874E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"380\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"36\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(534)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"3.213450779198483E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"534\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"37\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(387)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.697740496869952E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"387\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"44\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(135)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.1393532303955896E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"135\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"41\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(920)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"5.193581563148178E-4\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"920\",\"s\":true},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"31\",\"s\":true}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]}],\"edges\":[],\"paths\":[],\"totalNumResults\":10},\"table\":\"ACCT_ID\\tNUM_TRANSACTIONS\\n934\\t44\\n387\\t44\\n135\\t41\\n534\\t37\\n380\\t36\\n330\\t35\\n406\\t33\\n746\\t33\\n920\\t31\\n559\\t31\"}", + "type" : "NETWORK" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "口座934を起点とする循環転送があるかどうかを確認してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%pgql-pgx", + "/* Check if there are any circular payment chains of length 4 from acct 934 */", + "SELECT v,e,v2", + "FROM MATCH ALL (a)-[:TRANSFERS]->{4}(b) ON bank_graph ONE ROW PER STEP (v,e,v2)", + "WHERE a.acct_id=934 AND id(a) = id(b)", + "LIMIT 100" + ], + "selectedVisualization" : "visualization", + "visualizationConfig" : "[{\"visualization\":{\"filters\":[{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1661441592752,\"component\":\"vertex\",\"type\":\"styling\",\"target\":\"vertex\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"ACCT_ID\",\"operator\":\"=\",\"value\":\"934\"}]},\"properties\":{\"colors\":[\"red\"],\"sizes\":[17]},\"aggregation\":[]}],\"vertexLabelProperty\":\"ACCT_ID\",\"vertexPositions\":[{\"id\":\"BANK_ACCOUNTS(330)\",\"x\":0.41898781137894614,\"y\":0.9455282307701522},{\"id\":\"BANK_ACCOUNTS(397)\",\"x\":0.5509129841208944,\"y\":0.05939559021392988},{\"id\":\"BANK_ACCOUNTS(325)\",\"x\":0.693337040617028,\"y\":0.28172963403806345},{\"id\":\"BANK_ACCOUNTS(313)\",\"x\":0.6764265084402902,\"y\":0.6036215202481139},{\"id\":\"BANK_ACCOUNTS(934)\",\"x\":0.5886447240712691,\"y\":0.4982597255668625},{\"id\":\"BANK_ACCOUNTS(348)\",\"x\":0.6952941493443081,\"y\":1.0390808780787706},{\"id\":\"BANK_ACCOUNTS(597)\",\"x\":0.598586062111368,\"y\":0.8469300063317563},{\"id\":\"BANK_ACCOUNTS(999)\",\"x\":0.26565256546954713,\"y\":0.5037313101815434},{\"id\":\"BANK_ACCOUNTS(406)\",\"x\":0.2746577125019929,\"y\":0.2056904333541278}],\"graphAction\":{\"graphName\":\"BANK_GRAPH\",\"lastRun\":1684956339582,\"metadata\":{\"vertexProperties\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"ACCT_ID\",\"type\":\"integer\"},{\"name\":\"NAME\",\"type\":\"string\"}],\"edgeProperties\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"TO_ACCT_ID\",\"type\":\"integer\"},{\"name\":\"TXN_ID\",\"type\":\"long\"},{\"name\":\"AMOUNT\",\"type\":\"integer\"},{\"name\":\"DESCRIPTION\",\"type\":\"string\"},{\"name\":\"FROM_ACCT_ID\",\"type\":\"integer\"}]}},\"viewTransform\":[[106.24252289861079,-0.7086090994182541,0.863460490831344,1248]],\"lastColumns\":[\"V\",\"E\",\"V2\"],\"version\":10}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "pgql-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "{\"schema\":null,\"name\":\"BANK_GRAPH\",\"resultSetId\":\"pgql_5\",\"graph\":{\"idType\":\"string\",\"vertices\":[{\"_id\":\"BANK_ACCOUNTS(330)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"330\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.066148594531791E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(999)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"999\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.35343366589888E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(934)\",\"p\":[{\"n\":\"pagerank\",\"v\":\"4.332844916182532E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(406)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.601811141728169E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(325)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.1672647654611586E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(313)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.4339421022294796E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(348)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1290305100144217E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(397)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.150155543752367E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(597)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.8541826540501405E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]}],\"edges\":[{\"_id\":\"BANK_TXNS(4103)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4103\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(597)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(1744)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1744\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(313)\",\"d\":\"BANK_ACCOUNTS(348)\",\"u\":false},{\"_id\":\"BANK_TXNS(1569)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1569\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(313)\",\"u\":false},{\"_id\":\"BANK_TXNS(3169)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3169\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(397)\",\"d\":\"BANK_ACCOUNTS(406)\",\"u\":false},{\"_id\":\"BANK_TXNS(4107)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4107\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(406)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(2418)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2418\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(348)\",\"d\":\"BANK_ACCOUNTS(597)\",\"u\":false},{\"_id\":\"BANK_TXNS(1628)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1628\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(325)\",\"u\":false},{\"_id\":\"BANK_TXNS(2417)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"330\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2417\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(330)\",\"d\":\"BANK_ACCOUNTS(597)\",\"u\":false},{\"_id\":\"BANK_TXNS(1990)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1990\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(325)\",\"d\":\"BANK_ACCOUNTS(397)\",\"u\":false},{\"_id\":\"BANK_TXNS(1652)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"330\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"999\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1652\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(999)\",\"d\":\"BANK_ACCOUNTS(330)\",\"u\":false},{\"_id\":\"BANK_TXNS(4430)\",\"p\":[{\"n\":\"FROM_ACCT_ID\",\"v\":\"999\",\"s\":false},{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4430\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(999)\",\"u\":false}],\"paths\":[],\"totalNumResults\":12},\"table\":\"V\\tE\\tV2\\nPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\tPgxEdge[provider=BANK_TXNS,key=4103,ID=BANK_TXNS(4103)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\tPgxEdge[provider=BANK_TXNS,key=2418,ID=BANK_TXNS(2418)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\tPgxEdge[provider=BANK_TXNS,key=1744,ID=BANK_TXNS(1744)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1569,ID=BANK_TXNS(1569)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\tPgxEdge[provider=BANK_TXNS,key=4107,ID=BANK_TXNS(4107)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=397,ID=BANK_ACCOUNTS(397)]\\tPgxEdge[provider=BANK_TXNS,key=3169,ID=BANK_TXNS(3169)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=325,ID=BANK_ACCOUNTS(325)]\\tPgxEdge[provider=BANK_TXNS,key=1990,ID=BANK_TXNS(1990)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=397,ID=BANK_ACCOUNTS(397)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1628,ID=BANK_TXNS(1628)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=325,ID=BANK_ACCOUNTS(325)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\tPgxEdge[provider=BANK_TXNS,key=4103,ID=BANK_TXNS(4103)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=330,ID=BANK_ACCOUNTS(330)]\\tPgxEdge[provider=BANK_TXNS,key=2417,ID=BANK_TXNS(2417)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=999,ID=BANK_ACCOUNTS(999)]\\tPgxEdge[provider=BANK_TXNS,key=1652,ID=BANK_TXNS(1652)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=330,ID=BANK_ACCOUNTS(330)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4430,ID=BANK_TXNS(4430)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=999,ID=BANK_ACCOUNTS(999)]\"}", + "type" : "NETWORK" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "長さを5ホップにした場合の循環転送の数を確認してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%pgql-pgx", + "/* Check if there are any circular payment chains of length 5 from acct 934 */", + "SELECT v,e,v2", + "FROM MATCH ALL (a)-[:TRANSFERS]->{5}(b) ON bank_graph ONE ROW PER STEP (v,e,v2)", + "WHERE a.acct_id=934 AND id(a) = id(b)", + "LIMIT 100 " + ], + "selectedVisualization" : "visualization", + "visualizationConfig" : "[{\"visualization\":{\"filters\":[{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1590499315755,\"type\":\"aggregation\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[]},\"component\":\"vertex\",\"target\":\"vertex\",\"properties\":{},\"aggregation\":[{\"source\":\"\",\"type\":\"average\"}],\"_fromTemplate\":true},{\"_id\":1583324064459,\"type\":\"styling\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"hiddenConnection\",\"operator\":\"*\",\"value\":\"\"}]},\"component\":\"edge\",\"target\":\"edge\",\"properties\":{\"colors\":[\"rgba(0, 0, 0, 0.1)\"],\"style\":[\"dashed\"],\"legendTitle\":[\"Hidden Connection\"]},\"_fromTemplate\":true},{\"_id\":1661441768370,\"component\":\"vertex\",\"type\":\"styling\",\"target\":\"vertex\",\"enabled\":true,\"conditions\":{\"operator\":\"and\",\"conditions\":[{\"property\":\"ACCT_ID\",\"operator\":\"=\",\"value\":\"934\"}]},\"properties\":{\"colors\":[\"red\"],\"sizes\":[20]},\"aggregation\":[]}],\"vertexLabelProperty\":\"ACCT_ID\",\"vertexPositions\":[{\"id\":\"BANK_ACCOUNTS(352)\",\"x\":0.3782375533123405,\"y\":1.270022376763816},{\"id\":\"BANK_ACCOUNTS(970)\",\"x\":0.16843622227711147,\"y\":0.020503352287711007},{\"id\":\"BANK_ACCOUNTS(934)\",\"x\":0.5377551005333209,\"y\":0.3567986750282214}],\"graphAction\":{\"graphName\":\"BANK_GRAPH\",\"metadata\":{\"vertexProperties\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"ACCT_ID\",\"type\":\"integer\"},{\"name\":\"NAME\",\"type\":\"string\"}],\"edgeProperties\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"TO_ACCT_ID\",\"type\":\"integer\"},{\"name\":\"TXN_ID\",\"type\":\"long\"},{\"name\":\"AMOUNT\",\"type\":\"integer\"},{\"name\":\"DESCRIPTION\",\"type\":\"string\"},{\"name\":\"FROM_ACCT_ID\",\"type\":\"integer\"}]}},\"viewTransform\":[[196.0491379432599,10.06091915270973,0.6854306561061909,1248]],\"lastColumns\":[\"V\",\"E\",\"V2\"],\"version\":10}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "pgql-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "{\"schema\":null,\"name\":\"BANK_GRAPH\",\"resultSetId\":\"pgql_6\",\"graph\":{\"idType\":\"string\",\"vertices\":[{\"_id\":\"BANK_ACCOUNTS(380)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"380\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.7281690923236874E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(651)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"651\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.224942685617865E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(893)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"893\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.30977056916058E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(138)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"138\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.722934223937549E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(348)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1290305100144217E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(942)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"942\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.8111313809862476E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(364)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"364\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.639708654938428E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(287)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"287\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.865913642823485E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(166)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"166\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.706759434388116E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(732)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.84963775681457E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(962)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"962\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"7.331835799429577E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(279)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"279\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.0812540607843967E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(934)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.332844916182532E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(23)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"23\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"0.001005978541732574\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(805)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"805\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.23421120882751E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(518)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"518\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.124085553570089E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(63)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"63\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3411647587299116E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(272)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"272\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.4563754886156034E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(151)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"151\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.595880958812711E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(369)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.7071400703168633E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(325)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.1672647654611586E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(523)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"523\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3926477386058427E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(313)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.4339421022294796E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(135)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1393532303955896E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(397)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.150155543752367E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(466)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"466\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.0313289336183037E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(66)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"66\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.287820097915388E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(713)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"713\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.882535268090331E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(636)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"636\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.46790430144894E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(406)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.601811141728169E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(806)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"806\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.1962825146302117E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(919)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"919\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.51428452220933E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(140)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"140\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.55150469072955E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(673)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"673\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.8313937903130635E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(536)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"536\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.2914872816713333E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(136)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"136\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.098860840653699E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(754)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"754\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.4472206926341076E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(144)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"144\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.568271611231793E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(944)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"944\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.4507160208240423E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(57)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"57\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.823888059741493E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(407)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"407\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.046723491895786E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(181)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"181\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.471135262890846E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(690)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"690\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.599770648898897E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(840)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"840\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"0.0013098814059153362\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(456)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"456\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.8652543536998885E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(674)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"674\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.103554337475879E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(799)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"799\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.313042238901762E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(921)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"921\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.902190118224783E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(597)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.8541826540501405E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(973)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"973\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.485017179181626E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]},{\"_id\":\"BANK_ACCOUNTS(399)\",\"p\":[{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"399\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3785822032210454E-4\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"V\",\"V2\"]}],\"edges\":[{\"_id\":\"BANK_TXNS(1822)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"364\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1822\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(364)\",\"u\":false},{\"_id\":\"BANK_TXNS(4104)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4104\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(369)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(4156)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"944\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"181\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4156\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(181)\",\"d\":\"BANK_ACCOUNTS(944)\",\"u\":false},{\"_id\":\"BANK_TXNS(1846)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"138\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1846\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(138)\",\"d\":\"BANK_ACCOUNTS(369)\",\"u\":false},{\"_id\":\"BANK_TXNS(1999)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"399\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1999\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(399)\",\"u\":false},{\"_id\":\"BANK_TXNS(4245)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"962\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4245\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(962)\",\"u\":false},{\"_id\":\"BANK_TXNS(1903)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"380\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"921\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1903\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(921)\",\"d\":\"BANK_ACCOUNTS(380)\",\"u\":false},{\"_id\":\"BANK_TXNS(4746)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"805\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"364\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4746\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(364)\",\"d\":\"BANK_ACCOUNTS(805)\",\"u\":false},{\"_id\":\"BANK_TXNS(1628)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1628\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(325)\",\"u\":false},{\"_id\":\"BANK_TXNS(679)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"679\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(135)\",\"u\":false},{\"_id\":\"BANK_TXNS(4714)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"799\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"893\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4714\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(893)\",\"d\":\"BANK_ACCOUNTS(799)\",\"u\":false},{\"_id\":\"BANK_TXNS(3171)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"674\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3171\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(674)\",\"d\":\"BANK_ACCOUNTS(406)\",\"u\":false},{\"_id\":\"BANK_TXNS(3094)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"456\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3094\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(456)\",\"d\":\"BANK_ACCOUNTS(732)\",\"u\":false},{\"_id\":\"BANK_TXNS(1850)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"456\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1850\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(456)\",\"d\":\"BANK_ACCOUNTS(369)\",\"u\":false},{\"_id\":\"BANK_TXNS(1365)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"272\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"140\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1365\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(140)\",\"d\":\"BANK_ACCOUNTS(272)\",\"u\":false},{\"_id\":\"BANK_TXNS(4920)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"840\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4920\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(135)\",\"d\":\"BANK_ACCOUNTS(840)\",\"u\":false},{\"_id\":\"BANK_TXNS(4491)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"754\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4491\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(754)\",\"u\":false},{\"_id\":\"BANK_TXNS(4144)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"942\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4144\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(942)\",\"u\":false},{\"_id\":\"BANK_TXNS(2022)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"518\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"151\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2022\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(151)\",\"d\":\"BANK_ACCOUNTS(518)\",\"u\":false},{\"_id\":\"BANK_TXNS(1744)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1744\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(313)\",\"d\":\"BANK_ACCOUNTS(348)\",\"u\":false},{\"_id\":\"BANK_TXNS(1437)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"287\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"279\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1437\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(279)\",\"d\":\"BANK_ACCOUNTS(287)\",\"u\":false},{\"_id\":\"BANK_TXNS(3901)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"893\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3901\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(135)\",\"d\":\"BANK_ACCOUNTS(893)\",\"u\":false},{\"_id\":\"BANK_TXNS(4105)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4105\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(732)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(3093)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"713\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3093\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(713)\",\"d\":\"BANK_ACCOUNTS(732)\",\"u\":false},{\"_id\":\"BANK_TXNS(1990)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"325\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1990\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(325)\",\"d\":\"BANK_ACCOUNTS(397)\",\"u\":false},{\"_id\":\"BANK_TXNS(3170)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"66\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3170\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(66)\",\"d\":\"BANK_ACCOUNTS(406)\",\"u\":false},{\"_id\":\"BANK_TXNS(757)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"151\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"757\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(151)\",\"u\":false},{\"_id\":\"BANK_TXNS(4715)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"799\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"287\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4715\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(287)\",\"d\":\"BANK_ACCOUNTS(799)\",\"u\":false},{\"_id\":\"BANK_TXNS(834)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"166\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"805\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"834\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(805)\",\"d\":\"BANK_ACCOUNTS(166)\",\"u\":false},{\"_id\":\"BANK_TXNS(3468)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"466\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"536\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3468\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(536)\",\"d\":\"BANK_ACCOUNTS(466)\",\"u\":false},{\"_id\":\"BANK_TXNS(1396)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"279\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1396\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(279)\",\"u\":false},{\"_id\":\"BANK_TXNS(3420)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"456\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"348\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3420\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(348)\",\"d\":\"BANK_ACCOUNTS(456)\",\"u\":false},{\"_id\":\"BANK_TXNS(288)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"57\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"407\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"288\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(407)\",\"d\":\"BANK_ACCOUNTS(57)\",\"u\":false},{\"_id\":\"BANK_TXNS(2801)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"673\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"690\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2801\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(690)\",\"d\":\"BANK_ACCOUNTS(673)\",\"u\":false},{\"_id\":\"BANK_TXNS(2805)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"674\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"919\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2805\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(919)\",\"d\":\"BANK_ACCOUNTS(674)\",\"u\":false},{\"_id\":\"BANK_TXNS(333)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"66\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"397\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"333\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(397)\",\"d\":\"BANK_ACCOUNTS(66)\",\"u\":false},{\"_id\":\"BANK_TXNS(684)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"136\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"636\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"684\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(636)\",\"d\":\"BANK_ACCOUNTS(136)\",\"u\":false},{\"_id\":\"BANK_TXNS(2025)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"518\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2025\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(135)\",\"d\":\"BANK_ACCOUNTS(518)\",\"u\":false},{\"_id\":\"BANK_TXNS(2421)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"166\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2421\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(166)\",\"d\":\"BANK_ACCOUNTS(597)\",\"u\":false},{\"_id\":\"BANK_TXNS(2690)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"651\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"272\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2690\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(272)\",\"d\":\"BANK_ACCOUNTS(651)\",\"u\":false},{\"_id\":\"BANK_TXNS(908)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"181\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"23\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"908\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(23)\",\"d\":\"BANK_ACCOUNTS(181)\",\"u\":false},{\"_id\":\"BANK_TXNS(1569)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"313\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1569\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(313)\",\"u\":false},{\"_id\":\"BANK_TXNS(1848)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"466\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1848\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(466)\",\"d\":\"BANK_ACCOUNTS(369)\",\"u\":false},{\"_id\":\"BANK_TXNS(4029)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"919\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"399\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4029\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(399)\",\"d\":\"BANK_ACCOUNTS(919)\",\"u\":false},{\"_id\":\"BANK_TXNS(4106)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"651\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4106\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(651)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(702)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"140\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"754\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"702\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(754)\",\"d\":\"BANK_ACCOUNTS(140)\",\"u\":false},{\"_id\":\"BANK_TXNS(722)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"144\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"63\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"722\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(63)\",\"d\":\"BANK_ACCOUNTS(144)\",\"u\":false},{\"_id\":\"BANK_TXNS(3096)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"380\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3096\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(380)\",\"d\":\"BANK_ACCOUNTS(732)\",\"u\":false},{\"_id\":\"BANK_TXNS(3000)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"713\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"518\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3000\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(518)\",\"d\":\"BANK_ACCOUNTS(713)\",\"u\":false},{\"_id\":\"BANK_TXNS(120)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"23\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"120\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(23)\",\"u\":false},{\"_id\":\"BANK_TXNS(2614)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"636\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"942\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2614\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(942)\",\"d\":\"BANK_ACCOUNTS(636)\",\"u\":false},{\"_id\":\"BANK_TXNS(4041)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"921\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"962\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4041\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(962)\",\"d\":\"BANK_ACCOUNTS(921)\",\"u\":false},{\"_id\":\"BANK_TXNS(2997)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"713\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"523\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2997\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(523)\",\"d\":\"BANK_ACCOUNTS(713)\",\"u\":false},{\"_id\":\"BANK_TXNS(4154)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"944\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"806\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4154\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(806)\",\"d\":\"BANK_ACCOUNTS(944)\",\"u\":false},{\"_id\":\"BANK_TXNS(2420)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"57\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2420\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(57)\",\"d\":\"BANK_ACCOUNTS(597)\",\"u\":false},{\"_id\":\"BANK_TXNS(2884)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"690\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2884\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(135)\",\"d\":\"BANK_ACCOUNTS(690)\",\"u\":false},{\"_id\":\"BANK_TXNS(4103)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4103\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(597)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(4753)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"806\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"973\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4753\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(973)\",\"d\":\"BANK_ACCOUNTS(806)\",\"u\":false},{\"_id\":\"BANK_TXNS(4301)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"973\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4301\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(973)\",\"u\":false},{\"_id\":\"BANK_TXNS(4107)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"406\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"4107\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(406)\",\"d\":\"BANK_ACCOUNTS(934)\",\"u\":false},{\"_id\":\"BANK_TXNS(1847)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"369\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"799\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1847\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(799)\",\"d\":\"BANK_ACCOUNTS(369)\",\"u\":false},{\"_id\":\"BANK_TXNS(3095)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"732\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"673\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3095\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(673)\",\"d\":\"BANK_ACCOUNTS(732)\",\"u\":false},{\"_id\":\"BANK_TXNS(3172)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"407\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"754\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"3172\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(754)\",\"d\":\"BANK_ACCOUNTS(407)\",\"u\":false},{\"_id\":\"BANK_TXNS(1362)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"272\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"840\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"1362\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(840)\",\"d\":\"BANK_ACCOUNTS(272)\",\"u\":false},{\"_id\":\"BANK_TXNS(319)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"63\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"934\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"319\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(934)\",\"d\":\"BANK_ACCOUNTS(63)\",\"u\":false},{\"_id\":\"BANK_TXNS(694)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"138\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"144\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"694\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(144)\",\"d\":\"BANK_ACCOUNTS(138)\",\"u\":false},{\"_id\":\"BANK_TXNS(2419)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"597\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"136\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2419\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(136)\",\"d\":\"BANK_ACCOUNTS(597)\",\"u\":false},{\"_id\":\"BANK_TXNS(2689)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"651\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"944\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2689\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(944)\",\"d\":\"BANK_ACCOUNTS(651)\",\"u\":false},{\"_id\":\"BANK_TXNS(2047)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"523\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"135\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2047\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(135)\",\"d\":\"BANK_ACCOUNTS(523)\",\"u\":false},{\"_id\":\"BANK_TXNS(2112)\",\"p\":[{\"n\":\"AMOUNT\",\"v\":\"1000.0\",\"s\":false},{\"n\":\"DESCRIPTION\",\"v\":\"transfer\",\"s\":false},{\"n\":\"FROM_ACCT_ID\",\"v\":\"536\",\"s\":false},{\"n\":\"TO_ACCT_ID\",\"v\":\"962\",\"s\":false},{\"n\":\"TXN_ID\",\"v\":\"2112\",\"s\":false}],\"l\":[\"TRANSFERS\"],\"g\":[\"E\"],\"s\":\"BANK_ACCOUNTS(962)\",\"d\":\"BANK_ACCOUNTS(536)\",\"u\":false}],\"paths\":[],\"totalNumResults\":100},\"table\":\"V\\tE\\tV2\\nPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\tPgxEdge[provider=BANK_TXNS,key=4103,ID=BANK_TXNS(4103)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=166,ID=BANK_ACCOUNTS(166)]\\tPgxEdge[provider=BANK_TXNS,key=2421,ID=BANK_TXNS(2421)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=805,ID=BANK_ACCOUNTS(805)]\\tPgxEdge[provider=BANK_TXNS,key=834,ID=BANK_TXNS(834)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=166,ID=BANK_ACCOUNTS(166)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=364,ID=BANK_ACCOUNTS(364)]\\tPgxEdge[provider=BANK_TXNS,key=4746,ID=BANK_TXNS(4746)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=805,ID=BANK_ACCOUNTS(805)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1822,ID=BANK_TXNS(1822)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=364,ID=BANK_ACCOUNTS(364)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\tPgxEdge[provider=BANK_TXNS,key=4106,ID=BANK_TXNS(4106)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=272,ID=BANK_ACCOUNTS(272)]\\tPgxEdge[provider=BANK_TXNS,key=2690,ID=BANK_TXNS(2690)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=140,ID=BANK_ACCOUNTS(140)]\\tPgxEdge[provider=BANK_TXNS,key=1365,ID=BANK_TXNS(1365)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=272,ID=BANK_ACCOUNTS(272)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=754,ID=BANK_ACCOUNTS(754)]\\tPgxEdge[provider=BANK_TXNS,key=702,ID=BANK_TXNS(702)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=140,ID=BANK_ACCOUNTS(140)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4491,ID=BANK_TXNS(4491)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=754,ID=BANK_ACCOUNTS(754)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\tPgxEdge[provider=BANK_TXNS,key=4107,ID=BANK_TXNS(4107)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=674,ID=BANK_ACCOUNTS(674)]\\tPgxEdge[provider=BANK_TXNS,key=3171,ID=BANK_TXNS(3171)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=919,ID=BANK_ACCOUNTS(919)]\\tPgxEdge[provider=BANK_TXNS,key=2805,ID=BANK_TXNS(2805)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=674,ID=BANK_ACCOUNTS(674)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=399,ID=BANK_ACCOUNTS(399)]\\tPgxEdge[provider=BANK_TXNS,key=4029,ID=BANK_TXNS(4029)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=919,ID=BANK_ACCOUNTS(919)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1999,ID=BANK_TXNS(1999)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=399,ID=BANK_ACCOUNTS(399)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\tPgxEdge[provider=BANK_TXNS,key=4106,ID=BANK_TXNS(4106)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=944,ID=BANK_ACCOUNTS(944)]\\tPgxEdge[provider=BANK_TXNS,key=2689,ID=BANK_TXNS(2689)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=181,ID=BANK_ACCOUNTS(181)]\\tPgxEdge[provider=BANK_TXNS,key=4156,ID=BANK_TXNS(4156)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=944,ID=BANK_ACCOUNTS(944)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=23,ID=BANK_ACCOUNTS(23)]\\tPgxEdge[provider=BANK_TXNS,key=908,ID=BANK_TXNS(908)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=181,ID=BANK_ACCOUNTS(181)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=120,ID=BANK_TXNS(120)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=23,ID=BANK_ACCOUNTS(23)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\tPgxEdge[provider=BANK_TXNS,key=3093,ID=BANK_TXNS(3093)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=518,ID=BANK_ACCOUNTS(518)]\\tPgxEdge[provider=BANK_TXNS,key=3000,ID=BANK_TXNS(3000)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\tPgxEdge[provider=BANK_TXNS,key=2025,ID=BANK_TXNS(2025)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=518,ID=BANK_ACCOUNTS(518)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=679,ID=BANK_TXNS(679)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\tPgxEdge[provider=BANK_TXNS,key=4104,ID=BANK_TXNS(4104)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=799,ID=BANK_ACCOUNTS(799)]\\tPgxEdge[provider=BANK_TXNS,key=1847,ID=BANK_TXNS(1847)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=893,ID=BANK_ACCOUNTS(893)]\\tPgxEdge[provider=BANK_TXNS,key=4714,ID=BANK_TXNS(4714)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=799,ID=BANK_ACCOUNTS(799)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\tPgxEdge[provider=BANK_TXNS,key=3901,ID=BANK_TXNS(3901)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=893,ID=BANK_ACCOUNTS(893)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=679,ID=BANK_TXNS(679)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\tPgxEdge[provider=BANK_TXNS,key=4107,ID=BANK_TXNS(4107)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=66,ID=BANK_ACCOUNTS(66)]\\tPgxEdge[provider=BANK_TXNS,key=3170,ID=BANK_TXNS(3170)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=406,ID=BANK_ACCOUNTS(406)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=397,ID=BANK_ACCOUNTS(397)]\\tPgxEdge[provider=BANK_TXNS,key=333,ID=BANK_TXNS(333)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=66,ID=BANK_ACCOUNTS(66)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=325,ID=BANK_ACCOUNTS(325)]\\tPgxEdge[provider=BANK_TXNS,key=1990,ID=BANK_TXNS(1990)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=397,ID=BANK_ACCOUNTS(397)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1628,ID=BANK_TXNS(1628)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=325,ID=BANK_ACCOUNTS(325)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\tPgxEdge[provider=BANK_TXNS,key=4104,ID=BANK_TXNS(4104)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=466,ID=BANK_ACCOUNTS(466)]\\tPgxEdge[provider=BANK_TXNS,key=1848,ID=BANK_TXNS(1848)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=536,ID=BANK_ACCOUNTS(536)]\\tPgxEdge[provider=BANK_TXNS,key=3468,ID=BANK_TXNS(3468)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=466,ID=BANK_ACCOUNTS(466)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=962,ID=BANK_ACCOUNTS(962)]\\tPgxEdge[provider=BANK_TXNS,key=2112,ID=BANK_TXNS(2112)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=536,ID=BANK_ACCOUNTS(536)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4245,ID=BANK_TXNS(4245)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=962,ID=BANK_ACCOUNTS(962)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=380,ID=BANK_ACCOUNTS(380)]\\tPgxEdge[provider=BANK_TXNS,key=3096,ID=BANK_TXNS(3096)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=921,ID=BANK_ACCOUNTS(921)]\\tPgxEdge[provider=BANK_TXNS,key=1903,ID=BANK_TXNS(1903)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=380,ID=BANK_ACCOUNTS(380)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=962,ID=BANK_ACCOUNTS(962)]\\tPgxEdge[provider=BANK_TXNS,key=4041,ID=BANK_TXNS(4041)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=921,ID=BANK_ACCOUNTS(921)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4245,ID=BANK_TXNS(4245)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=962,ID=BANK_ACCOUNTS(962)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\tPgxEdge[provider=BANK_TXNS,key=4104,ID=BANK_TXNS(4104)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=138,ID=BANK_ACCOUNTS(138)]\\tPgxEdge[provider=BANK_TXNS,key=1846,ID=BANK_TXNS(1846)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=144,ID=BANK_ACCOUNTS(144)]\\tPgxEdge[provider=BANK_TXNS,key=694,ID=BANK_TXNS(694)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=138,ID=BANK_ACCOUNTS(138)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=63,ID=BANK_ACCOUNTS(63)]\\tPgxEdge[provider=BANK_TXNS,key=722,ID=BANK_TXNS(722)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=144,ID=BANK_ACCOUNTS(144)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=319,ID=BANK_TXNS(319)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=63,ID=BANK_ACCOUNTS(63)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\tPgxEdge[provider=BANK_TXNS,key=4106,ID=BANK_TXNS(4106)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=272,ID=BANK_ACCOUNTS(272)]\\tPgxEdge[provider=BANK_TXNS,key=2690,ID=BANK_TXNS(2690)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=840,ID=BANK_ACCOUNTS(840)]\\tPgxEdge[provider=BANK_TXNS,key=1362,ID=BANK_TXNS(1362)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=272,ID=BANK_ACCOUNTS(272)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\tPgxEdge[provider=BANK_TXNS,key=4920,ID=BANK_TXNS(4920)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=840,ID=BANK_ACCOUNTS(840)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=679,ID=BANK_TXNS(679)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\tPgxEdge[provider=BANK_TXNS,key=3093,ID=BANK_TXNS(3093)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=523,ID=BANK_ACCOUNTS(523)]\\tPgxEdge[provider=BANK_TXNS,key=2997,ID=BANK_TXNS(2997)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\tPgxEdge[provider=BANK_TXNS,key=2047,ID=BANK_TXNS(2047)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=523,ID=BANK_ACCOUNTS(523)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=679,ID=BANK_TXNS(679)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\tPgxEdge[provider=BANK_TXNS,key=3093,ID=BANK_TXNS(3093)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=518,ID=BANK_ACCOUNTS(518)]\\tPgxEdge[provider=BANK_TXNS,key=3000,ID=BANK_TXNS(3000)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=713,ID=BANK_ACCOUNTS(713)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=151,ID=BANK_ACCOUNTS(151)]\\tPgxEdge[provider=BANK_TXNS,key=2022,ID=BANK_TXNS(2022)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=518,ID=BANK_ACCOUNTS(518)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=757,ID=BANK_TXNS(757)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=151,ID=BANK_ACCOUNTS(151)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=456,ID=BANK_ACCOUNTS(456)]\\tPgxEdge[provider=BANK_TXNS,key=3094,ID=BANK_TXNS(3094)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\tPgxEdge[provider=BANK_TXNS,key=3420,ID=BANK_TXNS(3420)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=456,ID=BANK_ACCOUNTS(456)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\tPgxEdge[provider=BANK_TXNS,key=1744,ID=BANK_TXNS(1744)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1569,ID=BANK_TXNS(1569)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\tPgxEdge[provider=BANK_TXNS,key=4104,ID=BANK_TXNS(4104)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=456,ID=BANK_ACCOUNTS(456)]\\tPgxEdge[provider=BANK_TXNS,key=1850,ID=BANK_TXNS(1850)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\tPgxEdge[provider=BANK_TXNS,key=3420,ID=BANK_TXNS(3420)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=456,ID=BANK_ACCOUNTS(456)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\tPgxEdge[provider=BANK_TXNS,key=1744,ID=BANK_TXNS(1744)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=348,ID=BANK_ACCOUNTS(348)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1569,ID=BANK_TXNS(1569)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=313,ID=BANK_ACCOUNTS(313)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\tPgxEdge[provider=BANK_TXNS,key=4106,ID=BANK_TXNS(4106)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=944,ID=BANK_ACCOUNTS(944)]\\tPgxEdge[provider=BANK_TXNS,key=2689,ID=BANK_TXNS(2689)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=651,ID=BANK_ACCOUNTS(651)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=806,ID=BANK_ACCOUNTS(806)]\\tPgxEdge[provider=BANK_TXNS,key=4154,ID=BANK_TXNS(4154)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=944,ID=BANK_ACCOUNTS(944)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=973,ID=BANK_ACCOUNTS(973)]\\tPgxEdge[provider=BANK_TXNS,key=4753,ID=BANK_TXNS(4753)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=806,ID=BANK_ACCOUNTS(806)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4301,ID=BANK_TXNS(4301)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=973,ID=BANK_ACCOUNTS(973)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\tPgxEdge[provider=BANK_TXNS,key=4103,ID=BANK_TXNS(4103)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=57,ID=BANK_ACCOUNTS(57)]\\tPgxEdge[provider=BANK_TXNS,key=2420,ID=BANK_TXNS(2420)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=407,ID=BANK_ACCOUNTS(407)]\\tPgxEdge[provider=BANK_TXNS,key=288,ID=BANK_TXNS(288)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=57,ID=BANK_ACCOUNTS(57)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=754,ID=BANK_ACCOUNTS(754)]\\tPgxEdge[provider=BANK_TXNS,key=3172,ID=BANK_TXNS(3172)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=407,ID=BANK_ACCOUNTS(407)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4491,ID=BANK_TXNS(4491)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=754,ID=BANK_ACCOUNTS(754)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\tPgxEdge[provider=BANK_TXNS,key=4103,ID=BANK_TXNS(4103)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=136,ID=BANK_ACCOUNTS(136)]\\tPgxEdge[provider=BANK_TXNS,key=2419,ID=BANK_TXNS(2419)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=597,ID=BANK_ACCOUNTS(597)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=636,ID=BANK_ACCOUNTS(636)]\\tPgxEdge[provider=BANK_TXNS,key=684,ID=BANK_TXNS(684)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=136,ID=BANK_ACCOUNTS(136)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=942,ID=BANK_ACCOUNTS(942)]\\tPgxEdge[provider=BANK_TXNS,key=2614,ID=BANK_TXNS(2614)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=636,ID=BANK_ACCOUNTS(636)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=4144,ID=BANK_TXNS(4144)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=942,ID=BANK_ACCOUNTS(942)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\tPgxEdge[provider=BANK_TXNS,key=4105,ID=BANK_TXNS(4105)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=673,ID=BANK_ACCOUNTS(673)]\\tPgxEdge[provider=BANK_TXNS,key=3095,ID=BANK_TXNS(3095)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=732,ID=BANK_ACCOUNTS(732)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=690,ID=BANK_ACCOUNTS(690)]\\tPgxEdge[provider=BANK_TXNS,key=2801,ID=BANK_TXNS(2801)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=673,ID=BANK_ACCOUNTS(673)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\tPgxEdge[provider=BANK_TXNS,key=2884,ID=BANK_TXNS(2884)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=690,ID=BANK_ACCOUNTS(690)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=679,ID=BANK_TXNS(679)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=135,ID=BANK_ACCOUNTS(135)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\tPgxEdge[provider=BANK_TXNS,key=4104,ID=BANK_TXNS(4104)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=799,ID=BANK_ACCOUNTS(799)]\\tPgxEdge[provider=BANK_TXNS,key=1847,ID=BANK_TXNS(1847)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=369,ID=BANK_ACCOUNTS(369)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=287,ID=BANK_ACCOUNTS(287)]\\tPgxEdge[provider=BANK_TXNS,key=4715,ID=BANK_TXNS(4715)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=799,ID=BANK_ACCOUNTS(799)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=279,ID=BANK_ACCOUNTS(279)]\\tPgxEdge[provider=BANK_TXNS,key=1437,ID=BANK_TXNS(1437)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=287,ID=BANK_ACCOUNTS(287)]\\nPgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)]\\tPgxEdge[provider=BANK_TXNS,key=1396,ID=BANK_TXNS(1396)]\\tPgxVertex[provider=BANK_ACCOUNTS,key=279,ID=BANK_ACCOUNTS(279)]\"}", + "type" : "NETWORK" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "ShortestPathHopDist() という分析アルゴリズムを使用し、アカウント934とアカウント387に近接しているアカウントを調べます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "#By default this is property refers to account #934", + "vertex = graph.get_vertex(\"BANK_ACCOUNTS(934)\")", + "", + "analyst.shortest_path_hop_distance(graph, vertex, \"hop_dist_from_934\")" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "AllPaths(source: PgxVertex[provider=BANK_ACCOUNTS,key=934,ID=BANK_ACCOUNTS(934)])\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "vertex = graph.get_vertex(\"BANK_ACCOUNTS(387)\")", + "", + "analyst.shortest_path_hop_distance(graph, vertex, \"hop_dist_from_387\")" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "AllPaths(source: PgxVertex[provider=BANK_ACCOUNTS,key=387,ID=BANK_ACCOUNTS(387)])\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "Let's take a look at the number of transactions for accounts that have two hops or less from **934** or **387**." + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "md", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "

Let's take a look at the number of transactions for accounts that have two hops or less from 934 or 387.

\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "934と387から2ホップ以下で繋がっている口座のトランザクション数を見てみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 6, + "title" : null, + "hasTitle" : false, + "message" : [ + "%pgql-pgx", + "SELECT a.acct_id, a.hop_dist_from_934 AS hops, in_degree(a) + out_degree(a) AS num_transactions FROM MATCH (a) ON bank_graph", + "WHERE hops > 0 AND hops <=2 ", + "ORDER BY num_transactions DESC" + ], + "selectedVisualization" : "table", + "visualizationConfig" : "[{\"visualization\":{\"filters\":[],\"graphAction\":{\"graphName\":\"BANK_GRAPH\"},\"viewTransform\":[[22.402539345020045,5.224829324978046,0.938068297826141,724]],\"lastColumns\":[\"ACCT_ID\",\"HOPS\",\"NUM_TRANSACTIONS\"],\"version\":9},\"table\":{\"version\":1},\"scatterplot\":{}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "pgql-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "{\"schema\":null,\"name\":\"BANK_GRAPH\",\"resultSetId\":\"pgql_9\",\"graph\":{\"idType\":\"string\",\"vertices\":[{\"_id\":\"BANK_ACCOUNTS(493)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.062612925646473E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"493\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(130)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.855743485983783E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"130\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(590)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.753714851354863E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"590\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(752)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.265863312424164E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"752\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(740)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.76207419262065E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"740\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(970)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.2301841422453813E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"970\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(942)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.8111313809862476E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"942\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(332)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3786671654666015E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"332\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(287)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.865913642823485E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"287\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(356)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.868701806458501E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"356\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(897)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"7.357242564673767E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"897\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(643)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.1845943886971205E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"643\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(764)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.6551352307474365E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"764\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(510)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"9.996444181219308E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"510\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(518)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.124085553570089E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"518\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(805)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.23421120882751E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"805\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(494)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.221712222700974E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"494\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(183)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.6168972962642937E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"183\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(478)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1944040006716053E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"478\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(523)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3926477386058427E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"523\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(236)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.406166131650889E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"236\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(414)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.056806669381452E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"414\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(793)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.54086413493786E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"793\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(397)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.150155543752367E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"27\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"397\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(333)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.724920692874343E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"333\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(519)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.966965319459874E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"519\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(317)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.256343780330906E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"25\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"317\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(94)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.4183980712687307E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"94\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(330)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.066148594531791E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"35\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"330\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(560)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.6946063541014714E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"22\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"560\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(140)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.55150469072955E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"140\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(423)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.282876161425252E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"423\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(338)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.028368971234233E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"338\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(205)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.2194676681811555E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"205\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(459)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"9.69592825211703E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"459\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(124)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.740446453221197E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"124\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(843)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.039285737676487E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"843\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(188)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.254218025561962E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"188\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(677)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"7.605590689351417E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"677\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(245)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.030631802790883E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"245\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(649)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.204540767433898E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"649\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(407)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.046723491895786E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"407\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(528)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.065273998961244E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"528\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(383)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.8240758197966316E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"383\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(250)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.6938682869490043E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"250\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(181)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.471135262890846E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"22\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"181\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(80)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.5697880606375484E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"80\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(751)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.071180330518104E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"751\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(379)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.7507675208734894E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"379\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(678)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.761117902728853E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"678\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(521)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.991504271630709E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"521\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(529)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.928005406107897E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"529\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(340)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.59702812543456E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"19\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"340\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(796)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.036346508309245E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"796\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(203)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.7954400656679733E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"203\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(881)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.4612918471508396E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"881\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(348)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1290305100144217E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"23\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"348\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(893)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.30977056916058E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"893\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(756)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.836534619445488E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"756\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(744)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.019717187095861E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"744\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(962)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"7.331835799429577E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"962\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(279)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.0812540607843967E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"279\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(837)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.919554505783403E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"837\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(813)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.5233854146733614E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"813\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(63)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3411647587299116E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"63\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(583)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.4254248033756176E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"583\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(325)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.1672647654611586E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"325\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(313)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"2.4339421022294796E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"313\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(135)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.1393532303955896E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"41\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"135\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(975)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.3912771656993494E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"975\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(612)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.545605690265143E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"612\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(797)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.773967689028719E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"797\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(190)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.492590171249662E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"190\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(919)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.51428452220933E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"919\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(350)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.764871635220329E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"350\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(592)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.4448469198948083E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"592\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(184)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.049754379027075E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"184\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(495)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.781529368740327E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"495\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(403)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.3764831416881163E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"28\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"403\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(536)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.2914872816713333E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"536\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(778)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.330540559371651E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"19\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"778\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(144)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.568271611231793E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"144\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(754)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.4472206926341076E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"754\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(576)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.508267068780122E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"576\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(823)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.256804688684822E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"823\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(439)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.8449229369862477E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"25\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"439\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(242)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.239182715141284E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"242\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(593)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.548339683048756E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"593\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(690)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"4.599770648898897E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"690\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(840)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"0.0013098814059153362\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"840\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(226)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.997981806912708E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"226\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(117)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"5.132037914221794E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"117\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(60)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.627180547109216E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"60\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(921)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.902190118224783E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"19\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"921\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(553)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"6.015093060868135E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"553\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(973)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.485017179181626E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"973\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(610)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"7.81724428483117E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"610\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(399)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.3785822032210454E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"399\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(929)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"4.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"3.638785732955182E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"929\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(606)\",\"p\":[{\"n\":\"hop_dist_from_387\",\"v\":\"3.0\",\"s\":false},{\"n\":\"pagerank\",\"v\":\"8.60047566218949E-4\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"ACCT_ID\",\"v\":\"606\",\"s\":true},{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]}],\"edges\":[],\"paths\":[],\"totalNumResults\":210},\"table\":\"ACCT_ID\\tHOPS\\tNUM_TRANSACTIONS\\n135\\t1.0\\t41\\n330\\t2.0\\t35\\n403\\t2.0\\t28\\n397\\t2.0\\t27\\n317\\t2.0\\t25\\n439\\t2.0\\t25\\n348\\t2.0\\t23\\n181\\t2.0\\t22\\n560\\t2.0\\t22\\n383\\t2.0\\t21\\n756\\t2.0\\t21\\n140\\t2.0\\t21\\n778\\t2.0\\t19\\n921\\t2.0\\t19\\n340\\t2.0\\t19\\n975\\t2.0\\t18\\n606\\t2.0\\t18\\n478\\t2.0\\t18\\n495\\t2.0\\t18\\n576\\t2.0\\t18\\n751\\t2.0\\t17\\n407\\t2.0\\t17\\n519\\t2.0\\t16\\n144\\t2.0\\t16\\n796\\t2.0\\t16\\n690\\t2.0\\t16\\n94\\t2.0\\t16\\n942\\t1.0\\t16\\n188\\t2.0\\t16\\n962\\t1.0\\t15\\n313\\t1.0\\t15\\n130\\t2.0\\t15\\n840\\t2.0\\t15\\n287\\t2.0\\t14\\n881\\t1.0\\t14\\n536\\t2.0\\t14\\n919\\t2.0\\t14\\n203\\t2.0\\t14\\n553\\t2.0\\t14\\n493\\t2.0\\t14\\n523\\t2.0\\t14\\n205\\t2.0\\t14\\n744\\t2.0\\t14\\n970\\t2.0\\t14\\n325\\t1.0\\t14\\n893\\t2.0\\t14\\n740\\t2.0\\t14\\n897\\t2.0\\t13\\n643\\t1.0\\t13\\n518\\t2.0\\t13\\n80\\t2.0\\t12\\n837\\t2.0\\t12\\n190\\t2.0\\t12\\n226\\t2.0\\t12\\n242\\t2.0\\t12\\n590\\t2.0\\t12\\n583\\t2.0\\t12\\n610\\t2.0\\t12\\n752\\t2.0\\t12\\n754\\t1.0\\t12\\n764\\t2.0\\t12\\n60\\t2.0\\t12\\n63\\t1.0\\t12\\n279\\t1.0\\t12\\n805\\t2.0\\t12\\n973\\t1.0\\t12\\n332\\t2.0\\t12\\n350\\t2.0\\t12\\n236\\t2.0\\t11\\n117\\t2.0\\t11\\n356\\t1.0\\t11\\n338\\t2.0\\t11\\n793\\t2.0\\t11\\n797\\t2.0\\t11\\n528\\t1.0\\t11\\n823\\t1.0\\t11\\n929\\t2.0\\t11\\n510\\t2.0\\t11\\n414\\t2.0\\t11\\n494\\t2.0\\t11\\n184\\t2.0\\t10\\n813\\t2.0\\t10\\n843\\t2.0\\t10\\n245\\t2.0\\t10\\n521\\t2.0\\t10\\n250\\t2.0\\t10\\n183\\t2.0\\t10\\n678\\t2.0\\t10\\n333\\t2.0\\t9\\n379\\t2.0\\t9\\n399\\t1.0\\t9\\n423\\t2.0\\t9\\n459\\t2.0\\t9\\n529\\t2.0\\t9\\n612\\t1.0\\t9\\n592\\t1.0\\t9\\n649\\t2.0\\t9\\n677\\t2.0\\t9\\n593\\t2.0\\t9\\n124\\t2.0\\t9\"}", + "type" : "NETWORK" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 6, + "title" : null, + "hasTitle" : false, + "message" : [ + "%pgql-pgx", + "SELECT a.acct_id, a.hop_dist_from_387 AS hops, in_degree(a) + out_degree(a) AS num_transactions FROM MATCH (a) ON bank_graph", + "WHERE hops > 0 AND hops <=2 ", + "ORDER BY num_transactions DESC" + ], + "selectedVisualization" : "table", + "visualizationConfig" : "[{\"visualization\":{\"graphAction\":{\"graphName\":\"BANK_GRAPH\",\"lastRun\":1663634706095},\"lastColumns\":[\"ACCT_ID\",\"HOPS\",\"NUM_TRANSACTIONS\"],\"version\":9}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "pgql-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "{\"schema\":null,\"name\":\"BANK_GRAPH\",\"resultSetId\":\"pgql_10\",\"graph\":{\"idType\":\"string\",\"vertices\":[{\"_id\":\"BANK_ACCOUNTS(251)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.46258065268397E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"251\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(550)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.7511987088246763E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"550\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(590)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.753714851354863E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"590\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(259)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"31\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.197639257129873E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"259\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(534)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"37\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.213450779198483E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"534\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(413)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"9.444548069111917E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"413\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(71)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.6945642607624557E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"71\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(441)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.72918014154363E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"441\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(332)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.3786671654666015E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"332\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(223)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.309820541873097E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"223\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(83)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.9003266697531094E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"83\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(817)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.5880310808318666E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"817\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(518)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.124085553570089E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"518\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(494)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.221712222700974E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"494\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(171)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.5438081871470693E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"171\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(183)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.6168972962642937E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"183\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(620)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.8310442350232685E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"620\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(139)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.6667317681894987E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"139\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(511)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.6968808807395553E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"511\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(850)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"25\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.705532831994868E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"850\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(70)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.152891025504761E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"70\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(551)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.2529553514439133E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"551\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(321)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.662422690579995E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"321\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(276)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.66507921803938E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"276\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(155)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"19\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.799985862313691E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"155\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(644)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"9.209727918231994E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"644\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(765)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.8285883893871903E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"765\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(167)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.562694381756645E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"167\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(858)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.1379781327657573E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"858\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(955)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"8.946368752140179E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"955\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(394)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.830578194956477E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"394\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(560)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"22\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.6946063541014714E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"560\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(693)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"19\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.7240384342334265E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"693\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(710)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.415737644001844E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"710\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(257)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"7.425466898568569E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"257\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(532)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.151969086870414E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"532\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(245)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.030631802790883E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"245\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(366)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.7197953595592384E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"366\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(89)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.41866301704631E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"89\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(528)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.065273998961244E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"528\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(165)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.849525063853176E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"165\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(791)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.4250213359558415E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"791\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(872)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"20\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"8.978189607732629E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"872\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(751)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.071180330518104E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"751\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(884)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.034235299710591E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"884\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(981)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"26\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.007652450538616E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"981\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(569)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.8014887580212105E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"569\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(222)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"30\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.704912567264305E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"222\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(678)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.761117902728853E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"678\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(787)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.6395158380852864E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"787\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(101)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.1903702864845777E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"101\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(88)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.8138286283403923E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"88\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(614)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.133597015769065E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"614\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(40)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.895477655832035E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"40\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(218)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"20\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.248731560701307E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"218\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(505)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"0.0012102624743941244\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"505\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(91)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"23\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.1568090648788267E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"91\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(457)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.000576716006404E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"457\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(651)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.224942685617865E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"651\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(756)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.836534619445488E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"756\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(865)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"25\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.869044845084482E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"865\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(720)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.684661900221548E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"720\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(388)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.210622215920471E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"388\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(134)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.276186370186246E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"134\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(716)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"20\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.218690575812712E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"716\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(462)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.171651534664856E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"462\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(325)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.1672647654611586E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"325\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(555)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.361929882824153E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"555\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(228)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.0966533427065405E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"228\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(870)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"0.0010781064693311927\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"870\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(745)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"17\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.5507534266238214E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"745\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(842)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"21\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.670191088905088E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"842\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(190)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.492590171249662E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"190\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(919)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.51428452220933E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"919\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(120)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.7143931159913776E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"120\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(281)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"7.726390215349495E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"281\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(225)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"20\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.85157914693203E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"225\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(673)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.8313937903130635E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"673\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(920)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"31\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.193581563148178E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"920\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(899)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"1.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.7270785539645626E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"899\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(334)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.3147205781850564E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"334\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(875)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.7802840821732544E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"875\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(621)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"9.459275496419581E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"621\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(45)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.69845323846845E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"45\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(306)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.524598326302033E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"306\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(85)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"1.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.029231536913771E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"85\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(581)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"8.009276854831046E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"581\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(840)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"0.0013098814059153362\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"840\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(456)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"9\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"2.8652543536998885E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"456\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(589)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"7.97486145972423E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"589\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(335)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"11\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"4.937912196016451E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"335\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(501)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.575059758971574E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"501\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(892)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"22\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.13419861738714E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"892\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(662)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"18\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.5226903841807373E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"662\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(60)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"2.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"12\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"6.627180547109216E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"60\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(359)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"3.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"15\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.3536705163911187E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"359\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(634)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"16\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.0498069933399143E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"634\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(565)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"14\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.9861492291331314E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"565\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(145)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"13\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"5.283973000181797E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"145\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]},{\"_id\":\"BANK_ACCOUNTS(933)\",\"p\":[{\"n\":\"hop_dist_from_934\",\"v\":\"4.0\",\"s\":false},{\"n\":\"NUM_TRANSACTIONS\",\"v\":\"10\",\"s\":true},{\"n\":\"hop_dist_from_387\",\"v\":\"2.0\",\"s\":true},{\"n\":\"pagerank\",\"v\":\"3.3217389521572637E-4\",\"s\":false},{\"n\":\"ACCT_ID\",\"v\":\"933\",\"s\":true},{\"n\":\"NAME\",\"v\":\"Account\",\"s\":false}],\"l\":[\"ACCOUNTS\"],\"g\":[\"A\"]}],\"edges\":[],\"paths\":[],\"totalNumResults\":237},\"table\":\"ACCT_ID\\tHOPS\\tNUM_TRANSACTIONS\\n534\\t2.0\\t37\\n920\\t2.0\\t31\\n259\\t1.0\\t31\\n222\\t1.0\\t30\\n981\\t1.0\\t26\\n850\\t1.0\\t25\\n865\\t2.0\\t25\\n91\\t2.0\\t23\\n560\\t1.0\\t22\\n892\\t2.0\\t22\\n842\\t2.0\\t21\\n756\\t2.0\\t21\\n71\\t2.0\\t21\\n225\\t2.0\\t20\\n218\\t2.0\\t20\\n872\\t2.0\\t20\\n716\\t2.0\\t20\\n155\\t2.0\\t19\\n693\\t2.0\\t19\\n662\\t2.0\\t18\\n644\\t2.0\\t18\\n441\\t2.0\\t17\\n88\\t2.0\\t17\\n751\\t2.0\\t17\\n745\\t2.0\\t17\\n165\\t2.0\\t17\\n532\\t2.0\\t17\\n720\\t2.0\\t16\\n884\\t2.0\\t16\\n634\\t2.0\\t16\\n276\\t2.0\\t16\\n228\\t1.0\\t15\\n614\\t2.0\\t15\\n101\\t2.0\\t15\\n840\\t2.0\\t15\\n359\\t2.0\\t15\\n589\\t2.0\\t14\\n325\\t2.0\\t14\\n620\\t2.0\\t14\\n875\\t2.0\\t14\\n919\\t2.0\\t14\\n85\\t1.0\\t14\\n565\\t2.0\\t14\\n145\\t2.0\\t13\\n89\\t1.0\\t13\\n45\\t2.0\\t13\\n40\\t2.0\\t13\\n551\\t2.0\\t13\\n555\\t2.0\\t13\\n388\\t2.0\\t13\\n413\\t2.0\\t13\\n518\\t2.0\\t13\\n791\\t1.0\\t13\\n569\\t2.0\\t12\\n60\\t2.0\\t12\\n167\\t2.0\\t12\\n332\\t1.0\\t12\\n394\\t2.0\\t12\\n171\\t2.0\\t12\\n590\\t2.0\\t12\\n190\\t2.0\\t12\\n281\\t2.0\\t12\\n581\\t2.0\\t11\\n870\\t1.0\\t11\\n651\\t2.0\\t11\\n955\\t1.0\\t11\\n335\\t2.0\\t11\\n494\\t2.0\\t11\\n528\\t2.0\\t11\\n621\\t2.0\\t11\\n223\\t2.0\\t11\\n134\\t1.0\\t11\\n673\\t2.0\\t11\\n306\\t2.0\\t10\\n183\\t2.0\\t10\\n245\\t2.0\\t10\\n70\\t2.0\\t10\\n678\\t2.0\\t10\\n139\\t2.0\\t10\\n83\\t2.0\\t10\\n933\\t2.0\\t10\\n505\\t2.0\\t10\\n462\\t2.0\\t10\\n817\\t2.0\\t10\\n501\\t2.0\\t10\\n321\\t2.0\\t10\\n457\\t2.0\\t10\\n710\\t2.0\\t10\\n899\\t2.0\\t9\\n511\\t1.0\\t9\\n334\\t2.0\\t9\\n366\\t1.0\\t9\\n765\\t2.0\\t9\\n787\\t2.0\\t9\\n120\\t2.0\\t9\\n456\\t2.0\\t9\\n858\\t2.0\\t9\\n550\\t2.0\\t9\\n257\\t1.0\\t9\\n251\\t1.0\\t9\"}", + "type" : "NETWORK" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "DeepWalkというグラフ機械学習アルゴリズムを使って違法行為に使用された可能性のある銀行口座を探してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "", + "model = analyst.deepwalk_builder(", + "learning_rate=0.002,", + "num_epochs=30,", + "seed=1,", + ")" + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "機械学習アルゴリズムなので、先ずはモデルのトレーニングをします。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "", + "import time", + "start_ts = time.time()", + "model.fit(graph)", + "print(\"DeepWalk model training completed in {:.4f} seconds\".format(time.time() - start_ts))" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "DeepWalk model training completed in 29.5752 seconds\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "口座934に類似した口座を探してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "similars_934 = model.compute_similars(\"BANK_ACCOUNTS(934)\", 10)", + "print(\"List of nodes most similar to node 934.\")", + "similars_934.print()" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "List of nodes most similar to node 934.\n+-----------------------------------------+\n| dstVertex | similarity |\n+-----------------------------------------+\n| BANK_ACCOUNTS(934) | 1.000000238418579 |\n| BANK_ACCOUNTS(387) | 0.9944800138473511 |\n| BANK_ACCOUNTS(380) | 0.9943406581878662 |\n| BANK_ACCOUNTS(534) | 0.9941476583480835 |\n| BANK_ACCOUNTS(135) | 0.9936882257461548 |\n| BANK_ACCOUNTS(746) | 0.9934984445571899 |\n| BANK_ACCOUNTS(920) | 0.9931957125663757 |\n| BANK_ACCOUNTS(352) | 0.9929064512252808 |\n| BANK_ACCOUNTS(559) | 0.9928516149520874 |\n| BANK_ACCOUNTS(330) | 0.9926198720932007 |\n+-----------------------------------------+\n\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "口座387に類似した口座を探してみます。" + ], + "selectedVisualization" : null, + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : null, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%python-pgx", + "similars_387 = model.compute_similars(\"BANK_ACCOUNTS(387)\", 10)", + "print(\"List of nodes most similar to node 387.\")", + "similars_387.print()" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : null, + "result" : { + "interpreter" : "python-pgx", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "List of nodes most similar to node 387.\n+-----------------------------------------+\n| dstVertex | similarity |\n+-----------------------------------------+\n| BANK_ACCOUNTS(387) | 0.9999998807907104 |\n| BANK_ACCOUNTS(135) | 0.9950072765350342 |\n| BANK_ACCOUNTS(934) | 0.9947497248649597 |\n| BANK_ACCOUNTS(534) | 0.9935051202774048 |\n| BANK_ACCOUNTS(746) | 0.9931846857070923 |\n| BANK_ACCOUNTS(559) | 0.9930453896522522 |\n| BANK_ACCOUNTS(380) | 0.9927774667739868 |\n| BANK_ACCOUNTS(330) | 0.9927530288696289 |\n| BANK_ACCOUNTS(301) | 0.9922171831130981 |\n| BANK_ACCOUNTS(352) | 0.9919446706771851 |\n+-----------------------------------------+\n\n", + "type" : "TEXT" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : "{}" + } + ] + } +] \ No newline at end of file diff --git a/tutorials/_adb/adb103-livelabs.md b/tutorials/_adb/adb103-livelabs.md index f3bbb6a676..76238ce5ff 100644 --- a/tutorials/_adb/adb103-livelabs.md +++ b/tutorials/_adb/adb103-livelabs.md @@ -61,7 +61,7 @@ header: > ![searchbox](searchbox.png) -今回は例として、レベルに **Begginer**、提供タイプ **Run on Livelabs**、シリーズに **Autonomous DB Shared**を選択し、表示される結果から **Load and Analyze Your Data with Autonomous Database**を選択します。 +今回は例として、レベルに **Beginner**、提供タイプ **Run on LiveLabs**、シリーズに **Autonomous DB Serverless**を選択し、表示される結果から **Load and Analyze Your Data with Autonomous Database**を選択します。 ![faceted2](faceted2.png) @@ -80,7 +80,7 @@ header: ![reserve](reserve.png) -実行すると、**My Reservation** 画面でステータスを確認できます。今すぐ実行とした場合には、環境準備が行われ、完了するとStatusがAvailableとなります。その後 **Launch Workshop** をクリックすることでワークショップを開始できます。 +実行すると、**My Reservation** 画面でステータスを確認できます。今すぐ実行とした場合には、環境準備が行われ、完了すると **Launch Workshop** をクリックすることができるようになります。 ![myreservation](myreservation.png) スケジュールを設定した場合には、その予定が表示されます。 @@ -107,7 +107,7 @@ Reservation Infomationでは以下を確認できます。   ![signin](signin.png) -最初のサインインの後はパスワードの変更画面が表示されます。パスワード要件に従った任意のパスワードに変更し、**Save New Password**をクリックします。 +最初のサインインの後はパスワードの変更画面が表示されます。パスワード要件に従った任意のパスワードに変更します。 ![changepasswd](changepasswd.png) diff --git a/tutorials/_adb/adb103-livelabs/changepasswd.png b/tutorials/_adb/adb103-livelabs/changepasswd.png index 967412c8eb..4a880fb0e3 100644 Binary files a/tutorials/_adb/adb103-livelabs/changepasswd.png and b/tutorials/_adb/adb103-livelabs/changepasswd.png differ diff --git a/tutorials/_adb/adb103-livelabs/console.png b/tutorials/_adb/adb103-livelabs/console.png index 77b9d5fdab..3d0b3652e8 100644 Binary files a/tutorials/_adb/adb103-livelabs/console.png and b/tutorials/_adb/adb103-livelabs/console.png differ diff --git a/tutorials/_adb/adb103-livelabs/delete.png b/tutorials/_adb/adb103-livelabs/delete.png index 27eca35cc3..cf8cd6c388 100644 Binary files a/tutorials/_adb/adb103-livelabs/delete.png and b/tutorials/_adb/adb103-livelabs/delete.png differ diff --git a/tutorials/_adb/adb103-livelabs/faceted2.png b/tutorials/_adb/adb103-livelabs/faceted2.png index d76db9c130..ed1a746937 100644 Binary files a/tutorials/_adb/adb103-livelabs/faceted2.png and b/tutorials/_adb/adb103-livelabs/faceted2.png differ diff --git a/tutorials/_adb/adb103-livelabs/getstarted.png b/tutorials/_adb/adb103-livelabs/getstarted.png index 92246d552b..9a73d66a14 100644 Binary files a/tutorials/_adb/adb103-livelabs/getstarted.png and b/tutorials/_adb/adb103-livelabs/getstarted.png differ diff --git a/tutorials/_adb/adb103-livelabs/myreservation.png b/tutorials/_adb/adb103-livelabs/myreservation.png index 99ac49454f..3ead85b095 100644 Binary files a/tutorials/_adb/adb103-livelabs/myreservation.png and b/tutorials/_adb/adb103-livelabs/myreservation.png differ diff --git a/tutorials/_adb/adb103-livelabs/searchbox.png b/tutorials/_adb/adb103-livelabs/searchbox.png index 19259598c9..e71bfef85f 100644 Binary files a/tutorials/_adb/adb103-livelabs/searchbox.png and b/tutorials/_adb/adb103-livelabs/searchbox.png differ diff --git a/tutorials/_adb/adb103-livelabs/signin.png b/tutorials/_adb/adb103-livelabs/signin.png index a151ea5f73..4e924ab3bb 100644 Binary files a/tutorials/_adb/adb103-livelabs/signin.png and b/tutorials/_adb/adb103-livelabs/signin.png differ diff --git a/tutorials/_adb/adb105-create-apex-app.md b/tutorials/_adb/adb105-create-apex-app.md index b2d2b88812..4bff67220f 100644 --- a/tutorials/_adb/adb105-create-apex-app.md +++ b/tutorials/_adb/adb105-create-apex-app.md @@ -5,8 +5,8 @@ excerpt: "APEXコンソールの起動から簡単なアプリケーション作 order: "3_105" layout: single header: - teaser: "/adb/adb105-create-apex-app/img3_2.png" - overlay_image: "/adb/adb105-create-apex-app/img3_2.png" + teaser: "/adb/adb105-create-apex-app/image105-8.png" + overlay_image: "/adb/adb105-create-apex-app/image105-8.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://community.oracle.com/tech/welcome/discussion/4474306 --- @@ -56,7 +56,7 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 受発注データは次のような表になっており、ORDER_KEY(注文番号)、ORDER_STATUS(注文状況)、UNITS(個数) ...etc などの列から構成される、5247行の表となっています。 -![img1.png](img1.png) +![image105-1_0.png](image105-1_0.png)
@@ -67,44 +67,46 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 アプリケーションを作成するためには、ワークペースを作成する必要があります。 最初にADMINユーザで管理画面にログインします。 -1. ADBインスタンスの詳細画面を表示します。メニュー画面上部の **`ツール`** タブを選択し、**`APEXを開く`** をクリックします。 +1. ADBインスタンスの詳細画面を表示します。メニュー画面上部の **`ツール構成`** タブを選択し、**`Oracle APEX`** のパブリック・アクセスURLをコピーして、ブラウザの別のタブから開きます。 - ![img2_1.png](img2_1.png) + ![image105-1.png](image105-1.png) 2. ログイン画面が表示されるので、下部の言語欄から **`日本語`** を選択しておきます。(初回は英語表示ですが、日本語を含めた他言語表示に変更することが可能です) - + 3. ADBインスタンス作成時に指定したADMINユーザのパスワード(本ガイドを参考に作成した方のパスワードは「Welcome12345#」)を入力し、サインインします。 - +4. Oracle APEXの管理サービスにサインインしました。初回起動時に下記のような画面が表示されますので、**`ワークスペースの作成`** をクリックします。 -4. **`ワークスペースの作成`** をクリックします。 + ![image105-3.png](image105-3.png) - ![img2_4.png](img2_4.png) -5. 以下の記載例を参考に各項目を入力し、最後に **`ワークスペースの作成`** をクリックします。 +5. 新規のワークスペース作成を選択します。 + ![image105-4.png](image105-4.png) + + 以下の記載例を参考に各項目を入力し、最後に **`ワークスペースの作成`** をクリックします。 - + + + + + - - - -
データベース・ユーザーAPEX_01APEXDEV
ワークスペース名APEXDEV
パスワード Welcome12345#
ワークスペース名APEX_01
- + -6. ワークスペースが作成されたことを確認します。ページ上部の注意書き通り、アプリケーションの構築を開始するには、管理サービスからサインアウトしてAPEX_01にサインインする必要があります。 +6. ワークスペースが作成されたことを確認します。ページ上部の注意書き通り、アプリケーションの構築を開始するには、管理サービスからサインアウトしてAPEXDEVにサインインする必要があります。 右上の **`ユーザボタン`** から **`サインアウト`** をクリックし、管理サービスからサインアウトします。 - ![img2_6.png](img2_6.png) + ![image105-6.png](image105-6.png)
@@ -120,24 +122,25 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 - + - + パスワード - +
データベース・ユーザーAPEX_01APEXDEV
Welcome12345#
ワークスペース名APEX_01APEXDEV
- + 2. APEXコンソールが起動したことを確認します。 ※ この画面のURLを記憶しておけば、次回よりAPEXコンソールに直接ログインできます - ![img3_2.png](img3_2.png) + ![image105-8.png](image105-8.png) +
@@ -152,14 +155,17 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 最初にデータベース内にテーブルを作成し、データを入れます。 1. APEXコンソールから **`アプリケーション・ビルダー`** を起動します + ![image105-9.png](image105-9.png) -2. **`新規アプリケーションの作成`** をクリックします +2. **`作成`** をクリックします + ![image105-10.png](image105-10.png) -3. **`ファイルから`** をクリックします +3. **`ファイルからのアプリケーションの作成`** をクリックします + ![image105-11.png](image105-11.png) 4. 事前に準備しておいた **`orders.csv`** をドラッグアンドドロップします - ![img4_4.png](img4_4.png) + ![image105-12.png](image105-12.png) 5. 表の名前を入力します(ここでは「ORDERS」とします)。※エラー表名は自動的に入力されます。 @@ -167,12 +173,12 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 7. **`データのロード`** をクリックします。 - ![img4_7.png](img4_7.png) + ![image105-13.png](image105-13.png) 8. ロード完了のメッセージが表示されたら **`アプリケーションの作成`** をクリックします。 ※この時点でDB上にORDERS表が作成されています - ![img4_8.png](img4_8.png) + ![image105-14.png](image105-14.png) 次にCSVファイルから作成されたテーブルを元にしてアプリケーションを作成します。 @@ -183,7 +189,7 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 10. **`アプリケーションの作成`** をクリックします。 (ページの追加や外観の設定、セキュリティの設定等が実施できますが、このハンズオンでは全てデフォルトのまま進めます) -![img4_10.png](img4_10.png) + ![image105-15.png](image105-15.png) 以上でアプリケーションの作成が完了しました。 @@ -196,15 +202,16 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 実際にアプリケーションを起動してみます。 1. **`アプリケーションの実行`** をクリックします。 -2. ログイン画面に ユーザー名・パスワード を入力し **`サインイン`** します。 + ![image105-16.png](image105-16.png) - ![img5_2.png](img5_2.png) +2. ログイン画面に ユーザー名・パスワード を入力し **`サインイン`** します。 + * ログインが完了すると、画面下端に黒いメニューバーが表示され、ここからアプリケーションの改修作業を実施できます。尚、このメニューバーは、アプリケーション・ビルダーから「アプリケーションの実行」でアプリケーション実行した場合に表示されます。 * ログイン画面のURLを記憶しておくと、作成したアプリケーションを直接呼び出すことができます。直接呼び出した場合は、画面下端のメニューバーは表示されないので、このURLをアプリ利用者にお渡しいただければ、そのままアプリケーションとしてご利用いただくことができますね。 - ![img5_3.png](img5_3.png) + ![image105-18_0.png](image105-18_0.png)
@@ -213,8 +220,8 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 # 6. 実行確認 作成されたアプリケーションの画面イメージをみていきましょう。 + ![image105-18.png](image105-18.png) -![img6.png](img6.png) ログインするとトップ画面が表示され、デフォルトでホーム画面(トップ画面)、ダッシュボード画面、検索画面、管理画面(レポート)が表示されます。 @@ -226,21 +233,19 @@ Autonomous Database上でAPEXを利用すると、バックアップや可用性 はじめに、ダッシュボードをクリックします。 ダッシュボードでは取り込んだデータをもとに、自動的にグラフとして出力されます。 - -![img6_1.png](img6_1.png) + ![image105-19.png](image105-19.png) ## - Orders検索 次に、Orders検索をクリックします。 こちらの機能では、取り込んだデータに対して、カテゴリ別に検索ができるようになっており、行単位でデータを絞り込むことができます。 + ![image105-20.png](image105-20.png) -![img6_2.png](img6_2.png) ## - Ordersレポート Ordersレポートからは、データを昇順・降順に並び替えることや、特定の列を非表示にすることができます。Orders検索との違いとしては、行単位ではなく列単位で表示を変更することができます。 - -![img6_3.png](img6_3.png) + ![image105-21.png](image105-21.png)
diff --git a/tutorials/_adb/adb105-create-apex-app/image105-1.png b/tutorials/_adb/adb105-create-apex-app/image105-1.png new file mode 100644 index 0000000000..dd49a2fc3e Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-1.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-10.png b/tutorials/_adb/adb105-create-apex-app/image105-10.png new file mode 100644 index 0000000000..e4410c61c3 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-10.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-11.png b/tutorials/_adb/adb105-create-apex-app/image105-11.png new file mode 100644 index 0000000000..24ac6af488 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-11.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-12.png b/tutorials/_adb/adb105-create-apex-app/image105-12.png new file mode 100644 index 0000000000..4348a9d045 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-12.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-13.png b/tutorials/_adb/adb105-create-apex-app/image105-13.png new file mode 100644 index 0000000000..250a671b97 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-13.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-14.png b/tutorials/_adb/adb105-create-apex-app/image105-14.png new file mode 100644 index 0000000000..ef85fd1dc7 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-14.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-15.png b/tutorials/_adb/adb105-create-apex-app/image105-15.png new file mode 100644 index 0000000000..6e1f9bdfc3 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-15.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-16.png b/tutorials/_adb/adb105-create-apex-app/image105-16.png new file mode 100644 index 0000000000..426fd5716f Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-16.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-17.png b/tutorials/_adb/adb105-create-apex-app/image105-17.png new file mode 100644 index 0000000000..27c46b37cb Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-17.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-18.png b/tutorials/_adb/adb105-create-apex-app/image105-18.png new file mode 100644 index 0000000000..a966d32d99 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-18.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-18_0.png b/tutorials/_adb/adb105-create-apex-app/image105-18_0.png new file mode 100644 index 0000000000..0da36cb6b1 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-18_0.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-19.png b/tutorials/_adb/adb105-create-apex-app/image105-19.png new file mode 100644 index 0000000000..f43d58bf35 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-19.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-1_0.png b/tutorials/_adb/adb105-create-apex-app/image105-1_0.png new file mode 100644 index 0000000000..21b68a1430 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-1_0.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-2.png b/tutorials/_adb/adb105-create-apex-app/image105-2.png new file mode 100644 index 0000000000..47a5d7688c Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-2.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-20.png b/tutorials/_adb/adb105-create-apex-app/image105-20.png new file mode 100644 index 0000000000..d73edb590b Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-20.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-21.png b/tutorials/_adb/adb105-create-apex-app/image105-21.png new file mode 100644 index 0000000000..0a39b0312e Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-21.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-3.png b/tutorials/_adb/adb105-create-apex-app/image105-3.png new file mode 100644 index 0000000000..18fdd170a6 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-3.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-4.png b/tutorials/_adb/adb105-create-apex-app/image105-4.png new file mode 100644 index 0000000000..0bf21e42fd Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-4.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-5.png b/tutorials/_adb/adb105-create-apex-app/image105-5.png new file mode 100644 index 0000000000..f1c999a647 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-5.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-6.png b/tutorials/_adb/adb105-create-apex-app/image105-6.png new file mode 100644 index 0000000000..485db04a09 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-6.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-7.png b/tutorials/_adb/adb105-create-apex-app/image105-7.png new file mode 100644 index 0000000000..203a73fc65 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-7.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-8.png b/tutorials/_adb/adb105-create-apex-app/image105-8.png new file mode 100644 index 0000000000..3f99612430 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-8.png differ diff --git a/tutorials/_adb/adb105-create-apex-app/image105-9.png b/tutorials/_adb/adb105-create-apex-app/image105-9.png new file mode 100644 index 0000000000..40c96294c8 Binary files /dev/null and b/tutorials/_adb/adb105-create-apex-app/image105-9.png differ diff --git a/tutorials/_adb/adb106-json.md b/tutorials/_adb/adb106-json.md index a33fe9c37c..007194570e 100644 --- a/tutorials/_adb/adb106-json.md +++ b/tutorials/_adb/adb106-json.md @@ -225,7 +225,9 @@ select xxx ・Database ActionsのJSONウィザード、もしくはDBMS_CLOUD.COPY_COLLECTION([マニュアル](https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-json-load-files.html))を利用しコマンドベースでロードしてください。特に大量データをロードする場合は、性能の観点から後者のDBMS_CLOUD.COPY_COLLECTIONの利用を推奨します。 -* Database ActionsのJSONウィザードの[参考手順(Oracle Livelabs)](https://oracle.github.io/learning-library/data-management-library/database/json/json-soda-ajd/workshops/freetier/?lab=sql-json) + * DBMS_CLOUD.COPY_COLLECTIONに関する[参考手順(Qiita)](https://qiita.com/kenwatan/items/db9134e1c9bf49315a79) @@ -250,7 +252,7 @@ select xxx ## その他 -[Autonomous JSON Database 技術概要](https://speakerdeck.com/oracle4engineer/autonomous-json-database-ji-shu-gai-yao)) +[Autonomous JSON Database 技術概要](https://speakerdeck.com/oracle4engineer/autonomous-json-database-ji-shu-gai-yao) [Qiita: Autonomous Database でのJSONデータ操作](https://qiita.com/TakuyaAma/items/429d762f54a18b0785a5) * Database Actionsを利用したコレクションの作成から、JSONを扱う際のその他関数についてなど、このページでは触れていない内容が紹介されています。 diff --git a/tutorials/_adb/adb106-json/img03.png b/tutorials/_adb/adb106-json/img03.png index 9f7c7590e9..f75eb08b90 100644 Binary files a/tutorials/_adb/adb106-json/img03.png and b/tutorials/_adb/adb106-json/img03.png differ diff --git a/tutorials/_adb/adb107-machine-learning.md b/tutorials/_adb/adb107-machine-learning.md index 3baa669799..5293a0b9e0 100644 --- a/tutorials/_adb/adb107-machine-learning.md +++ b/tutorials/_adb/adb107-machine-learning.md @@ -4,8 +4,8 @@ excerpt: "タイタニック号の乗客情報から生存予測モデルを作 order: "3_107" layout: single header: - teaser: "/adb/adb107-machine-learning/img72.png" - overlay_image: "/adb/adb107-machine-learning/img72.png" + teaser: "/adb/adb107-machine-learning/img48.png" + overlay_image: "/adb/adb107-machine-learning/img48.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://community.oracle.com/tech/welcome/discussion/4474261/ --- @@ -54,7 +54,7 @@ header: 1. **管理 > データベース・ユーザー**をクリックしてください。 - ![画面ショット1-1](img99.png) + ![画面ショット1-1](img1.png) 1. **+ユーザの作成**をクリックしてください。 @@ -67,8 +67,8 @@ header: - ユーザ名 = **OML** - パスワード = **Welcome12345#** - 表領域の割り当て制限 = **UNLIMITED** - - **OML**をチェック - - **Webアクセス**をチェック + - **OML**のトグルをON + - **Webアクセス**のトグルをON - **ユーザの作成**をクリック @@ -86,112 +86,107 @@ header: # 2. Database Actionsでデータロード -1. OMLユーザで**サインイン**した後、**データ・ツール > データ・ロード**をクリックします。 +1. OMLユーザで**サインイン**した後、**Data Studio > データ・ロード**をクリックします。 - ![画面ショット1-1](img10.png) + ![画面ショット1-1](img6.png) -1. **データの処理 > データ・ロード**、**データの処理 > ローカル・ファイル**を選択し、**次**をクリックします。 +1. **データのロード**を選択します。 - ![画面ショット1-1](img11.png) + ![画面ショット1-1](img7.png) -1. **ファイルの選択**をクリックし、端末から**train.csv**と**test.csv**を選択します。 +1. **ローカル・ファイル**をクリックし、**ファイルの選択**をクリックします。 + 端末から**train.csv**と**test.csv**を選択します。 - ![画面ショット1-1](img12.png) + ![画面ショット1-1](img8.png) -1. **緑色の実行ボタン**をクリックし、データ・ロードの実行します。 - - ![画面ショット1-1](img13.png) +1. **開始**をクリックします。 + ![画面ショット1-1](img9.png) - ![画面ショット1-1](img14.png) +1. **実行**をクリックします。 + ![画面ショット1-1](img10.png) -1. **完了**をクリックします。 - - ![画面ショット1-1](img15.png) +1. データ・ロードができました。 + ![画面ショット1-1](img11.png)
# 3. OML AutoML UIで生存予測モデル作成 -1. Autonomous Databaseの詳細画面へ遷移し、**サービス・コンソール**をクリックしてください。 +1. Autonomous Databaseの詳細画面へ遷移し、**ツール構成**のタブから、OMLにアクセスするパブリック・アクセスURLをコピーします。 - ![画面ショット1-1](img20.png) + ![画面ショット1-1](img12.png) -1. サービス・コンソールの**開発 >** **Oracle Machine Learningユーザー・インターフェイス**をクリックし、OMLユーザで**サインイン**して下さい。 + > ECPUモデルでADBを作成した場合は、**ツール構成の編集**より、ADBに同梱されているツールのステータスや、ECPU数、最大アイドル時間を設定することができます。 + ![画面ショット1-1](img13.png) - ![画面ショット1-1](img21.png) +1. Oracle Machine Learningにサインインします。 -1. Oracle Machine Learningにサインイン後、画面左上の**ハンバーガメニュ**をクリックしてください。 + ![画面ショット1-1](img14.png) - ![画面ショット1-1](img22.png) +1. 画面左上のハンバーガメニューをクリックし、**AutoML実験**をクリックしてください。 -1. ハンバーガメニュから**AutoML**をクリックしてください。 - - ![画面ショット1-1](img23.png) + ![画面ショット1-1](img15.png) + ![画面ショット1-1](img16.png) 1. **+作成ボタン**をクリックしてください。 - ![画面ショット1-1](img24.png) + ![画面ショット1-1](img17.png) 1. 名前に**Titanic Prediciton**と入力後、**データ・ソース**をクリックして下さい。 - ![画面ショット1-1](img25.png) + ![画面ショット1-1](img18.png) -1. ポップアップ画面で、スキーマには**OML**、表には**TRAIN**を選択した状態で**OKを**クリックしてください。 +1. ポップアップ画面で、スキーマは**OML**、表は**TRAIN**を選択した状態で**OK**をクリックしてください。 - ![画面ショット1-1](img26.png) + ![画面ショット1-1](img19.png) 1. 予測で**Survived**を目的変数として選択し、予測タイプが**分類**になっていることを確認後、**開始 > より良い精度**をクリックして下さい。 - ![画面ショット1-1](img27.png) + ![画面ショット1-1](img20.png) 1. 予測モデルが自動で作成されるのを待ちましょう。画面右側のポップアップで**進捗**を確認できます。 - ![画面ショット1-1](img28.png) + ![画面ショット1-1](img21.png) -1. 予測モデルが5つ自動で作成されました。後で使えるように、**モデル名を1つコピーして任意の場所にペースト**しておきましょう。 +1. 予測モデルが数個自動で作成されました。後で使えるように、**モデル名を1つコピーして任意の場所にペースト**しておきましょう。 - ![画面ショット1-1](img29.png) + ![画面ショット1-1](img22.png) - (例)モデル名 : **SVMG_FBC6D30E68** + (例)モデル名 : **SVMG_E9D51544B5**
# 4. OML Notebookで予測をかける -1. 画面左上の**ハンバーガメニュ**をクリックしてください。 - - ![画面ショット1-1](img40.png) - +1. 画面左上の**ハンバーガーメニュー**をクリックし、**ノートブック**をクリックしてください。 -1. ハンバーガメニュから**ノートブック**をクリックしてください。 - - ![画面ショット1-1](img41.png) + ![画面ショット1-1](img23.png) 1. ノートブックの画面で、**インポート**をクリックして下さい。**Titanic_OML_Notebook.json**を端末から選択してください。 - ![画面ショット1-1](img42.png) + ![画面ショット1-1](img24.png) -1. ノートブックの画面で、インポートした**ノートブック名を**クリックして、ノートブックを開きます。 +1. ノートブックの画面で、インポートした**ノートブック名**をクリックして、ノートブックを開きます。 - ![画面ショット1-1](img43.png) + ![画面ショット1-1](img25.png) 1. こちらが開いたノートブックの中身になります。下にスクロールして、**未知のデータであるTEST表に予測モデルを適応したVIEWを作成**という箇所に移動して下さい。 - ![画面ショット1-1](img44.png) + ![画面ショット1-1](img26.png) ↓ - ![画面ショット1-1](img45.png) + ![画面ショット1-1](img27.png) 1. 下記のSQL文の<モデル名>に、任意のペースト済みのAutoML UIで作成したモデル名をペーストした後、右上の再生ボタンをクリックしスクリプトを実行して下さい。 - ![画面ショット1-1](img46.png) + ![画面ショット1-1](img28.png) ``` CREATE OR REPLACE VIEW TITANIC_PREDICTION AS @@ -219,132 +214,113 @@ header: 1. 先ほど作成したVIEWを確認します。TITANIC_PREDICTIONビューの下のパラグラフ内の、**右上の再生ボタン**をクリックしスクリプトを実行して下さい。 - ![画面ショット1-1](img47.png) + ![画面ショット1-1](img29.png)
# 5. APEXで予測結果をレポート -1. Autonomous Databaseの詳細画面へ遷移し、**ツール > Oracle Application Express > APEXを開く**をクリックしてください。 +1. Autonomous Databaseの詳細画面へ遷移し、**ツール構成**のタブから、**Oracle APEX**のパブリック・アクセスURLをコピーしてください。 - ![画面ショット1-1](img50.png) + ![画面ショット1-1](img30.png) -1. まずはADMINユーザでログインします。**パスワード**を入力し、**Sign In to Administration**をクリックしてください。 +1. コピーしたURLをブラウザの別のタブから開きます。Oracle APEXの管理サービスにログインします。ADMINユーザーの**パスワード**を入力し、**管理にサインイン**をクリックしてください。 - ![画面ショット1-1](img51.png) + ![画面ショット1-1](img31.png) -1. OMLユーザのためにワークスペースを作成します。**Create Workspace**をクリックしてください。 +1. OMLユーザのためにワークスペースを作成します。**ワークスペースの作成**をクリックし、**新規のスキーマ**を選択します。 - ![画面ショット1-1](img52.png) + ![画面ショット1-1](img32.png) + + ![画面ショット1-1](img33.png) -1. Database Userには**OML**、Workspace Nameにも**OML**を入力し、**Create Workspace**をクリックしてください。 +1. データベース・ユーザーには**OML**、ワークスペース名にも**OML**を入力し、ワークススペース・ユーザー名には**WSUSER**、パスワード(例:Welcome12345#)を入力し、**ワークスペースの作成**をクリックしてください。 - ![画面ショット1-1](img53.png) + ![画面ショット1-1](img34.png) 1. OMLユーザのためのワークスペースが作成されました。画面右上からADMINユーザを**サインアウト**してください。 - ![画面ショット1-1](img54.png) - -1. OMLユーザとしてAPEXに**サインイン**します。Workspace Nameには**OML**、ユーザ名**OML**、**パスワード**を入力し、**Sign In**をクリックしてください。 - - ![画面ショット1-1](img55.png) - -1. OMLユーザでサインインできました。最初のサインイン後APEX用のパスワードの設定を求められます。**Set APEX Account Password**をクリックしてください。 - - ![画面ショット1-1](img56.png) - -1. Email Addressに**任意のメールアドレス**を入力します。 - ![画面ショット1-1](img57.png) +1. OMLユーザとしてAPEXに**サインイン**します。ワークスペース名には**OML**、ユーザー名**WSUSER**、**パスワード**を入力し、**サインイン**をクリックしてください。 -1. Passwordの箇所を**ブランク**にしたまま、**Apply Changes**をクリックするとOMLユーザのパスワードをそのままAPEXのパスワードにすることができます。 + ![画面ショット1-1](img35.png) - ![画面ショット1-1](img58.png) +1. **アプリケーション・ビルダー**をクリックします。 -1. **App Builder**をクリックします。 + ![画面ショット1-1](img36.png) - ![画面ショット1-1](img59.png) +1. **インポート*をクリックします。 -1. **Import**をクリックします。 + ![画面ショット1-1](img37.png) - ![画面ショット1-1](img60.png) +1. **ドラッグ・アンド・ドロップ**をクリックし、端末から**Titanic_APEX_App.sql**を選択してください。**次**をクリックします。 -1. **Drag and Drop**をクリックし、端末から**Titanic_APEX_App.sql**を選択してください。 + ![画面ショット1-1](img38.png) - ![画面ショット1-1](img61.png) +1. **アプリケーションのインストール**をクリックします。 -1. **Next**をクリックします。 + ![画面ショット1-1](img39.png) - ![画面ショット1-1](img62.png) +1. アプリケーションがインストールされました。インストールしただけでは、アプリケーションに対する権限がOMLユーザにはないので、付与していきます。**アプリケーションの編集**をクリックしてください。 -1. **Next**をクリックします。 - - ![画面ショット1-1](img63.png) - -1. **Install Application**をクリックします。 - - ![画面ショット1-1](img64.png) - -1. アプリケーションがインストールされました。インストールしただけでは、アプリケーションに対する権限がOMLユーザにはないので、付与していきます。**Edit Application**をクリックしてください。 - - ![画面ショット1-1](img65.png) + ![画面ショット1-1](img40.png) -1. **Shared Components**をクリックします。 +1. **共有コンポーネント**をクリックします。 - ![画面ショット1-1](img66.png) + ![画面ショット1-1](img41.png) -1. **Application Access Control**をクリックします。 +1. **アプリケーション・アクセス制御**をクリックします。 - ![画面ショット1-1](img67.png) + ![画面ショット1-1](img42.png) -1. **Add User Role Assingment**をクリックします。 +1. **ユーザー・ロール割当ての追加**をクリックします。 - ![画面ショット1-1](img68.png) + ![画面ショット1-1](img43.png) -1. User Nameには**OML**、Application Roleの**Administratorをチェック**し、**Create Assignment**をクリックしてください。 +1. ユーザー名には**WSUSER**、アプリケーション・ロールの**Administratorをチェック**し、**割当ての作成**をクリックしてください。 - ![画面ショット1-1](img69.png) + ![画面ショット1-1](img44.png) -1. OMLユーザにAdministratorが付与されたのを確認し、画面右上の**再生ボタン**をクリックし、アプリケーションを実行します。 +1. OMLユーザーにAdministratorが付与されたのを確認し、画面右上の三角の**実行ボタン**をクリックし、アプリケーションを実行します。 - ![画面ショット1-1](img70.png) + ![画面ショット1-1](img45.png) -1. アプリケーションにOMLユーザで**サインイン**します。 +1. アプリケーションにWSUSERユーザーで**サインイン**します。 - ![画面ショット1-1](img71.png) + ![画面ショット1-1](img46.png) -1. アプリケーションのランディングページでは、OML Notebookで作成したView(TITANIC_PREDICTION)を表示しています。画面左上の**ハンバーガメニュ**をクリックしてください。 +1. アプリケーションのランディングページでは、OML Notebookで作成したView(TITANIC_PREDICTION)を表示しています。画面左上の**ハンバーガーメニュー**をクリックしてください。 - ![画面ショット1-1](img72.png) + ![画面ショット1-1](img47.png) 1. **Editable Titanic Dataset**をクリックしてください。 - ![画面ショット1-1](img73.png) + ![画面ショット1-1](img48.png) 1. このページでは、タイタニックのデータセットの一つであるTEST表を表示しています。画面左上の**新規データの登録**をクリックし、TEST表に新規データをインサートしていきましょう。 - ![画面ショット1-1](img74.png) + ![画面ショット1-1](img49.png) -1. 任意の情報を入力後、**新規作成ボタン**をクリックしてください。 +1. 任意の情報を入力後、**新規作成**ボタンをクリックしてください。 - ![画面ショット1-1](img75.png) + ![画面ショット1-1](img50.png) 1. 新規データがTEST表にインサートされました。 - ![画面ショット1-1](img76.png) + ![画面ショット1-1](img51.png) 1. 検索バーから**新規データを検索**することができます。 - ![画面ショット1-1](img77.png) + ![画面ショット1-1](img52.png) 1. 画面左上の**ハンバーガメニュ**から**Home**をクリックしてください。 - ![画面ショット1-1](img78.png) + ![画面ショット1-1](img53.png) 1. ランディングページのViewでも**即座に新規データに対する予測**がかかっているはずです。検索バーから新規データの検索、**予測結果の確認**を行うことができます。 - ![画面ショット1-1](img79.png) + ![画面ショット1-1](img54.png)
diff --git a/tutorials/_adb/adb107-machine-learning/img0.png b/tutorials/_adb/adb107-machine-learning/img0.png index 867c3feccf..6fe9d4d81b 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img0.png and b/tutorials/_adb/adb107-machine-learning/img0.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img1.png b/tutorials/_adb/adb107-machine-learning/img1.png new file mode 100644 index 0000000000..0e58c42e85 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img1.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img10.png b/tutorials/_adb/adb107-machine-learning/img10.png index 9ae8cd7174..9ac5ce095d 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img10.png and b/tutorials/_adb/adb107-machine-learning/img10.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img11.png b/tutorials/_adb/adb107-machine-learning/img11.png index c4d5d9cbaa..2accd78e99 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img11.png and b/tutorials/_adb/adb107-machine-learning/img11.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img12.png b/tutorials/_adb/adb107-machine-learning/img12.png index 50ccbe9dd5..79acd42762 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img12.png and b/tutorials/_adb/adb107-machine-learning/img12.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img13.png b/tutorials/_adb/adb107-machine-learning/img13.png index 3386e7b0a3..fcf45525bb 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img13.png and b/tutorials/_adb/adb107-machine-learning/img13.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img14.png b/tutorials/_adb/adb107-machine-learning/img14.png index eeaad9c614..695c153201 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img14.png and b/tutorials/_adb/adb107-machine-learning/img14.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img15.png b/tutorials/_adb/adb107-machine-learning/img15.png index 9157d86296..93605f8ebf 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img15.png and b/tutorials/_adb/adb107-machine-learning/img15.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img16.png b/tutorials/_adb/adb107-machine-learning/img16.png new file mode 100644 index 0000000000..b9650c958b Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img16.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img17.png b/tutorials/_adb/adb107-machine-learning/img17.png new file mode 100644 index 0000000000..b40a0931d6 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img17.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img18.png b/tutorials/_adb/adb107-machine-learning/img18.png new file mode 100644 index 0000000000..4021f7a3b9 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img18.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img19.png b/tutorials/_adb/adb107-machine-learning/img19.png new file mode 100644 index 0000000000..344ceb2723 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img19.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img2.png b/tutorials/_adb/adb107-machine-learning/img2.png index 319ee96181..a28d4ba409 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img2.png and b/tutorials/_adb/adb107-machine-learning/img2.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img20.png b/tutorials/_adb/adb107-machine-learning/img20.png index 796e01c5b8..f1fadf9ccb 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img20.png and b/tutorials/_adb/adb107-machine-learning/img20.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img21.png b/tutorials/_adb/adb107-machine-learning/img21.png index 2f9f7e2861..4884656bbe 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img21.png and b/tutorials/_adb/adb107-machine-learning/img21.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img22.png b/tutorials/_adb/adb107-machine-learning/img22.png index 3381409e40..4c06607ce7 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img22.png and b/tutorials/_adb/adb107-machine-learning/img22.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img23.png b/tutorials/_adb/adb107-machine-learning/img23.png index 8f986a3410..64d6c225ac 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img23.png and b/tutorials/_adb/adb107-machine-learning/img23.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img24.png b/tutorials/_adb/adb107-machine-learning/img24.png index 7ab2881c0d..5727868f67 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img24.png and b/tutorials/_adb/adb107-machine-learning/img24.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img25.png b/tutorials/_adb/adb107-machine-learning/img25.png index b44ce6130f..e615114a05 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img25.png and b/tutorials/_adb/adb107-machine-learning/img25.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img26.png b/tutorials/_adb/adb107-machine-learning/img26.png index 3d9457bb3f..ddc7799e00 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img26.png and b/tutorials/_adb/adb107-machine-learning/img26.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img27.png b/tutorials/_adb/adb107-machine-learning/img27.png index 2adeddfaca..7a0fd8dc3e 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img27.png and b/tutorials/_adb/adb107-machine-learning/img27.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img28.png b/tutorials/_adb/adb107-machine-learning/img28.png index eac8b986df..47d455b560 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img28.png and b/tutorials/_adb/adb107-machine-learning/img28.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img29.png b/tutorials/_adb/adb107-machine-learning/img29.png index 5081fb7f9f..b42fd1d73b 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img29.png and b/tutorials/_adb/adb107-machine-learning/img29.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img3.png b/tutorials/_adb/adb107-machine-learning/img3.png index fc11bd01d1..b40029a2ad 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img3.png and b/tutorials/_adb/adb107-machine-learning/img3.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img30.png b/tutorials/_adb/adb107-machine-learning/img30.png new file mode 100644 index 0000000000..14bb0276c3 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img30.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img31.png b/tutorials/_adb/adb107-machine-learning/img31.png new file mode 100644 index 0000000000..239dc72709 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img31.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img32.png b/tutorials/_adb/adb107-machine-learning/img32.png new file mode 100644 index 0000000000..1a37cbf7e5 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img32.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img33.png b/tutorials/_adb/adb107-machine-learning/img33.png new file mode 100644 index 0000000000..352e371e23 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img33.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img34.png b/tutorials/_adb/adb107-machine-learning/img34.png new file mode 100644 index 0000000000..d0c825209f Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img34.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img35.png b/tutorials/_adb/adb107-machine-learning/img35.png new file mode 100644 index 0000000000..ae4697329e Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img35.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img36.png b/tutorials/_adb/adb107-machine-learning/img36.png new file mode 100644 index 0000000000..4ad194af7d Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img36.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img37.png b/tutorials/_adb/adb107-machine-learning/img37.png new file mode 100644 index 0000000000..ef6a7aff2b Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img37.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img38.png b/tutorials/_adb/adb107-machine-learning/img38.png new file mode 100644 index 0000000000..1e47e202c0 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img38.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img39.png b/tutorials/_adb/adb107-machine-learning/img39.png new file mode 100644 index 0000000000..050f31c88d Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img39.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img4.png b/tutorials/_adb/adb107-machine-learning/img4.png index 7a0d22dfe9..8d7dac28b2 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img4.png and b/tutorials/_adb/adb107-machine-learning/img4.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img40.png b/tutorials/_adb/adb107-machine-learning/img40.png index 093def327e..91fbb397a3 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img40.png and b/tutorials/_adb/adb107-machine-learning/img40.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img41.png b/tutorials/_adb/adb107-machine-learning/img41.png index a4796fb97b..6dc0be6723 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img41.png and b/tutorials/_adb/adb107-machine-learning/img41.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img42.png b/tutorials/_adb/adb107-machine-learning/img42.png index 42c0677aa7..1b0c07123b 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img42.png and b/tutorials/_adb/adb107-machine-learning/img42.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img43.png b/tutorials/_adb/adb107-machine-learning/img43.png index 13c653cdc7..e6b2fbcc1b 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img43.png and b/tutorials/_adb/adb107-machine-learning/img43.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img44.png b/tutorials/_adb/adb107-machine-learning/img44.png index 428347a8a9..caa0fac625 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img44.png and b/tutorials/_adb/adb107-machine-learning/img44.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img45.png b/tutorials/_adb/adb107-machine-learning/img45.png index 899b5a4cdc..a583d5fa03 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img45.png and b/tutorials/_adb/adb107-machine-learning/img45.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img46.png b/tutorials/_adb/adb107-machine-learning/img46.png index 130d4acf67..e619ca67bf 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img46.png and b/tutorials/_adb/adb107-machine-learning/img46.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img47.png b/tutorials/_adb/adb107-machine-learning/img47.png index c8d82f1171..e5914d35b1 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img47.png and b/tutorials/_adb/adb107-machine-learning/img47.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img48.png b/tutorials/_adb/adb107-machine-learning/img48.png new file mode 100644 index 0000000000..e17ebf093e Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img48.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img49.png b/tutorials/_adb/adb107-machine-learning/img49.png new file mode 100644 index 0000000000..98ffa6af0b Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img49.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img5.png b/tutorials/_adb/adb107-machine-learning/img5.png index f30eae2e5a..56ec8b5b3b 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img5.png and b/tutorials/_adb/adb107-machine-learning/img5.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img50.png b/tutorials/_adb/adb107-machine-learning/img50.png index bdb27e0545..3575e8fc8c 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img50.png and b/tutorials/_adb/adb107-machine-learning/img50.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img51.png b/tutorials/_adb/adb107-machine-learning/img51.png index 18c4274e32..dd965d4abb 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img51.png and b/tutorials/_adb/adb107-machine-learning/img51.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img52.png b/tutorials/_adb/adb107-machine-learning/img52.png index 0cc433ac48..20a0e10993 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img52.png and b/tutorials/_adb/adb107-machine-learning/img52.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img53.png b/tutorials/_adb/adb107-machine-learning/img53.png index e2ad8ac1ab..18d7b44de2 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img53.png and b/tutorials/_adb/adb107-machine-learning/img53.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img54.png b/tutorials/_adb/adb107-machine-learning/img54.png index a6b3d48c7c..498466ad53 100644 Binary files a/tutorials/_adb/adb107-machine-learning/img54.png and b/tutorials/_adb/adb107-machine-learning/img54.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img6.png b/tutorials/_adb/adb107-machine-learning/img6.png new file mode 100644 index 0000000000..f43b196e0d Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img6.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img7.png b/tutorials/_adb/adb107-machine-learning/img7.png new file mode 100644 index 0000000000..35b6d87753 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img7.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img8.png b/tutorials/_adb/adb107-machine-learning/img8.png new file mode 100644 index 0000000000..377034530a Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img8.png differ diff --git a/tutorials/_adb/adb107-machine-learning/img9.png b/tutorials/_adb/adb107-machine-learning/img9.png new file mode 100644 index 0000000000..95f1d77fa0 Binary files /dev/null and b/tutorials/_adb/adb107-machine-learning/img9.png differ diff --git a/tutorials/_adb/adb109-private-endpoint.md b/tutorials/_adb/adb109-private-endpoint.md index 05f804cd14..3c702dd616 100644 --- a/tutorials/_adb/adb109-private-endpoint.md +++ b/tutorials/_adb/adb109-private-endpoint.md @@ -23,14 +23,17 @@ Autonomous Databaseでは、パブリック・エンドポイントとプライ **目次** -- [1. プライベート・エンドポイントのADBへの接続](#anchor1) - - [1-1. ネットワーク構成図の確認](#anchor1-1) - - [1-2. ADBの作成](#anchor1-2) - - [1-3. ADBへの接続](#anchor1-3) -- [2. Database Actionsへの接続](#anchor2) - - [2-1. パブリック・エンドポイントでACLを定義している](#anchor2-1) - - [2-2. プライベート・エンドポイントでInternetから接続](#anchor2-2) - - [2-3. プライベート・エンドポイントでプライベート・ネットワークから接続](#anchor2-3) +- [はじめに](#はじめに) +- [1. プライベート・エンドポイントのADBへの接続](#1-プライベートエンドポイントのadbへの接続) + - [1-1. ネットワーク構成の確認](#1-1-ネットワーク構成の確認) + - [1-2. ADBの作成](#1-2-adbの作成) + - [1-3. ADBへの接続](#1-3-adbへの接続) + - [1-4. パブリック・アクセスの許可](#1-4-パブリックアクセスの許可) +- [2. Database Actionsへの接続](#2-database-actionsへの接続) + - [2-1. パブリック・エンドポイントでACLを定義済み](#2-1-パブリックエンドポイントでaclを定義済み) + - [2-2. プライベート・エンドポイントでInternetから接続](#2-2-プライベートエンドポイントでinternetから接続) + - [2-3. プライベート・エンドポイントでプライベート・ネットワークから接続](#2-3-プライベートエンドポイントでプライベートネットワークから接続) +- [参考資料](#参考資料)
@@ -78,7 +81,74 @@ Autonomous Databaseでは、パブリック・エンドポイントとプライ ![adb-access.png](adb-access.png)
+ +## 1-4. パブリック・アクセスの許可 +プライベート・エンドポイントのADBでは、パブリック・アクセスを許可するオプションがあります。このオプションを使用すると、パブリック・エンドポイントが追加され、アクセス制御リストで許可されたパブリックIP、CIDR、VCNから接続することができるようになります。 + +プライベート・エンドポイントで作成済みのADBにパブリック・アクセスを許可するには、ADBのネットワーク・アクセスを更新します。 + +ADBの作成ページの[ネットワーク・アクセスの更新]をクリックします。 + +![publicaccess1.png](publicaccess1.png) + +[パブリック・アクセスを許可]ボタンをクリックします。 + +![publicaccess2.png](publicaccess2.png) + +IPアドレス、CIDRブロック、VCN名、VCNのOCIDを指定して、アクセス許可を行います。今回はADBが配置されているVCNとは異なるVCN内にあるコンピュート・インスタンスのパブリックIPを指定します。 + +このとき接続用のウォレットにパブリック・エンドポイントにアクセスする接続文字列が追加されるので、確認してみます。 +ウォレットのダウンロード方法は[こちら](https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/#1-%E3%82%AF%E3%83%AC%E3%83%87%E3%83%B3%E3%82%B7%E3%83%A3%E3%83%AB%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89){:target="_blank"}をご参照ください。 + +以下にように*DB名_public_コンシューマグループ*が追加されています。 + +```sh +atprd01_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) +atprd01_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) +atprd01_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) +atprd01_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) +atprd01_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) +atprd01_public_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) +atprd01_public_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) +atprd01_public_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) +atprd01_public_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) +atprd01_public_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) +``` + +ウォレットを使った接続の場合、上記のように更新されたウォレットを再ダウンロードし、**atprd01_public_tp**などの追加された接続サービスで接続すればパブリック・アクセスが可能になります。 + +ウォレットを使わない接続の場合、OCIコンソールの[データベース接続]をクリックしパブリック・アクセス用の接続文字列を取得します。 + +![publicaccess3.png](publicaccess3.png) + +[TLS認証]を**TLS**とし、[アクセス]を**パブリック・エンドポイント**とすると、**atprd01_public_tp**などの接続サービスの接続文字列が表示されるので、そのうちの1つをコピーします。 + +![publicaccess4.png](publicaccess4.png) + +先ほどアクセス許可したパブリックIPのインスタンスから、SQLclで以下のように接続してみます。 + +```sql +sql admin/Welcome12345#@"(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxx_atprd01_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))" +``` + +```sh +SQLcl: Release 24.1 Production on Sun Aug 04 06:16:29 2024 + +Copyright (c) 1982, 2024, Oracle. All rights reserved. + +Last Successful login time: Sun Aug 04 2024 06:17:12 +00:00 + +Connected to: +Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production +Version 19.24.0.1.0 + +SQL> +``` + +無事パブリック・アクセスができました。 + +
# 2. Database Actionsへの接続 @@ -123,6 +193,34 @@ ACLを更新後、OCIコンソール画面からアクセスできるように また、OCIのBastion Serviceを使用してアクセスすることもできます。 詳しい手順は、[こちらの記事](https://qiita.com/500InternalServerError/items/d09dc910c9f115035225){:target="_blank"}をご参照ください。 +[こちら](#1-4-パブリックアクセスの許可)でパブリック・アクセスを許可している場合、Database ActionsなどのADB付属ツールへパブリック・アクセスが可能です。 + +パブリック・アクセスを許可している場合、各ツールのアクセスURLがプライベートとパブリックの2種類表示されます。 + +![publicaccess5.png](publicaccess5.png) + +例えばローカルからDatabase Actionsへパブリック・アクセスしてみます。 + +ADBの詳細画面の[ネットワーク]の**パブリック・アクセス**の編集ボタンをクリックします。 + +![publicaccess6.png](publicaccess6.png) + +**アクセス制御ルールの追加**をクリックし、**自分のIPアドレスを追加**をクリックします。現在ローカルで使用しているIPが追加されます。 + +![publicaccess7.png](publicaccess7.png) + +これでローカルからADBのパブリック・エンドポイントへのアクセスが許可されました。 + +パブリック・アクセスを許可すると、ADBの詳細画面の**データベース・アクション**が以下のような表示になっています。このような表示になっておらず、クリックしてもプライベートIPでのアクセスURLしか表示されない場合は少し時間を置くか、ブラウザのリフレッシュを行ってください。クリックするとパブリック・エンドポイントのデータベース・アクションが起動します。 + +![publicaccess8.png](publicaccess8.png) + +このようにデータベース・アクションの起動パッド画面になりました。 + +![publicaccess9.png](publicaccess9.png) + +このようにプライベート・エンドポイントのADBでも、ローカルのIPをアクセス制御リストで許可することで、データベース・アクションへパブリック・アクセスすることができます。 +
diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess1.png b/tutorials/_adb/adb109-private-endpoint/publicaccess1.png new file mode 100644 index 0000000000..345effa853 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess1.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess10.png b/tutorials/_adb/adb109-private-endpoint/publicaccess10.png new file mode 100644 index 0000000000..c399425a08 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess10.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess2.png b/tutorials/_adb/adb109-private-endpoint/publicaccess2.png new file mode 100644 index 0000000000..ba983cd360 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess2.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess3.png b/tutorials/_adb/adb109-private-endpoint/publicaccess3.png new file mode 100644 index 0000000000..628c7f2c43 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess3.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess4.png b/tutorials/_adb/adb109-private-endpoint/publicaccess4.png new file mode 100644 index 0000000000..91e1a9c354 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess4.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess5.png b/tutorials/_adb/adb109-private-endpoint/publicaccess5.png new file mode 100644 index 0000000000..e206ca6db5 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess5.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess6.png b/tutorials/_adb/adb109-private-endpoint/publicaccess6.png new file mode 100644 index 0000000000..522f0aac00 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess6.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess7.png b/tutorials/_adb/adb109-private-endpoint/publicaccess7.png new file mode 100644 index 0000000000..1585058b43 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess7.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess8.png b/tutorials/_adb/adb109-private-endpoint/publicaccess8.png new file mode 100644 index 0000000000..3cda96fd64 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess8.png differ diff --git a/tutorials/_adb/adb109-private-endpoint/publicaccess9.png b/tutorials/_adb/adb109-private-endpoint/publicaccess9.png new file mode 100644 index 0000000000..c399425a08 Binary files /dev/null and b/tutorials/_adb/adb109-private-endpoint/publicaccess9.png differ diff --git a/tutorials/_adb/adb110-analyze-using-oad/img2_3.png b/tutorials/_adb/adb110-analyze-using-oad/img2_3.png index f349604982..b240bb7ae9 100644 Binary files a/tutorials/_adb/adb110-analyze-using-oad/img2_3.png and b/tutorials/_adb/adb110-analyze-using-oad/img2_3.png differ diff --git a/tutorials/_adb/adb201-service-names/img1_2.png b/tutorials/_adb/adb201-service-names/img1_2.png index eb89ffa41d..94a421fa63 100644 Binary files a/tutorials/_adb/adb201-service-names/img1_2.png and b/tutorials/_adb/adb201-service-names/img1_2.png differ diff --git a/tutorials/_adb/adb203-bulk-query.md b/tutorials/_adb/adb203-bulk-query.md index 2f4bd8a0a2..dad0b23529 100644 --- a/tutorials/_adb/adb203-bulk-query.md +++ b/tutorials/_adb/adb203-bulk-query.md @@ -1,6 +1,6 @@ --- title: "203: 分析系クエリの実行(Star Schema Benchmark)" -excerpt: "ADBインスタンスにデフォルトで入っているDWH系・分析系のサンプルスキーマ(SHやSSB)に対して、重いSQLを実行し、ECPU数別にその処理時間の違いを体感して頂きます。" +excerpt: "ADBインスタンスにデフォルトで入っているDWH系・分析系のサンプルスキーマ(SHやSSB)に対して、重いSQLを実行し、OCPU数別にその処理時間の違いを体感して頂きます。" order: "3_203" layout: single header: @@ -16,7 +16,7 @@ header: この章ではAutonomous Databaseにおける分析系クエリの性能を確認します。 -特に、インスタンスのECPU数を増やした前後でのパフォーマンスを比較することで、簡単に性能が向上することをみていきます。 +特に、インスタンスのOCPU数を増やした前後でのパフォーマンスを比較することで、簡単に性能が向上することをみていきます。 また、SQLの実行状況を確認するために、サービス・コンソールを操作いただきます。 @@ -25,9 +25,9 @@ header: - [1. SSBスキーマを確認しよう](#anchor1) - [データ・モデラーによる構成確認](#anchor1-1) - [各表の件数確認](#anchor1-2) -- [2. ECPU数の違いによる処理時間の差を確認しよう](#anchor2) - - [ECPU=2の場合](#anchor2-1) - - [ECPU=8の場合](#anchor2-2) +- [2. OCPU数の違いによる処理時間の差を確認しよう](#anchor2) + - [OCPU=1の場合](#anchor2-1) + - [OCPU=8の場合](#anchor2-2) - [3. 性能調査に使えるツールのご紹介](#anchor3) - [データベース・ダッシュボード](#anchor3-1) - [パフォーマンス・ハブ](#anchor3-2) @@ -49,12 +49,12 @@ ADBのインスタンスには、DWH系・分析系のサンプルスキーマ + マニュアルには動作確認用のサンプルSQLも記載されている + ADW、ATPの双方で利用可能(2022/10時点)- 本ガイドでは前の章で作成したAutonomous Transaction Processing(ATP) インスタンスの利用を前提に記載していますが、SSBのような分析系・DWH系のアプリケーションの場合、Autonomous Data Warehouse(ADW) をご選択いただくことを推奨しています。 -※サンプルスキーマの詳細については[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/autonomous-sample-data.html#GUID-4BB2B49B-0C20-4E38-BCC7-A61D3F45390B)を参照ください。 +※サンプルスキーマの詳細については[こちら](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-sample-data.html)を参照ください。 **作業の流れ** + SSBスキーマを確認しよう -+ ECPU数の違いによる処理時間の差を確認しよう ++ OCPU数の違いによる処理時間の差を確認しよう + サービスコンソール/SQL Monitorで処理内容を確認しよう
@@ -156,18 +156,18 @@ ADBのインスタンスには、DWH系・分析系のサンプルスキーマ 以上でSSBスキーマの構成、および各表に含まれる件数が確認できました。DWHとして理想的なスター・スキーマで構成されており、データサイズとしても比較的規模の大きな構成であることがご確認いただけたかと思います。 - 次は、ECPU数を変えて、同じSQL文を実行することで、処理の違いを体験していきましょう。 + 次は、OCPU数を変えて、同じSQL文を実行することで、処理の違いを体験していきましょう。
-# 2. ECPU数の違いによる処理時間の差を確認しよう +# 2. OCPU数の違いによる処理時間の差を確認しよう - 次にもう少し複雑なクエリを実行してみます。ECPU数を変えることで、高速に処理できることを確認していきましょう。 + 次にもう少し複雑なクエリを実行してみます。OCPU数を変えることで、高速に処理できることを確認していきましょう。 次のクエリをコピーして、Database Actionsのワークシートに貼り付けて実行してみましょう。 -
すべてのECPU数で同じクエリを実行します。 +
すべてのOCPU数で同じクエリを実行します。 ```sql SELECT @@ -193,43 +193,43 @@ ADBのインスタンスには、DWH系・分析系のサンプルスキーマ P_BRAND1; ``` - 本編ではECPU=2および8の場合を記載しておりますが、ぜひECPU=4や16と変更し、ECPUが大きくなればElaped Timeが短くなることをご確認ください。 + 本編ではOCPU=1および8の場合を記載しておりますが、ぜひOCPU=2,4,6と細かく変更し、OCPUが大きくなればElaped Timeが短くなることをご確認ください。 > **注意** > - > ここではECPU数を段階的に増やし、性能が向上することをご確認いただきますが、クレジット消費も比例して大きくなりますので、ご注意ください。 + > ここではOCPU数を段階的に増やし、性能が向上することをご確認いただきますが、クレジット消費も比例して大きくなりますので、ご注意ください。 > > **補足** > > Autonomous Databaseのマニュアルでは、上に記載しているサンプルSQL以外にも動作確認用のサンプルSQLをご用意しております。 - > [こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/sample-queries.html#GUID-431A16E8-4C4D-4786-BE5C-30029AC1EFD8)を参照ください。 + > [こちら](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/sample-queries.html)を参照ください。 >
-## ECPU=2の場合 +## OCPU=1の場合 1. 画面右上の接続サービスを**LOW**から**MEDIUM**に変更し、以下のスクリプトを実行します。 - 現在のECPU数は、**2**です。 + 現在のOCPU数は、**1**です。 - ![画面ショット1-1](img5_new2.png) + ![画面ショット1-1](img5_new.png) - 処理にかかった時間は、**00:01:24.915**でした。 + 処理にかかった時間は、**00:01:30.110**でした。
-## ECPU=8の場合 +## OCPU=8の場合 -1. ここでATPの詳細画面に遷移し、**スケール・アップ/ダウン**を選択してください。ECPU数をスケールさせていきます。 +1. ここでATPの詳細画面に遷移し、**スケール・アップ/ダウン**を選択してください。OCPU数をスケールさせていきます。 - ![画面ショット1-1](img6_new.png) + ![画面ショット1-1](img6.jpg) > **注意** > @@ -237,22 +237,28 @@ ADBのインスタンスには、DWH系・分析系のサンプルスキーマ >
自動スケーリングは複数のクエリが同時に走っているときにその効果が発揮されます。今回のように1つのクエリを走らせる分には有効にしてもしなくても性能に影響はありません。 -1. ECPU数に**8**を入力し、**更新**をクリックしてください。 +1. OCPU数に**8**を入力し、**更新**をクリックしてください。 - ![画面ショット1-1](img7_new.png) + ![画面ショット1-1](img7.jpg) ATPの詳細画面で**スケールアップの完了**を確認後、Database Actionsの**SQLワークシート**に戻ります。 -1. 再度クエリを実行します。現在のECPU数は、**8**です。 +1. 画面右上の接続サービスを**MEDIUM**から**HIGH**に変更し、クエリを実行します。現在のOCPU数は、**8**です。 - ![画面ショット1-1](img8_new2.png) + > **NOTE** + > + > 重たいクエリの多いDWH系のシステムでは、単一SQLを複数のコアで処理できるパラレル・クエリーが効果的です。ここからは、割り当てられたOCPUを全て利用できる接続サービスであるHIGHを選択します。 + >
**MEDIUM**接続でもパラレル処理が可能ですが、同時実行性も担保するために利用できるOCPU数を**4**までに制限しているため、ここからは8OCPU以上を利用できる**HIGH**接続に切り替えてスケールアップの効果を確認します。 + + + ![画面ショット1-1](img8_new.png) - 処理にかかった時間は、**00:00:31.736**でした。 + 処理にかかった時間は、**00:00:12.698**でした。 -ここまでで、ECPU=2および8のときのElapsed Timeが確認できたと思います。
Autonomous Databaseでは利用可能なコア数だけでなく、割り当てメモリのサイズやIO帯域もECPU数に比例する形で増加します。今回試したDWH系のクエリは一般的に非常に多くのリソースを消費しますが、Autonomous Databaseでは必要に応じてECPU数を調整することで性能を担保することが可能です。 +ここまでで、OCPU=1および8のときのElapsed Timeが確認できたと思います。
Autonomous Databaseでは利用可能なコア数だけでなく、割り当てメモリのサイズやIO帯域もOCPU数に比例する形で増加します。今回試したDWH系のクエリは一般的に非常に多くのリソースを消費しますが、Autonomous Databaseでは必要に応じてOCPU数を調整することで性能を担保することが可能です。 > **NOTE** @@ -260,24 +266,33 @@ ADBのインスタンスには、DWH系・分析系のサンプルスキーマ >その他、ADBでは、パーティション やHCC圧縮、マテリアライド・ビューといったOracle Database / Exadata のパフォーマンスに寄与する各種オプションも追加費用なくご利用いただけます。 -次の表は、ECPU数を細かく増やしていったときのElapsed Timeをまとめたものです。 -
このようにECPUが大きくなれば性能が向上していることが分かります。 +次の表は、OCPU数を細かく増やしていったときのElapsed Timeをまとめたものです。 +
このようにOCPUが大きくなれば性能が向上していることが分かります。 -   +   - + - + + + + - + + + + - + + + +
接続サービスECPU数 Elapsed Time接続サービスOCPU数 Elapsed Time
MEDIUM 2 00:01:24.915MEDIUM 1 00:01:30.110
4 00:00:57.8072 00:00:58.209
4 00:00:27.212
8 00:00:31.736HIGH 8 00:00:12.698
16 00:00:08.113
16 00:00:17.40932 00:00:05.324
64 00:00:05.102
diff --git a/tutorials/_adb/adb203-bulk-query/img1.png b/tutorials/_adb/adb203-bulk-query/img1.png index 867c3feccf..3e47df6677 100644 Binary files a/tutorials/_adb/adb203-bulk-query/img1.png and b/tutorials/_adb/adb203-bulk-query/img1.png differ diff --git a/tutorials/_adb/adb203-bulk-query/img2.png b/tutorials/_adb/adb203-bulk-query/img2.png index 5ef9129205..f524e1a8d5 100644 Binary files a/tutorials/_adb/adb203-bulk-query/img2.png and b/tutorials/_adb/adb203-bulk-query/img2.png differ diff --git a/tutorials/_adb/adb203-bulk-query/img21.png b/tutorials/_adb/adb203-bulk-query/img21.png index 8b1d69277b..a545398d7f 100644 Binary files a/tutorials/_adb/adb203-bulk-query/img21.png and b/tutorials/_adb/adb203-bulk-query/img21.png differ diff --git a/tutorials/_adb/adb203-bulk-query/img40.png b/tutorials/_adb/adb203-bulk-query/img40.png index a695e86210..9e939f138f 100644 Binary files a/tutorials/_adb/adb203-bulk-query/img40.png and b/tutorials/_adb/adb203-bulk-query/img40.png differ diff --git a/tutorials/_adb/adb203-bulk-query/imgddd2.png b/tutorials/_adb/adb203-bulk-query/imgddd2.png new file mode 100644 index 0000000000..9e939f138f Binary files /dev/null and b/tutorials/_adb/adb203-bulk-query/imgddd2.png differ diff --git a/tutorials/_adb/adb204-setup-VM.md b/tutorials/_adb/adb204-setup-VM.md index 0a09c3d796..475849cb4a 100644 --- a/tutorials/_adb/adb204-setup-VM.md +++ b/tutorials/_adb/adb204-setup-VM.md @@ -70,11 +70,7 @@ Oracle Cloud Infrastructure(OCI) では様々な仮想マシンイメージ
イメージ:**`Oracle Linux Cloud Developer`**
**`イメージの変更`** をクリックし、**`Oracle Linux Cloud Developer`**にチェックを入れます。
![img1_3.png](img1_3.png) -
シェイプ:**`VM.Standard2.1(仮想マシン)`** -
**`シェイプの変更`** から変更します。 - * インスタンス・タイプ:**`仮想マシン`** - * シェイプ・シリーズ:**`Intel VM.Standard2.1`** -
![img1_5_2.png](img1_5_2.png) +
シェイプ:**`VM.Standard.E4.Flex(仮想マシン)`** * **`ネットワーキング`** * ネットワーク:どの仮想クラウド・ネットワーク(VCN)上に配置するかを指定します。 diff --git a/tutorials/_adb/adb208-oml-notebook.md b/tutorials/_adb/adb208-oml-notebook.md index d47fa08e5f..093149f931 100644 --- a/tutorials/_adb/adb208-oml-notebook.md +++ b/tutorials/_adb/adb208-oml-notebook.md @@ -4,8 +4,8 @@ excerpt: "Oracle Machine Learningで液体の品質の予測や、同時購入 order: "3_208" layout: single header: - teaser: "/adb/adb208-oml-notebook/img12.jpg" - overlay_image: "/adb/adb208-oml-notebook/img12.jpg" + teaser: "/adb/adb208-oml-notebook/img20.png" + overlay_image: "/adb/adb208-oml-notebook/img20.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://community.oracle.com/tech/welcome/discussion/4474261/ --- @@ -33,11 +33,10 @@ header: **目次** - [準備編](#anchor1) - - [OMLユーザを作成する](#anchor1-1) - - [作成したOMLユーザのRESTサービスを有効化する](#anchor1-2) - - [データセットをADBにロードする](#anchor1-3) - - [liquid.csvをDatabase Actionsからロード](#anchor1-3-1) - - [order_items.csvをObject Storageにアップロード](#anchor1-3-2) + - [OML用のユーザを作成する](#anchor1-1) + - [データセットをADBにロードする](#anchor1-2) + - [liquid.csvをDatabase Actionsからロード](#anchor1-2-1) + - [order_items.csvをObject Storageにアップロード](#anchor1-2-2) - [機械学習編](#anchor2) - [OML Notebookを使い始める](#anchor2-1) - [機械学習モデルをビルド・評価する](#anchor2-2) @@ -51,113 +50,76 @@ header: # 準備編 -## OMLユーザを作成する +## OML用のユーザを作成する -1. **ツール**タブの**Oracle MLユーザ管理**で、MLユーザを作成していきましょう。 +1. **Database Actions**から、MLユーザを作成していきましょう。 - ![image.png](img0.jpg) + ![image.png](img0.png) -1. ADBのADMINユーザの情報を入力し、**サインイン**をクリックして下さい。 +1. ADMINユーザーでDatabase Actionsにサインインできていることが確認できたら、**管理**から**データベース・ユーザー**をクリックします。 - ![image.png](img0.5.jpg)。。 + ![image.png](img1.png) -1. **+作成ボタン**をクリックし、機械学習用のユーザを作成します。 +1. 以下のように設定して**ユーザーの作成**をクリックし、機械学習用のユーザを作成します。 + * ユーザー名:**OMLUSER** + * パスワード:例:**Welcome12345#** + * 表領域の割り当て制限:**UNLIMITED** + * OML、Webアクセスのトグルを**ON** + ![image.png](img2.png) - ![image.png](img1.jpg) +1. ユーザーが作成されました。 -1. ユーザーの情報を入力し、画面右上**作成ボタン**をクリックして下さい。 + ![image.png](img3.png) - ![image.png](img2.jpg) +1. Database Actionからサインアウトします。 -1. ユーザOMLが作成されたことを確認し、ADW詳細画面へ戻ります。 + ![image.png](img4.png) - ![image.png](img3.jpg) - - -## 作成したOMLユーザのRESTサービスを有効化する - -後述のデータロードをステップで、OMLユーザでDatabase Actionsを活用していきます。 -OMLユーザーは作成後、RESTを有効化しないとDatabase Actionsにログインできないので、OMLユーザのRESTを有効化していきましょう。 - -1. [ADBインスタンスを作成しよう](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/)で学習した**Database Actionsを利用したインスタンスへの接続** を参照し、Database Actionsを起動し、Adminユーザーで接続してください。**ツール**タブから、**データベース・アクションを開く**をクリックしてください。 - - ![画面ショット1-1](img19.png) - -1. ADMINユーザで**サインイン**して下さい。 - - ![image.png](img40.png) - -1. Database Actionsのランディングページから**データベース・ユーザ** を選択します。 - - ![image.png](img41.png) - -1. 作成済の**OMLユーザ**を確認することができます。 - - ![image.png](img42.png) - -1. **OMLユーザ**の**オプションボタン**から**RESTの有効化**をクリックして下さい。 - - ![image.png](img43.png) - -1. **REST対応ユーザー**をクリックして下さい。 - - ![image.png](img44.png) +1. 作成済のOMLUSERユーザーで**サインイン**して下さい。 -1. **OMLユーザ**に**RESTの有効化の**マークを確認することができます。 - - - ![image.png](img45.png) - -1. 画面右上の**ADMIN**をクリックし表示されたドロップダウンメニュから、**サインアウト**をして下さい。 - - ![image.png](img46.png) - -1. 作成済のOMLユーザで**サインイン**して下さい。 - - ![image.png](img47.png) + ![image.png](img5.png)
- + ## データセットをADBにロードする - + ### liquid.csvをDatabase Actionsからロード -1. Database Actionsのランディングページのデータ・ツールから **データ・ロード** を選択します。 +1. Database Actionsの起動パッドの**Data Stusio**から、**データ・ロード** を選択します。 - ![image.png](img21.jpg) + ![image.png](img6.png) -1. データの処理には、**データのロード** を選択し、データの場所には、**ローカル・ファイル** を選択して **次** をクリックします。 +1. **データのロード** > **ローカル・ファイル** を選択します。**ファイルの選択**をクリックし、ダウンロードして解凍した **liquid.csv** を選択します。 - ![image.png](img22.jpg) -1. **ファイルの選択**をクリックし、ダウンロードして解凍した **liquid.csv** を選択します。 + ![image.png](img7.png) + ![image.png](img8.png) - ![image.png](img23.jpg) 1. liquid.csvがロードできる状態になりました。ロード前に**ペンアイコン**をクリックし、詳細設定を確認・変更できます。 - ![image.png](img24.jpg) + ![image.png](img9.png) 1. liquid.csvの表定義等のデータのプレビューを確認したら **閉じる** をクリックします。 - ![image.png](img25.jpg) + ![image.png](img10.png) -1. **緑色の実行ボタン**をクリックし、データのロードを開始します。 +1. **開始**をクリック後、ポップアップの**実行**をクリックし、データのロードを開始します。 - ![image.png](img26.jpg) + ![image.png](img11.png) 1. データ・ロード・ジョブの実行を確認するポップアップが表示されるので、**実行** をクリックします。 - ![image.png](img27.jpg) + ![image.png](img12.png) -1. liquid.csvに**緑色のチェックマーク**が付き、ロードが完了しました。**完了**をクリックします。 +1. liquid.csvのロードが完了しました。 - ![image.png](img28.jpg) + ![image.png](img13.png) @@ -165,7 +127,7 @@ OMLユーザーは作成後、RESTを有効化しないとDatabase Actionsにロ 1. [ADBインスタンスを作成しよう](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/)で学習した**オブジェクトストレージへのデータアップロード** を参照し、**order_items.csv**を**Object Storage**にアップロードして下さい。 - ![image.png](img29.jpg) + ![image.png](img14.png)
@@ -177,37 +139,25 @@ OMLユーザーは作成後、RESTを有効化しないとDatabase Actionsにロ ## OML Notebookを使い始める -1. ADW詳細画面の**サービス・コンソール**をクリックして下さい。 +1. ADB詳細画面の**ツール構成**タブから、OMLにアクセスするパブリック・アクセスURLをコピーし、別タブで開きます。 - ![image.png](img4.jpg) - -1. サービスコンソール画面左の**開発**をクリックして下さい。 - - ![image.png](img5.jpg) - -1. サービスコンソール開発タブ内の、**Oracle Machine Learningノートブック**をクリックして下さい。 - - ![image.png](img6.jpg) + ![image.png](img15.png) 1. 先ほどOMLユーザ管理で新規作成したユーザ(OML)で**サインイン**して下さい。 - ![image.png](img7.jpg) + ![image.png](img16.png) 1. クイック・アクションの**ノートブック**をクリックして下さい。 - ![image.png](img8.jpg) + ![image.png](img17.png) 1. 任意のノートブックの名前を入力後、**OK**をクリックして下さい。 - ![image.png](img9.jpg) + ![image.png](img18.png) -1. 新規作成した**ノートブック名**をクリックして下さい。 +1. ノートブックの画面に遷移します。 - ![image.png](img10.jpg) - -1. ノートブックの画面に遷移して下さい。 - - ![image.png](img11.jpg) + ![image.png](img19.png) 1. 作成したノートブックでスクリプトを書き始めることが可能になりました。 @@ -220,17 +170,17 @@ OMLユーザーは作成後、RESTを有効化しないとDatabase Actionsにロ oml.isconnected() ``` - ![image.png](img12.jpg) + ![image.png](img20.png) 下記のコマンドで、同じノートブック内でSQLを使用したLiquid表へのクエリを実行してみましょう。 ``` - %python + %sql select * from liquid; ``` - ![image.png](img50.jpg) + ![image.png](img21.png)
diff --git a/tutorials/_adb/adb208-oml-notebook/img0.png b/tutorials/_adb/adb208-oml-notebook/img0.png new file mode 100644 index 0000000000..726224cac1 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img0.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img1.png b/tutorials/_adb/adb208-oml-notebook/img1.png new file mode 100644 index 0000000000..5017fcbbee Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img1.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img10.png b/tutorials/_adb/adb208-oml-notebook/img10.png new file mode 100644 index 0000000000..1e8bceab89 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img10.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img11.png b/tutorials/_adb/adb208-oml-notebook/img11.png new file mode 100644 index 0000000000..dcf63fbe33 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img11.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img12.png b/tutorials/_adb/adb208-oml-notebook/img12.png new file mode 100644 index 0000000000..ed10448227 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img12.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img13.png b/tutorials/_adb/adb208-oml-notebook/img13.png new file mode 100644 index 0000000000..07677e19a3 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img13.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img14.png b/tutorials/_adb/adb208-oml-notebook/img14.png new file mode 100644 index 0000000000..f130b20809 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img14.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img15.png b/tutorials/_adb/adb208-oml-notebook/img15.png new file mode 100644 index 0000000000..f88081043c Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img15.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img16.png b/tutorials/_adb/adb208-oml-notebook/img16.png new file mode 100644 index 0000000000..656ff6f396 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img16.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img17.png b/tutorials/_adb/adb208-oml-notebook/img17.png new file mode 100644 index 0000000000..45c4eb6487 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img17.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img18.png b/tutorials/_adb/adb208-oml-notebook/img18.png new file mode 100644 index 0000000000..8403cfc037 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img18.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img19.png b/tutorials/_adb/adb208-oml-notebook/img19.png index 867c3feccf..ca2a5da99d 100644 Binary files a/tutorials/_adb/adb208-oml-notebook/img19.png and b/tutorials/_adb/adb208-oml-notebook/img19.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img2.png b/tutorials/_adb/adb208-oml-notebook/img2.png new file mode 100644 index 0000000000..e1ce314313 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img2.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img20.png b/tutorials/_adb/adb208-oml-notebook/img20.png new file mode 100644 index 0000000000..78eb6ef494 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img20.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img21.png b/tutorials/_adb/adb208-oml-notebook/img21.png new file mode 100644 index 0000000000..f39d86c3f4 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img21.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img3.png b/tutorials/_adb/adb208-oml-notebook/img3.png new file mode 100644 index 0000000000..b9d32bcc83 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img3.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img4.png b/tutorials/_adb/adb208-oml-notebook/img4.png new file mode 100644 index 0000000000..5290a2b22a Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img4.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img5.png b/tutorials/_adb/adb208-oml-notebook/img5.png new file mode 100644 index 0000000000..5b607890cb Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img5.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img6.png b/tutorials/_adb/adb208-oml-notebook/img6.png new file mode 100644 index 0000000000..70c73b03a1 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img6.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img7.png b/tutorials/_adb/adb208-oml-notebook/img7.png new file mode 100644 index 0000000000..6bf8931a35 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img7.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img8.png b/tutorials/_adb/adb208-oml-notebook/img8.png new file mode 100644 index 0000000000..1618a49049 Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img8.png differ diff --git a/tutorials/_adb/adb208-oml-notebook/img9.png b/tutorials/_adb/adb208-oml-notebook/img9.png new file mode 100644 index 0000000000..1b38f050fd Binary files /dev/null and b/tutorials/_adb/adb208-oml-notebook/img9.png differ diff --git a/tutorials/_adb/adb209-DV.md b/tutorials/_adb/adb209-DV.md index 418d582335..7463d78a59 100644 --- a/tutorials/_adb/adb209-DV.md +++ b/tutorials/_adb/adb209-DV.md @@ -26,12 +26,12 @@ Oracle Database Vaultの詳細については、[Oracle Database Vaultホーム 本文書では、Autonomous DatabaseでOracle Database Vaultを有効化し、特権ユーザであるADMINユーザが他のユーザのデータにアクセスできないように設定をしてみます。 **目次 :** -+ [1.テスト用の表を作成](#anchor1) -+ [2.Oracle Database Vaultの有効化](#anchor2) -+ [3.特権ユーザーの権限はく奪](#anchor3) -+ [4.アクセス制御の設定](#anchor4) -+ [5.動作確認](#anchor5) -+ [6.Oracle Database Vaultの無効化](#anchor6) ++ [1.テスト用の表を作成](#1テスト用の表を作成) ++ [2.Oracle Database Vaultの有効化](#2-oracle-database-vaultの有効化) ++ [3.特権ユーザーの権限はく奪](#3-特権ユーザーの権限はく奪) ++ [4.アクセス制御の設定](#4-アクセス制御の設定) ++ [5.動作確認](#5-動作確認) ++ [6.Oracle Database Vaultの無効化](#6-oracle-database-vaultの無効化) **前提条件 :** + テスト用の表を作成するスキーマは任意のスキーマでも構いませんが、ここでは、[「101:ADBインスタンスを作成してみよう」](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/) で作成したユーザADBUSERを利用しています。 @@ -44,8 +44,6 @@ Oracle Database Vaultの詳細については、[Oracle Database Vaultホーム
- - # 1.テスト用の表を作成 サンプルスキーマのSSBスキーマのSUPPLIER表の一部を利用して、[「101:ADBインスタンスを作成してみよう」](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/) で作成したADBUSERスキーマにテスト用の表を作成します。 @@ -74,7 +72,6 @@ SELECT COUNT(*) FROM adbuser.dv_supplier;
- # 2. Oracle Database Vaultの有効化 続けて、ADMINユーザでOracle Database Vaultを有効化するためのSQLを実行していきます。 @@ -119,7 +116,7 @@ EXEC DBMS_CLOUD_MACADM.ENABLE_DATABASE_VAULT; 有効化のコマンドが完了した後ログアウトし、Autonomous Databaseを再起動します。 Oracle Database Vaultの有効化、無効化を反映させるためにはAutonomous Databaseの再起動が必要なためです。 -管理コンソールで、「他のアクション」プルダウンメニューから「再起動」を選択してください。   +管理コンソールで、「More actions」プルダウンメニューから「再起動」を選択してください。   ![ADBコンソール画面](adb_console.png) @@ -146,7 +143,6 @@ SELECT * FROM dba_dv_status;
- # 3. 特権ユーザーの権限はく奪 特権ユーザであるADMINユーザはDatabase Vault所有者のロール(DV_OWNER)もアカウント管理専用ユーザのロール(DV_ACCTMGR)もデフォルトで持っています。 @@ -179,7 +175,6 @@ CREATE USER testuser IDENTIFIED BY "Welcome12345#";
- # 4. アクセス制御の設定 @@ -248,7 +243,7 @@ END;
- + # 5. 動作確認 では、設定が有効かADMINユーザとADBUSERユーザでADBUSERスキーマの表に再度アクセスしてみましょう。 @@ -280,7 +275,6 @@ Oracle Database Vaultの設定を行う前はADMINユーザはADBUSERユーザ
- # 6. Oracle Database Vaultの無効化 @@ -348,8 +342,9 @@ Oracle Database Vault で特権ユーザーであっても機密データにア
# 参考資料 -+ 『Using Oracle Autonomous Database on Shared Exadata Infrastructureutonomous Data Warehouse』 - "[Oracle Database VaultとAutonomous Databaseの使用](https://docs.oracle.com/cd/E83857_01/paas/autonomous-adb/adbsa/autonomous-database-vault.html)" ++ 『Oracle Autonomous Databaseサーバーレスの使用』 + "[Autonomous DatabaseでのOracle Database Vaultの使用](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/autonomous-database-vault.html#GUID-70F233AF-458F-44B7-9418-F9AF70CFDD15)" + + Oracle Database 19c 『[Oracle Database Vault管理者ガイド](https://docs.oracle.com/cd/F19136_01/dvadm/index.html )』 diff --git a/tutorials/_adb/adb209-DV/adb_console.png b/tutorials/_adb/adb209-DV/adb_console.png index 051dbf3dd4..0c84857097 100644 Binary files a/tutorials/_adb/adb209-DV/adb_console.png and b/tutorials/_adb/adb209-DV/adb_console.png differ diff --git a/tutorials/_adb/adb210-VPD.md b/tutorials/_adb/adb210-VPD.md index b21fe9b27b..9c377ae5b3 100644 --- a/tutorials/_adb/adb210-VPD.md +++ b/tutorials/_adb/adb210-VPD.md @@ -27,12 +27,12 @@ VPDはAutonomous Databaseでも利用できる機能です。基本的な設定 **目次 :** - + [1.テスト用の表を作成](#anchor1) - + [2.ユーザーを作成](#anchor2) - + [3.VPDファンクションの作成](#anchor3) - + [4.VPDファンクションをVPDポリシーとして適用](#anchor4) - + [5.動作確認](#anchor5) - + [6.VPDポリシーの削除](#anchor6) + + [1.テスト用の表を作成](#1-テスト用の表を作成) + + [2.ユーザーを作成](#2-ユーザを作成) + + [3.VPDファンクションの作成](#3-vpdファンクションの作成) + + [4.VPDファンクションをVPDポリシーとして適用](#4-vpdファンクションをvpdポリシーとして適用) + + [5.動作確認](#5-動作確認) + + [6.VPDポリシーの削除](#6-vpdポリシーの削除) **前提条件 :** @@ -45,7 +45,6 @@ VPDはAutonomous Databaseでも利用できる機能です。基本的な設定
- # 1. テスト用の表を作成 サンプルスキーマのSSBスキーマのCUSTOMER表の一部を利用して、[「101:ADBインスタンスを作成してみよう」](https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/) で作成したADBUSERスキーマにテスト用の表を作成します。 @@ -53,7 +52,7 @@ SQL*Plusを起動して以下を実行してください。 ```sql -- ADBUSERで接続する -CONNECT adbuser/Welcome12345##@atp01_low +CONNECT adbuser/Welcome12345#@atp01_low -- SSB.CUSTEOMER表から新しくVPD_CUSTOMER表を作成する CREATE TABLE adbuser.vpd_customer AS SELECT * FROM ssb.customer WHERE ROWNUM<10000; ``` @@ -78,16 +77,15 @@ SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region;
- # 2. ユーザを作成 ADMINユーザで接続し、ASIA担当のユーザをわかりやすくASIAという名前で作成します。 ```sql -- ADMINで接続する -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low -- ASIAユーザを作成する -CREATE USER asia IDENTIFIED by "Welcome12345##"; +CREATE USER asia IDENTIFIED by "Welcome12345#"; -- 接続するためのCONNECTロールとADBUSER.VPD_CUSTOMER表への参照権限を付与 GRANT CONNECT TO asia; GRANT SELECT ON adbuser.vpd_customer TO asia; @@ -97,7 +95,7 @@ ASIAユーザで接続してADBUSER.VPD_CUSTOMER表に対して、1と同じSQL ```sql -- ASIAで接続する -CONNECT asia/Welcome12345##@atp01_low +CONNECT asia/Welcome12345#@atp01_low -- リージョンごとの数を確認する SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ``` @@ -110,7 +108,6 @@ VPDの設定前はADBUSERと同じように全てのリージョンの情報が
- # 3. VPDファンクションの作成 SQLに付加する条件(Where句の内容)を戻すVPDファンクションを作成します。 @@ -121,7 +118,7 @@ SQLに付加する条件(Where句の内容)を戻すVPDファンクション ```sql --ADMINで接続する -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low --ファンクションを作成する CREATE OR REPLACE FUNCTION vpdfunc @@ -143,7 +140,6 @@ end;
- # 4. VPDファンクションをVPDポリシーとして適用 作成したファンクションををVPDポリシーとして対象のオブジェクト(表、ビューなど)に関連付けます。 @@ -154,7 +150,7 @@ ADMINユーザで接続し、以下を実行します。 ```sql -- ADMINで接続する -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low -- VPDポリシーを対象のオブジェクトに追加する BEGIN @@ -172,7 +168,6 @@ END;
- # 5. 動作確認 それでは実際にユーザー別に同じSQLで異なるデータが返ってくるかどうかを確認してみましょう。 @@ -186,7 +181,7 @@ SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ```sql --ADBUSERで接続する -CONNECT adbuser/Welcome12345##@atp01_low +CONNECT adbuser/Welcome12345#@atp01_low --確認 SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ``` @@ -202,7 +197,7 @@ SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ```sql --ASIAで接続する -CONNECT asia/Welcome12345##@atp01_low +CONNECT asia/Welcome12345#@atp01_low --確認 SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ``` @@ -217,7 +212,7 @@ ASIAだけの値が返されました。VPDの設定どおりの動作をした ```sql --ADMINユーザで接続 -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low --確認 SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region; ``` @@ -230,7 +225,6 @@ SELECT c_region,COUNT(*) FROM adbuser.vpd_customer GROUP BY c_region;
- # 6. VPDポリシーの削除 VPDポリシーの削除もDBMS_RLSパッケージを使用して行います。 @@ -238,7 +232,7 @@ ADMINユーザで以下を実行します。 ```sql -- ADMINで接続 -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low -- ポリシーを削除する BEGIN DBMS_RLS.DROP_POLICY( @@ -255,14 +249,14 @@ END;
# おわりに -このチュートリアルでは基本的な設定方法をお伝えするために簡単な例を用いましたが、VPDではファンクションでルールの記述を行うため、非常に柔軟で細やかなアクセス制御を実装させることが可能です。 +このチュートリアルでは基本的な設定方法をお伝えするために簡単な例を用いましたが、VPDではファンクションでルールの記述を行うため、柔軟で細やかなアクセス制御を実装させることが可能です。 + 例 + 人や時間、クライアント端末、アプリなどの様々なアクセス条件を設定 + オブジェクトだけでなく特定のSQL文タイプの指定(SELECT、INSERT、UPDATE、INDEX、DELETE) + 列の指定や列に対するマスク(NULL値として表示) -そのため、VPDを構成するときに最も重要な作業はアクセスのルールの設計、明確化となります。実環境でのご利用を検討されるときは、その点で抜け漏れがないか十二分にお気を付けください。 +そのため、VPDを構成するときに最も重要な作業はアクセスのルールの設計、明確化となります。実環境でのご利用を検討されるときは、その点で抜け漏れがないか十分ご注意ください。 以上でこの章は終了です。次の章にお進みください。 diff --git a/tutorials/_adb/adb211-clone.md b/tutorials/_adb/adb211-clone.md index 8ee63b7bad..547c16c086 100644 --- a/tutorials/_adb/adb211-clone.md +++ b/tutorials/_adb/adb211-clone.md @@ -1,6 +1,6 @@ --- title: "211: クローン機能を活用しよう" -excerpt: "ADBを簡単に複製することができる、クローニング機能についてご紹介します。" +excerpt: "ADBを簡単に複製することができる、クローン機能についてご紹介します。" order: "3_211" layout: single #header: @@ -11,317 +11,185 @@ layout: single -Autonomous Databaseのクローン機能を利用することにより、テスト/検証/分析用途の環境複製を、すぐに簡単に作成することができます。 -本章では、このクローン機能についてフォーカスしていきます。 + -**所要時間 :** 約20分 - -**前提条件 :** - -* ADBインスタンスが構成済みであること -
※ADBインタンスを作成方法については、本ハンズオンガイドの [101:ADBインスタンスを作成してみよう](/ocitutorials/adb/adb101-provisioning){:target="_blank"} を参照ください。 -* 構成済みのADBインスタンスへ接続できることが確認できていること - - - -**目次:** - -- [1. ADBにおけるクローニングの概要](#anchor1) -- [2. 事前準備](#anchor2) -- [3. クローン環境を作成してみよう](#anchor3) -- [4. クローン環境を確認してみよう](#anchor4) - -
+# はじめに - +Autonomous Databaseのクローン機能を利用することにより、テスト/検証/分析用途の環境を素早く簡単に作成することができます。 +ソース・データベースはオンライン、オフラインのどちらでも構わず、作成するクローンのタイプは次の3種類からの選択が可能です。 -# 1. ADBにおけるクローニングの概要 - -ADBのクローニング機能は、コンソールまたはAPIを使用して利用することができます。 -
クローニング機能を使用することで、テスト・開発・分析などの目的でADBの**ポイントインタイム・コピー**を作成できます。 - - -ADBのクローンを作成する際には、**クローンタイプ**、**クローン元のソースの選択**、**クローンのスペックや配置場所の決定**などを行う必要があります。 -
各項目で設定する内容を順にご紹介します。 - -* **クローンタイプ**について - - * **フルクローン**:データベース全体の複製 -
ソース・データベースの**メタデータとデータ**を含むデータベースが作成されます。 - - * **メタデータ・クローン**:データベースのメタデータのみの複製 -
このオプションでは、ソース・データベースのメタデータのみを含むデータベースが作成されます。 -
メタデータ・クローンでは、格納されるデータはコピーしませんが、表定義や索引定義といったスキーマ定義、オブジェクト構成を引き継ぐクローンを作成します。 - メタデータのみをコピーし、データはサンプルデータなどに置き換えることでECPU数やストレージの使用を抑え、コストを削減することができます。 - - * **リフレッシュ可能クローン**:更新可能なクローンの作成 -
ソース・データベースの変更を使用して、簡単に更新できるクローンが作成されます。 -
クローンを作成後にソース・データベースの任意の時間の状態に更新することができるクローンです。 -
任意の時間の状態に更新するには、バックアップから新しいクローンを作成するという方法もありますが、バックアップからデータをリストアする時間が必要であったり、新しいデータベースをプロビジョニングしなくてはならないなど手間や時間がかかってしまいます。リフレッシュ可能クローンを使用することにより、手軽に任意の時間の状態のクローンを取得することが可能です。 +| クローンのタイプ | 説明 | +| ------- | ------- | +| **フル・クローン** | ソース・データベースの**メタデータとデータ**を含むデータベース全体のクローンを作成します。 | +| **メタデータ・クローン** |ソース・データベースの表や索引などのスキーマ定義やオブジェクト構成情報といった**メタデータのみ**のクローンを作成します。**データは含みません**。| +| **リフレッシュ可能クローン** | クローン作成後もソース・データベースの変更をリフレッシュで反映することができる**更新可能な**データベース全体のクローンを作成します。(クローン作成後または前回のリフレッシュから1週間以内のリフレッシュが必要)| + +また、クローンは、サブスクライブしている任意のリージョンの任意のコンパートメント内に作成でき、ソースデータベースと異なるネットワーク(VCN・サブネット)に配置できます。バージョン・コア数・ストレージ容量などを含むスペックなどの変更も可能です。 - > **補足** - > - > その他、リフレッシュ可能クローンは次のような特長があります: - > - >
※詳細については [マニュアル](https://docs.oracle.com/ja-jp/iaas/adbrefreshableclone/autonomous-refreshable-clone.html) を参照ください。 +本チュートリアルでは、フル・クローンのタイプでクローンを作成します。 -
+**所要時間 :** 約20分 -* **クローンするソース**について +**前提条件 :** - **フルクローン**または**メタデータクローン**を取得する場合、クローンソースを選択するオプションがあります。 - * **アクティブなデータベースインスタンスからクローンを作成** -
- 実行中のデータベースのクローンが作成されます。この場合、バックアップからのクローン作成と比較して、比較的短い時間でのクローンの作成が可能です。 - ソースデータベースはオンラインのまま停止する必要はありませんが、もしデータの断面を取得したい場合は、アプリケーションを停止するか、ソースデータベースを停止してからクローンしてください。 +* 以下のチュートリアルが完了していること + * [101:ADBインスタンスを作成してみよう](/ocitutorials/adb/adb101-provisioning){:target="_blank"} で、ADBインスタンスが構成済みであること + * [102:ADBにデータをロードしよう(Database Actions)](/ocitutorials/adb/adb102-dataload){:target="_blank"} でADMINユーザーでSALES_CHANNELS表が作成されていること +* チュートリアルの便宜上インスタンス名はatp01とします。 +* SQLコマンドを実行するユーザー・インタフェースは、Database Actionsを使用します。 - > **補足** - > - >
ターゲット・インスタンスにはソース・インスタンスの断面と変更ログを転送しクローンが作成されます。また変更ログは可能な限り最新の断面となるよう直近まで転送、適用することで、ソース・インスタンスを再現します。 - >
反対をいうと、アクティブなデータベースを元に作成されたクローンは、ピンポイントに特定の状態のクローンを取得したいときには向きません。そのようなクローンを作成したいときには、一旦ソースデータベースを停止させた状態でクローンを取得する、または次の項目でご紹介するバックアップからのクローンの取得が適切でしょう。 - > +**目次:** +- [1. クローン環境を作成してみよう](#1-クローン環境を作成してみよう) +- [2. クローン環境を確認してみよう](#4-作成したクローン環境を確認してみよう) - * **バックアップからクローンを作成** -
バックアップリストからバックアップを指定してクローン、もしくは、過去の特定時点を指定してクローンします。 -
前述の通りバックアップからクローンを作成する際は、オブジェクトストレージからデータをリストアする必要があるため、アクティブなインスタンスから作成する場合に比べ、時間がかかります。 -
また、バックアップから作成できるクローンタイプはフル・クローンおよびメタデータ・クローンのみです。バックアップから更新可能クローンを作成することができませんのでご注意ください。 +
+# 1. クローン環境を作成してみよう -* **クローン先の構成**について +ソース・データベースのインスタンス詳細画面から **「クローンを作成」** をクリックします。 - クローンは、サブスクライブしている任意のリージョンの任意のコンパートメント内に取得することが可能です。また、ネットワークに関しては、ソースデータベースと異なるVCN・サブネットに配置できます。 -
クローン環境を配置するコンパートメントや、クローン環境のバージョン・コア数・ストレージ容量などを含むスペックなどを決定します。 + ![console.png](console.png) -その他、ADBのクローンに関する詳細な情報は[マニュアル](https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/adbcloning.htm)を参照ください。 + クローンの作成画面が表示されますので、下記を参考に設定していきます。 -
+## クローン・タイプの選択 + 今回は**フル・クローン**を選択します。ソース・データベースのメタデータとデータが複製されます。 - + ![clonetype.png](clonetype.png) -# 2. 事前準備 + -実際にクローン環境を作成する前に、ソースデータベースとなるADBにサンプルスクリプトを流し、データを挿入します。 -
ここではある会社の部門の情報を含む、DEPARTMENT表という簡単な表を作成していきます。 +## ソースのクローニング + フル・クローンまたはメタデータ・クローンの場合、クローンのソースを選択するオプションがあります。 + + * **データベースインスタンスからのクローニング** : 実行中のデータベースのクローンが作成されます。 + * **バックアップからのクローニング** : バックアップリストからバックアップを指定してクローン、もしくは、過去の特定時点を指定してクローンします。 + + 今回は**データベース・インスタンスからのクローニング**を選択し、実行中のデータベースのクローンを作成します。 + ![sourcecloning.png](sourcecloning.png) -1. 次の手順に従って、DBインスタンスのSQL*Plusに接続します。 -
接続方法はOCI CLIを使用する方法や、別の仮想マシンからssh接続する方法がありますが、こちらでは後者の方法で進めていきます。 +## Autonomous Databaseクローンの基本情報の指定 +クローンを作成するリージョン、コンパートメントおよびクローンの名前を指定します。 + + リージョン : **任意のリージョンから指定** + + コンパートメント:**任意のコンパートメントを指定** + + ソース・データベース名:**atp01** ※ソース・データベース名が自動入力され変更は不可 + + 表示名:**Clone-of-atp01** ※任意の名前で指定が可能です。 + + データベース名:**atp01Clone** ※任意の名前で指定が可能です。 - 1-1. 作成した仮想マシンにssh接続します。 -
仮想マシンの作成およびセットアップ方法は[こちら](https://oracle-japan.github.io/ocitutorials/adb/adb204-setup-VM/) + ![clonebase.png](clonebase.png) - 1-2. 下記のコマンドを参考に、oracleユーザに切り替えます。 - - ```sh - sudo -s - ``` - ```sh - su - oracle - ``` - (一旦rootユーザにスイッチしてから、oracleユーザにスイッチしています) +## ワークロード・タイプの選択 +ソース・データベースと異なるワークロード・タイプの選択も可能です。ただし、次の表のとおりソース・データベースによって選択できるタイプが制限されるのでご注意ください。 - 1-3. 下記のコマンドを参考に、SQL*Plusに接続します。 +| ソース | クローン | +| --- | ----- | +| ADW | ADW/ATP | +| ATP | ADW/ATP | +| AJD | ADW/ATP/AJD/APEX Service | +| APEX Service | ADW/ATP/APEX Service | - ```sh - sqlplus [username]/[password]@[接続サービス名] - ``` - 本ハンズオンガイドを参考にADBインスタンスをお作りいただいた方は、次のようなコマンドになります。 +今回はソース・データベースと同じ**トランザクション処理**を選択します。 - ```sh - sqlplus admin/Welcome12345#@atp01_low - ``` + ![workloadtype.png](workloadtype.png) - SQL*Plusへの接続方法の詳細については、[104: クレデンシャル・ウォレットを利用して接続してみよう](https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/) をご確認ください。 + +## そのほかのクローン・データベースの設定 -2. 次のサンプルスクリプトを流し、テーブルを作成します。 -
こちらのスクリプトをコピーし、SQL*Plusのターミナルにペーストします。 + クローン・データベースの構成について必要な項目を設定していきます。 + 今回は以下のように指定します。各項目については[2. ADBインスタンスを作成してみよう](http://localhost:4000/ocitutorials/adb/adb101-provisioning/#2-adb%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86)の記載例をご確認ください。 - ```sql - DROP TABLE DEPARTMENT CASCADE CONSTRAINTS PURGE; - DROP SEQUENCE DEPT_ID_SEQ; - DROP TRIGGER DEPT_ID_TRIGGER; - - CREATE SEQUENCE DEPT_ID_SEQ - START WITH 1 - INCREMENT BY 1 - NOCACHE - NOCYCLE; - - - CREATE TABLE DEPARTMENT ( - DEPT_ID NUMBER(10) PRIMARY KEY, - DEPT_NAME VARCHAR2(60) NOT NULL, - MGR_ID NUMBER(10) NOT NULL - ); - - CREATE OR REPLACE TRIGGER DEPT_ID_TRIGGER - BEFORE INSERT - ON DEPARTMENT - FOR EACH ROW - WHEN (NEW.DEPT_ID IS NULL) - BEGIN - SELECT DEPT_ID_SEQ.NEXTVAL INTO :NEW.DEPT_ID FROM DUAL; - END DEPT_ID_TRIGGER; - / - - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ADMINISTRATION', 1000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('HUMAN RESOURCE', 2000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('LEGAL', 3000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ACCOUNTING', 4000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('MARKETING', 5000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('SALES', 6000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('DEVELOPMENT', 7000); - INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ENGINEERING', 8000); - COMMIT; - ``` - - + [上記のサンプルデータをダウンロード](/ocitutorials/adb/adb-data/department.sql) - - - 3. 次のSELECT文を実行し、表が正しく作成されているかを確認します。 - - ```sql - select * from department; - ``` ++ **データベースの構成** + + データベース・バージョンの選択 : **23ai** ※ソースのバージョンよりも上である必要があります。 + + ECPU数 : **2** + + ストレージ、ストレージ単位サイズ : **20GB** ※指定できる最小ストレージは、ソース データベースの実際の使用領域を次の GB に切り上げた値です。 + + 自動スケーリングの計算 : **なし** + + ストレージの自動スケーリング : **なし** - 次のような表が作成されていればOKです。 ++ **バックアップ保持** + + 自動バックアップ保持期間(日) : **60** + ++ **管理者資格証明の作成** + + ユーザー名 : **ADMIN** + + パスワード : **Welcome12345#** - ![img1_3.png](img1_3.png) ++ **ネットワーク・アクセスの選択** + + アクセス・タイプ : **すべての場所からのセキュア・アクセス**  + ++ **ライセンスとOracle Databaseエディションの選択** : **ライセンス込み** + ++ **運用上の通知およびお知らせ用の連絡先** + + 連絡先の電子メール : **なし** + ++ **拡張オプションの表示** : **指定なし** -
+最後に「**Autonomous Databaseのクローンを作成**」をクリックすると、プロビジョニングが始まります。
+プロビジョニングが完了後、指定したコンパートメント内にクローン環境が作成されていることをご確認ください。クローンの場合、詳細の**ソースのクローニング** でソースのADBインスタンスのリンクが表示されます。 - + ![clone.png](clone.png) -# 3. クローン環境を作成してみよう -ADB(atp01)のフルクローンを作成していきます。 +
-1. ソースのインスタンスの詳細画面から「クローンを作成」をクリックします。 - ![img2_1.png](img2_1.png) +# 2. 作成したクローン環境を確認してみよう -2. クローンの作成画面が表示されます。クローン環境を設定していきます。 -
下記を参考に設定してみましょう。 +正しくフル・クローンされているか確認するため、作成したクローン環境にDatabase ActionsのSQLを使って、ADMINユーザーのSALES_CHANNEL表の存在とデータを検索します。 +クローンした環境でも付属ツールを利用することが可能です(クローン作成のときに拡張オプションでソースと異なるようにツールの構成の変更もできます)。 - * クローン・タイプ:**フルクローン** -
ソース・データベースのメタデータとデータが複製されます。 +ADBインスタンスの詳細の**データベース・アクション**から**SQL**を選択します。 - * ソースのクローニング:**データベース・インスタンスからのクローニング** -
現在の状態のまま、実行中のデータベースのクローンを作成します。 + ![dbactions.png](dbactions.png) - ![img2_2_1.png](img2_2_1.png) - * Autonomous Databaseクローンの基本情報の指定 - * コンパートメント:**任意のコンパートメントを指定** - * ソース・データベース名:**atp01(変更できません)** - * 表示名:**Clone of atp01(デフォルト)** -
任意の名前で結構です。 - * データベース名:**atp01Clone** -
任意の名前で結構です。 +左側のナビゲータでSALES_CHANNELS表が表示され、メタデータがクローンされていることが確認できます。 +次にデータがクローンされているかを確認します。SALES_CHANNELS表をワークシートにドラッグアンドドロップをすると、挿入のタイプが選択できます。 - ![img2_2_2.png](img2_2_2.png) - - * データベースの構成 - * データベース・バージョン:**19c(デフォルト)** -
任意のバージョンで結構です。 - * ECPU数:**2** -
任意の値で結構です。 - * ストレージ:**1024(デフォルト)** -
任意の値で結構です。 - - ![img2_2_3.png](img2_2_3_new.png) - - * 管理者資格証明の作成 - * ユーザ名:**ADMIN(変更できません)** - * パスワード:**Welcome12345#** -
次の要件を満たす任意のパスワードを設定ください - * 12文字から30文字 - * 大文字、小文字および数字をそれぞれ1つ以上含む - * 二重引用符(")文字またはユーザー名"admin"を含めることはできない - - ![img2_2_4.png](img2_2_4.png) + ![sql1.png](sql1.png) - * ネットワーク・アクセスの選択:**すべての場所からのセキュア・アクセス** - * ライセンス・タイプの選択:**ライセンス込み** - ![img2_2_5.png](img2_2_5.png) +選択を選んで適用をクリックすると、SQLが入力されます。そのまま実行してSALES_CHANNELS表を検索します。 - 最後に「**クローンを作成**」をクリックすると、プロビジョニングが始まります。 -
指定したコンパートメント内にクローン環境が作成されていることをご確認ください。 + ![sql2.png](sql2.png) -
+ ![sql3.png](sql3.png) - -# 4. クローン環境を確認してみよう +データが検索され、メタデータとデータが正しくクローンされていることが確認できました。 -作成したクローン環境に接続してみましょう。 -
また、正しくクローンされているかを確認するために、2で作成したデータと同様のデータが入っているかを確認します。 +# おわりに +本チュートリアルでは簡単に既存のAutonomous Databaseからクローンを作成できることを体感いただきました。今回はフル・クローンでしたが、クローンのタイプにメタデータ・クローンを選択すると同様の手順でメタデータ・クローンの作成が可能です。リフレッシュ可能クローンは [218 : リフレッシュ可能クローンを活用しよう](ocitutorials/adb/adb218-refreshable-clone){:target="_blank"} で手順をご確認ください。 -1. 次の手順に従って、クローンADBに接続してみましょう。 -
詳細は、[104: クレデンシャル・ウォレットを利用して接続してみよう](https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/) の [1. クレデンシャル・ウォレットのダウンロード](https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/#anchor1) を参照ください。 +
+以上で、この章は終了です。 +次の章にお進みください。 - 1-1. クローンADBのウォレットをダウンロードします。 -
OCIコンソールからクローンADBの詳細画面に移動します。 -
手順は次の通りです: -
**「DB接続」→インスタンスタイプのウォレットをダウンロード→ADMINに設定したパスワードを入力** +# 参考資料 ++ [Cloning and Moving an Autonomous Database](https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/clone-autonomous-database.html) - 1-2. クローンADBへの接続に使用するクライアントの設定ファイルを編集します。 -
設定ファイルを編集する方法は、OCI CLIを使用した編集方法、接続用の仮想マシンで編集する方法があります。 -
それぞれの編集方法は次のリンク先をご確認ください: - + OCI CLIを使用して編集する方法 - [104: クレデンシャル・ウォレットを利用して接続してみよう - 2. 設定ファイルの編集](https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/#anchor2) - + 接続用の仮想マシン上で編集する方法 - [204: マーケットプレイスからの仮想マシンのセットアップ方法](https://oracle-japan.github.io/ocitutorials/adb/adb204-setup-VM/#4-adb%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%B7%A8%E9%9B%86) - - > **補足** - > - > 1つの接続用の仮想マシンから様々なDBに接続するようなことがある場合、それぞれのウォレットごとにディレクトリを作成し、どのDBに接続したいかによってTNS_ADMINが参照するウォレットの場所を切り替えるとスムーズに接続することができます。 - > - > または、**リージョナル・ウォレット**というクレデンシャルウォレットを活用するとより簡単に接続することが可能になります。 - > リージョナル・ウォレットには、同一コンパートメント内のすべてのADBに関する資格情報が含まれているため、DBを切り替えるたびにウォレットの場所などを意識することなくご利用いただけます。 - >ADBの資格証明に関する詳細な情報は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/adbconnecting.htm#credentials)を参照ください。 - > +# Tips -2. 先ほど同様に、SQL*Plusに接続します。 ++ **データベースインスタンスからのクローニングとバックアップからのクローニングで違いはありますか?** - ```sh - sqlplus [username]/[password]@[接続サービス名] - ``` + バックアップからのクローニングは、オブジェクトストレージからデータをリストアする必要があるため、アクティブなデータベースインスタンスからのクローニングに比べ、時間がかかります。また、バックアップから作成できるクローンタイプはフル・クローンおよびメタデータ・クローンのみです。バックアップから更新可能クローンを作成することができませんのでご注意ください。 - ```sh - sqlplus admin/Welcome12345#@atp01Clone_low - ``` - ※接続サービス名にご注意ください。ソース・データベースと名称が異なります。 ++ **どのタイミングでクローンが作成されるのでしょうか?** -3. SELECT文を使用し、先ほど作成したDEPARTMENT表が表示されていることを確認します。 + ターゲット・インスタンスにはソース・インスタンスの断面と変更ログを転送しクローンが作成されます。また変更ログは可能な限り最新の断面となるよう直近まで転送、適用することで、ソース・インスタンスを再現します。そのため、アクティブなデータベースを元に作成されたクローンは、ピンポイントに特定の状態のクローンを取得したいときには適切ではありません。そのようなクローンを作成したいときには、一旦ソースデータベースを停止させた状態でクローンを取得する、またはバックアップからのクローンの取得がよいでしょう。 - ```sh - select * from department; - ``` - ![img1_3.png](img1_3.png) ++ **作成するクローンを制限することはできますか?** - このように、フルクローンではメタデータのみならずデータも取得されていることが分かります。 + 可能です。グループがAutonomous Databaseのクローン作成のみ可能でAutonomous Databaseの作成はできないようにクローン作成権限を制限したり、特定のタイプのクローン(フル・クローン、メタデータ・クローン、またはリフレッシュ可能クローン)のみを作成するように権限をさらに制限することもできます。詳細と例については、[「IAM Permissions and API Operations for Autonomous Database 」](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-database-iam-policies.html#GUID-4FDA9343-A721-4D9A-A48D-A2B7896E6085)を参照してください。 -> **補足** -> -> ソースデータベースのメタデータのみをコピーするメタデータ・クローンを使用してatp01を複製した場合の出力結果は次のようになります。 -> -> ![img4_3.png](img4_3.png) -> -> DEPARTMENT表の行を表示するselect文の出力結果では、行が表示されません。表の中身が空であることが分かります。 -> しかし、データベースオブジェクトの定義を表示するdesc文を実行すると、このように列名・データ型などの情報が取得されていることが分かります。 ++ **テナンシーをまたいだクローンはできますか?** + 可能です。ただし、CLIまたはREST APIでのみサポートされており、コンソールを使用した作成はできません。詳細は[「Cross Tenancy and Cross-Region Cloning」](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-clone-cross-tenancy.html#GUID-98C63A6A-BA44-4757-9BE3-6636732EA1A2) を参照してください。 -
-以上で、この章は終了です。 -次の章にお進みください。
[ページトップへ戻る](#anchor0) diff --git a/tutorials/_adb/adb211-clone/clone.png b/tutorials/_adb/adb211-clone/clone.png new file mode 100644 index 0000000000..7c51707abd Binary files /dev/null and b/tutorials/_adb/adb211-clone/clone.png differ diff --git a/tutorials/_adb/adb211-clone/clonebase.png b/tutorials/_adb/adb211-clone/clonebase.png new file mode 100644 index 0000000000..88dedb7017 Binary files /dev/null and b/tutorials/_adb/adb211-clone/clonebase.png differ diff --git a/tutorials/_adb/adb211-clone/clonetype.png b/tutorials/_adb/adb211-clone/clonetype.png new file mode 100644 index 0000000000..33b7f4ca33 Binary files /dev/null and b/tutorials/_adb/adb211-clone/clonetype.png differ diff --git a/tutorials/_adb/adb211-clone/console.png b/tutorials/_adb/adb211-clone/console.png new file mode 100644 index 0000000000..9130a7bbfb Binary files /dev/null and b/tutorials/_adb/adb211-clone/console.png differ diff --git a/tutorials/_adb/adb211-clone/dbactions.png b/tutorials/_adb/adb211-clone/dbactions.png new file mode 100644 index 0000000000..2a008eb3fd Binary files /dev/null and b/tutorials/_adb/adb211-clone/dbactions.png differ diff --git a/tutorials/_adb/adb211-clone/sourcecloning.png b/tutorials/_adb/adb211-clone/sourcecloning.png new file mode 100644 index 0000000000..66024ca3cf Binary files /dev/null and b/tutorials/_adb/adb211-clone/sourcecloning.png differ diff --git a/tutorials/_adb/adb211-clone/sql1.png b/tutorials/_adb/adb211-clone/sql1.png new file mode 100644 index 0000000000..6b1cb9131d Binary files /dev/null and b/tutorials/_adb/adb211-clone/sql1.png differ diff --git a/tutorials/_adb/adb211-clone/sql2.png b/tutorials/_adb/adb211-clone/sql2.png new file mode 100644 index 0000000000..686a7f6001 Binary files /dev/null and b/tutorials/_adb/adb211-clone/sql2.png differ diff --git a/tutorials/_adb/adb211-clone/sql3.png b/tutorials/_adb/adb211-clone/sql3.png new file mode 100644 index 0000000000..c03f73be7f Binary files /dev/null and b/tutorials/_adb/adb211-clone/sql3.png differ diff --git a/tutorials/_adb/adb211-clone/workloadtype.png b/tutorials/_adb/adb211-clone/workloadtype.png new file mode 100644 index 0000000000..b1dc199d59 Binary files /dev/null and b/tutorials/_adb/adb211-clone/workloadtype.png differ diff --git a/tutorials/_adb/adb212-audg.md b/tutorials/_adb/adb212-audg.md index 56abca42ec..0a46178bee 100644 --- a/tutorials/_adb/adb212-audg.md +++ b/tutorials/_adb/adb212-audg.md @@ -1,5 +1,5 @@ --- -title: "212: Autonomous Data Guardを構成してみよう" +title: "212: Autonomous Database を災害対策構成にしてみよう" excerpt: "DRを構成するにはどうしたら良いでしょうか?ADBでは数回クリックするだけでスタンバイ・データベースを簡単にプロビジョニングできます。" order: "3_212" layout: single @@ -14,14 +14,28 @@ header: # はじめに -Autonomous Databaseでは、Autonomous Data Guardと呼ばれる機能を使用して、スタンバイ・データベースを有効にする事ができます。これによって、Autonomous Databaseインスタンスにデータ保護およびディザスタ・リカバリを実現可能です。Autonomous Data Guardが有効になっている場合、フェイルオーバーやスイッチオーバーが可能なスタンバイ・データベースを提供します。 +Autonomous Database ではReal Application Clusters(RAC)やAutomatic Storage Management(ASM)などの高可用性技術が事前構成済みです。そのため、単一のDBサーバー障害やストレージ障害については、RTO/RPOがほぼ0(SLO: サービスレベル目標)で復旧させることが可能です。 + +それらに加え、有償オプションとして、大きく2種類の災害対策ソリューションが提供されています。 + +それがAutonomous Data Guardとバックアップベースのディザスタ・リカバリです。Autonomous Data Guard は、本番環境用インスタンス(プライマリ・インスタンス)のスタンバイ・データベースを構成する事ができます。これによって、Autonomous Database インスタンスにデータ保護およびディザスタ・リカバリを実現可能です。Autonomous Data Guard が有効になっている場合、全ノード障害やリージョン障害などの大規模障害の際に、フェイルオーバーやスイッチオーバーが可能なスタンバイ・データベースを提供します。なおAutonomous Data Guard のスタンバイ・データベースへはデータ操作や接続ができません。 + +バックアップベースのディザスタ・リカバリは、デフォルトで取得されている自動バックアップのコピーを、本番環境用インスタンスのリージョンと異なるリージョンに保管しておくことができます。こちらもAutonomous Data Guard と同様、リージョン障害時に別のリージョンで本番環境と同等の環境をバックアップから構成することで、ディザスタ・リカバリを実現可能です。
**目次** -- [Autonomous Data Guardの有効化](#anchor1) -- [Autonomous Data Guardのスイッチオーバー](#anchor2) +- [はじめに](#はじめに) +- [1. Autonomous Data Guard](#1-autonomous-data-guard) + - [1-1. ローカルAutonomous Data Guard の有効化](#1-1-ローカルautonomous-data-guard-の有効化) + - [1-2. Autonomous Data Guard のスイッチオーバー](#1-2-autonomous-data-guard-のスイッチオーバー) + - [1-3. クロスリージョンAutonomous Data Guard](#1-3-クロスリージョンautonomous-data-guard) + - [1-4. Autonomous Data Guard のその他の機能](#1-4-autonomous-data-guard-のその他の機能) +- [2. バックアップベースのディザスタ・リカバリ](#2-バックアップベースのディザスタリカバリ) + - [2-1. ローカル・バックアップベースのディザスタ・リカバリ](#2-1-ローカルバックアップベースのディザスタリカバリ) + - [2-2. クロスリージョン・バックアップベースのディザスタ・リカバリ](#2-2-クロスリージョンバックアップベースのディザスタリカバリ) +- [おわりに](#おわりに)
@@ -31,86 +45,262 @@ Autonomous Databaseでは、Autonomous Data Guardと呼ばれる機能を使用 -# Autonomous Data Guardの有効化 +# 1. Autonomous Data Guard +まずはスタンバイ・データベースを構成するAutonomous Data Guard を有効化してみます。 -1. Autonomous Databaseの詳細画面の**Autonomous Data Guard**のステータスが無効になっているのを確認後、**有効化**をクリックします。 +Autonomous Database は**SLA 99.95%**で提供されますが、Autonomous Data Guard構成時には**SLA 99.995%**で提供されます。 - ![画面ショット1-1](img1.jpg) +Autonomous Data Guard には2種類あり、プライマリ・インスタンスと同じリージョンにスタンバイ・データベースを構成する**ローカル Autonomous Data Guard**と、異なるリージョンにスタンバイ・データベースを構成する**クロス・リージョン Autonomous Data Guard**があります。 -1. **Autonomous Data Guardの有効化**をクリックします。 +![AuDG1](AuDG1.jpg) - ![画面ショット1-1](img2.jpg) +ローカルとクロス・リージョンでは、対応できる障害やRPO/RTO、追加コストが異なります。以下をご参照ください。 -1. 画面左上のATPマークが黄色に変化しました。**Autonomous Data Guard**に**ピアの状態**が出現し、プロビジョニング中であることが確認できます。完了するまで待ってみましょう。 +![AuDG2](AuDG2.jpg) - ![画面ショット1-1](img3.jpg) +なおローカルAutonomous Data Guard では、複数のAvailability Domain(AD)のあるリージョンでは、異なるAD上にプロビジョニングされ、1つのADのみあるリージョンでは、スタンバイ・データベースはプライマリと異なるFault Domain(異なるExadata環境)上にプロビジョニングされます。これにより、全ノード障害やストレージの完全な障害などの物理マシン全体が被害を受けるケースにおいても、スタンバイ・データベースは異なる環境にあるため復旧することが可能です。 -1. プロビジョニングが完了しました。ADB詳細画面のADB名の横に**プライマリ**というステータスが確認できます。**Autonomous Data Guard**のところに記載されている**ピアの状態**が、**使用可能**になりました。 +コストについて、例えばプライマリ・インスタンスを10ECPU、ストレージ1TBのADBで運用していた場合、それぞれの追加コストは以下のようになります。 ++ ローカル Autonomous Data Guard: 10ECPU、ストレージ1TB ++ クロス・リージョン Autonomous Data Guard: 10ECPU、ストレージ2TB - ![画面ショット1-1](img4.jpg) +なおスタンバイ・データベースでは、プライマリ・インスタンスの自動スケーリングでスケールした分のCPU課金は発生しません。設定ECPUのみの課金となります。 -1. ここで、ターミナルからADBにSQL Plusでログインしましょう。現在のプライマリDBの情報を下記のSQL文で確認します。 +
+ - ``` +## 1-1. ローカルAutonomous Data Guard の有効化 +実際にAutonomous Data Guard を有効化してみます。 + +1. Autonomous Databaseの詳細画面の[ディザスタ・リカバリ]の**Autonomous Data Guardにアップグレード**をクリックします。デフォルトではプライマリ・インスタンスと同じリージョンにバックアップが取得されているため、『ローカル: バックアップベース』と記載されています。 + + ![AuDG3](AuDG3.jpg) + +2. 今回プライマリ・インスタンスは東京リージョンに作成してあるため、リージョンは東京となっています。ディザスタ・リカバリ・タイプとして、Autonomous Data Guard とバックアップベースのディザスタ・リカバリの2種類表示されています。上記の通りローカルのバックアップベースのディザスタ・リカバリはデフォルトで構成されている自動バックアップと同義のため、こちらを選択しても構成に変更は起きません。Autonomous Data Guard を選択し、送信ボタンをクリックします。 + + ![AuDG4](AuDG4.jpg) + + > (補足) + > データ損失制限(秒)のある自動フェイルオーバーについて + > + > ローカル Autonomous Data Guard では障害発生時の自動フェイルオーバーがサポートされています。 + > + > プライマリ・インスタンスが利用できなくなり、ユーザーが接続できない場合、ローカルのスタンバイ・データベースが利用可能であれば自動的にスタンバイ・データベースにフェイルオーバーします。 + > + > 自動フェイルオーバーを行うのは、データ損失が上記で0(デフォルト)~3600秒の間で設定した制限内であることを保証できる場合のみです。 + > + > 例えばデータ損失制限を60秒と設定した場合に、データ損失が60秒以内であれば自動フェイルオーバーを実施しますが、60秒以上であれば自動フェイルオーバーは行いません。この場合はユーザーによる手動フェイルオーバーでの復旧が必要となります。 + +3. 画面左上のステータスがオレンジ色の更新中に変化しました。完了するまで数分待ってみましょう。なおスタンバイ・データベースの構成中であっても、データベース操作に影響はなく、ダウンタイムは発生しません。 + + ![AuDG5](AuDG5.jpg) + +4. プロビジョニングが完了し、ステータスが緑色の使用可能に戻りました。ADBの詳細画面の[ディザスタ・リカバリ]は**ローカル: Autonomous Data Guard**に変更されています。また左下の[リソース]のディザスタ・リカバリをクリックすると、以下のようにDRタイプがAutonomous Data Guard表示になっています。 + + ![AuDG6](AuDG6.jpg) + + ![AuDG7](AuDG7.jpg) + +5. ここでターミナルからADBにSQL*Plusで接続してみます。現在のプライマリ・インスタンスの情報を下記のSQL文で確認します。 + + ```sql sqlplus admin/@ ``` - ``` + ```sql SELECT DBID, NAME, DB_UNIQUE_NAME FROM V$DATABASE; ``` - ![画面ショット1-1](img4.5.jpg) + ![AuDG8](AuDG8.jpg) スイッチオーバーの前後でDBID、NAME、DB_UNIQUE_NAMEが変化することを確認したいと思うので、SQLの出力結果をメモ帳などにメモしておいてください。 - - -# Autonomous Data Guardのスイッチオーバー - -1. ADB詳細画面に戻り、スイッチオーバーをしていきます。**Autonomous Data Guard**から**スイッチオーバー**をクリックして下さい。 +
+ - ![画面ショット1-1](img4.jpg) +## 1-2. Autonomous Data Guard のスイッチオーバー +Autonomous Data Guard を有効化できたので、続いてスタンバイ・データベースにスイッチオーバーして、ロール変更します。 +スイッチオーバーは一般的に、実際の障害時のフェイルオーバーのテスト目的で行われます。スイッチオーバー後は、これまでのスタンバイ・データベースがプライマリに、これまでのプライマリ・インスタンスがスタンバイに変更されます。 -1. 画面左上のATPマークが黄色に変化しました。**Autonomous Data Guard**のところに記載されている**ピアの状態**が、**ロール変更進行中**であることが確認できます。完了するまで待ってみましょう。 +1. ADB詳細画面に戻り、スイッチオーバーをします。ADBの詳細画面の[ディザスタ・リカバリ]の**スイッチオーバー**をクリックして下さい。 - ![画面ショット1-1](img6.jpg) + ![AuDG9](AuDG9.jpg) -1. スイッチオーバーが完了しました。**Autonomous Data Guard**のところに記載されている**ピアの状態**が、**使用不可**になり、スタンバイを準備している状態であることが確認できます。 +2. DB名の入力確認があるので、以下のように入力してスイッチオーバーします。 - ![画面ショット1-1](img7.jpg) + ![AuDG10](AuDG10.jpg) -1. ここで、ターミナルからADBにSQL Plusでログインしましょう。スイッチオーバー後のプライマリDBの情報を下記のSQL文でクエリしていきます。 +3. 数分でスイッチオーバーが完了しました。ここでターミナルからADBにSQL*Plusでログインしましょう。スイッチオーバー後のプライマリの情報を下記のSQL文でクエリします。 - ``` + ```sql sqlplus admin/@ ``` - ``` + ```sql SELECT DBID, NAME, DB_UNIQUE_NAME FROM V$DATABASE; ``` - ![画面ショット1-1](img7.5.jpg) + ![AuDG11](AuDG11.jpg) 問合せたDBID、NAME、DB_UNIQUE_NAMEは、スイッチオーバー前に接続していたDBとは異なる情報です。適切にスイッチオーバーされたのが確認できます。 -
+
+ + +## 1-3. クロスリージョンAutonomous Data Guard +続いてクロスリージョンでのAutonomous Data Guard を構成してみます。プライマリを東京に作成している場合、クロスリージョンでのスタンバイ・データベースの作成先としては、大阪・ソウルリージョンがあります。 - # Tips - + スタンバイ・データベースはプライマリ・データベースと同じリージョン内に下記の様にプロビジョニングされます。 - + 複数の可用性ドメインがあるリージョンでは、スタンバイ・データベースはプライマリ・データベースとは異なる可用性ドメイン(AD)に自動的にプロビジョニングされますす。 - + 単一の可用性ドメインのリージョンでは、スタンバイ・データベースはプライマリ・データベースとは異なる物理マシンに自動的にプロビジョニングされます。 - + (2021/8) Cross-Regionにも対応しました +1. ADBの詳細画面の左下、リソースの[ディザスタ・リカバリ]をクリックし、**ピア・データベースの追加**をクリックします。 -
+ ![AuDG12](AuDG12.jpg) + +2. リージョンを選択すると、ディザスタ・リカバリ・タイプの選択ができます。**Autonomous Data Guard**を選択します。 + + ![AuDG13](AuDG13.jpg) -以上で、この章の作業は終了です。 + > (補足) + > クロスリージョン・バックアップ・レプリケーションの有効化について + > + > デフォルトではクロスリージョン・スタンバイ・データベースでは、プライマリと異なり自動バックアップが取得されません。そのためスタンバイ・データベースにスイッチオーバー/フェイルオーバーした直後は、自動バックアップを使用したリストアやクローニングが実行できません。 + > + > しかしこの機能を有効化すると、最大7日間までの自動バックアップがスタンバイ側リージョンにレプリケートされるため、最大7日間以内であれば、新プライマリ(旧スタンバイ)DBをリストア、クローニングすることができます。 + > + > なおレプリケートされたバックアップは、7日後もしくは自動バックアップの保持期間が7日未満の場合は、その保持期間の日数が経過すると削除されます。またレプリケートされたバックアップは、バックアップ分の追加コストが発生します。 + +3. プライマリ・インスタンスのネットワーク・アクセス・タイプが**プライベート・エンドポイント・アクセス**の場合、スタンバイのネットワーク・アクセスを設定する必要があります。ここでは大阪側のVCNとサブネットを選択して、**ピア・データベースの追加**をクリックします。 + + ![AuDG14](AuDG14.jpg) + +4. 画面左上のステータスがオレンジ色の更新中に変化しました。完了するまで数分待ってみましょう。なおスタンバイ・データベースの構成中であっても、データベース操作に影響はなく、ダウンタイムは発生しません。 + + ![AuDG5](AuDG5.jpg) + +5. スタンバイ・データベースが構成されると、以下のように大阪リージョンに*DB名_KIX*というインスタンスが作成されます。 + + ![AuDG15](AuDG15.jpg) + +クロスリージョンAutonomous Data Guard では、自動フェイルオーバーがサポートされていないため、ユーザーによる手動フェイルオーバーを行う必要があります。 + +実際の障害時には、まずローカルAutonomous Data Guard と同じ要領でスイッチオーバーを試みます。スイッチオーバーが失敗した場合、OCIコンソール上にフェイルオーバーを行うリンクが表示されます。ここではデータ損失が発生し得る時間も同時に表示されます。以下がサンプルです。 + +![adb_failover_manual](adb_failover_manual.png) + +Autonomous Database は、RTO: 15分、RPO: 1分というサービスレベル目標(SLO)を基準にフェイルオーバーを行います。 + +
+ + +## 1-4. Autonomous Data Guard のその他の機能 +Autonomous Data Guard には、本記事でご紹介した以外にもいくつか補足機能があります。 + +1. スナップショット・スタンバイ + + Autonomous Data Guard で作成したスタンバイ・データベースは、データ操作はもちろんDB接続はできませんが、このスナップショット・スタンバイ機能を使用すれば、**2日間まで**であれば読み書き可能なインスタンスとしてスタンバイ・データベースを活用できます。スナップショット・スタンバイになっている間は、プライマリからのREDO(更新データ)は転送されるものの、適用はされません。ユーザーが明示的にスナップショット・スタンバイから通常のスタンバイ・データベースに戻すか2日間が経過すれば、プライマリに自動的に再接続されます。そしてスナップショット・スタンバイ中に更新されたデータは破棄され、REDOの適用が再開されます。 + + スタンバイ・データベースの詳細画面から、[その他のアクション]の**スナップショット・スタンバイ・データベースへの変換**をクリックします。 + ![AuDG16](AuDG16.jpg) + + ソース・データベース名(プライマリ)を入力して変換を行います。 + + ![AuDG17](AuDG17.jpg) + + これでスタンバイ・データベースは最大2日間読み書き可能なインスタンスになりました。通常のスタンバイ・データベースに戻す際は、**ディザスタ・リカバリ・ピア・データベースへの変換**をクリックします。 + + ![AuDG18](AuDG18.jpg) + +2. クロステナンシのAutonomous Data Guard + Autonomous Data Guard では、プライマリと異なるテナンシにスタンバイ・データベースを作成することができます。Autonomous Data Guard の本来の目的であるスイッチオーバー、フェイルオーバーを異なるテナンシにできることに加え、Autonomous Database を他のテナンシに移行する際にもこちらの機能を利用することができます。 + + 具体的な手順については、[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/autonomous-data-guard-cross-tenancy.html#GUID-D53D86E6-9A6E-4E6D-8516-3394B3F1CB2C){:target="_blank"}をご参照ください。 + +3. スタンバイ・データベースに関するイベント通知 + Autonomous Data Guard でスタンバイ・データベースを構成する場合、OCI EventsやOCI Notificationsサービスと組み合わせて、以下のようなイベント通知をすることができます。ユーザーはこれらを受け取って、障害発生時の対応や状況確認をよりスムーズに行うことができます。 + + 自動フェイルオーバーの開始/終了(ローカルAutonomous Data Guard のみ) + + Autonomous Data Guard の無効化の開始/終了 + + Autonomous Data Guard の有効化の開始/終了 + + 手動フェイルオーバーの開始/終了 + + スイッチオーバーの開始/終了 + + EventsやNotificationsとの連携方法については、[こちら](https://oracle-japan.github.io/ocitutorials/adb/adb503-monitoring/){:target="_blank"}をご参照ください。 + +
+ + +# 2. バックアップベースのディザスタ・リカバリ +ここではバックアップベースのディザスタ・リカバリを有効にしてみます。
+ + +## 2-1. ローカル・バックアップベースのディザスタ・リカバリ +ADBではデフォルトで自動バックアップが取得されています。自動バックアップがローカル(ADBインスタンスと同じリージョン)・バックアップコピーとして取得されています。そのため、追加コストとしては発生せず、自動バックアップ分の課金のみになります。 + +ADBの詳細画面の[リソース]の**ディザスタ・リカバリ**をクリックすると、デフォルトでは以下のようになっています。 + +![backupbase1](backupbase1.jpg) + +※ADBプロビジョニング直後など自動バックアップが取られていない場合、表示されないケースがあります。 + +このバックアップコピーの右の3点リーダーをクリックすると、以下の項目が表示されます。 + +![backupbase2](backupbase2.jpg) + ++ スイッチオーバー: 現在プロビジョニングされているExadata環境と異なるExadata環境に、バックアップからインスタンス化することでスイッチオーバーします。スイッチオーバーまでの時間はADBストレージ量に比例して長くなります。 + ![backup-based-dr-local](backup-based-dr-local.png) + ++ ディザスタ・リカバリの更新: バックアップコピーからローカルAutonomous Data Guard にディザスタ・リカバリ・タイプを変更します。 ++ ピアの無効化(クリック不可): ローカル・バックアップコピーは自動バックアップ同様無効化できません。 + + +
+ + +## 2-2. クロスリージョン・バックアップベースのディザスタ・リカバリ +ローカルとは別に、ADBがプロビジョニングされているリージョンと異なるリージョンに、バックアップコピーを取っておくことができます。クロスリージョンの場合はローカルとは異なり、追加コストとしてコピーするバックアップ(プライマリで課金される自動バックアップに必要なストレージ)の2倍の課金がかかります。 + +![backup-based-dr-cross-region](backup-based-dr-cross-region.png) + +それではクロスリージョンのバックアップベースのディザスタ・リカバリを有効にしてみます。 + +ADBの詳細画面の[リソース]のディザスタ・リカバリをクリックして、**ピア・データベースの追加**をクリックします。 + +![backupbase3](backupbase3.jpg) + +次にリージョンを選択します。東京リージョンの場合、大阪リージョンとソウルリージョンが選択できます。ここでは大阪リージョンを選択します。 + +ディザスタ・リカバリ・タイプの選択は、**バックアップベース・ディザスタ・リカバリ**を選択します。 + +![backupbase4](backupbase4.jpg) + +クロスリージョン・バックアップ・レプリケーションの有効化については、[1-3. クロスリージョンAutonomous Data Guard](#1-3-クロスリージョンautonomous-data-guard)に記載があるので、そちらをご参照ください。 + +プライマリ・インスタンスのネットワーク・アクセス・タイプが**プライベート・エンドポイント・アクセス**の場合、スタンバイのネットワーク・アクセスを設定する必要があります。ここでは大阪側のVCNとサブネットを選択して、**ピア・データベースの追加**をクリックします。 + +![AuDG14](AuDG14.jpg) + +少し待つと、大阪リージョン側に*DB名_KIX*が作成されます。 + +![backupbase5](backupbase5.jpg) + +ロール: バックアップ・コピーとなっているため、このインスタンスに接続することはできません。 + +Autonomous Data Guard と同様の手順で、スイッチオーバーや、プライマリ障害時にはこのバックアップ・コピーを用いたフェイルオーバーが可能です。 + +
+ + +# おわりに +このチュートリアルでは、ADBで設定可能な災害対策ソリューションについてご紹介しました。ADBではデフォルトで高可用性構成になっているものの、特にミッションクリティカルなシステムでは、広域障害への対策が必要になってきます。そのような場合に今回ご紹介したソリューションが使用可能です。それぞれのソリューションで、RTO/RPO、コストが変わってくるので、システムの要件に応じてご選択いただければと思います。 + +以上で、この章の作業は終了です。 + +
+ [ページトップへ戻る](#anchor0) \ No newline at end of file diff --git a/tutorials/_adb/adb212-audg/AuDG1.jpg b/tutorials/_adb/adb212-audg/AuDG1.jpg new file mode 100644 index 0000000000..e25fb21830 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG1.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG10.jpg b/tutorials/_adb/adb212-audg/AuDG10.jpg new file mode 100644 index 0000000000..26bd6a90e1 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG10.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG11.jpg b/tutorials/_adb/adb212-audg/AuDG11.jpg new file mode 100644 index 0000000000..e2ad7bdc3d Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG11.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG12.jpg b/tutorials/_adb/adb212-audg/AuDG12.jpg new file mode 100644 index 0000000000..4a52980098 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG12.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG13.jpg b/tutorials/_adb/adb212-audg/AuDG13.jpg new file mode 100644 index 0000000000..c56af76840 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG13.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG14.jpg b/tutorials/_adb/adb212-audg/AuDG14.jpg new file mode 100644 index 0000000000..dda66af964 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG14.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG15.jpg b/tutorials/_adb/adb212-audg/AuDG15.jpg new file mode 100644 index 0000000000..8e010235db Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG15.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG16.jpg b/tutorials/_adb/adb212-audg/AuDG16.jpg new file mode 100644 index 0000000000..2d1e407857 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG16.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG17.jpg b/tutorials/_adb/adb212-audg/AuDG17.jpg new file mode 100644 index 0000000000..8a99c87c5b Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG17.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG18.jpg b/tutorials/_adb/adb212-audg/AuDG18.jpg new file mode 100644 index 0000000000..4e2b645670 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG18.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG2.jpg b/tutorials/_adb/adb212-audg/AuDG2.jpg new file mode 100644 index 0000000000..cdbc943c25 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG2.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG3.jpg b/tutorials/_adb/adb212-audg/AuDG3.jpg new file mode 100644 index 0000000000..59d0345007 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG3.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG4.jpg b/tutorials/_adb/adb212-audg/AuDG4.jpg new file mode 100644 index 0000000000..ceab063397 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG4.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG5.jpg b/tutorials/_adb/adb212-audg/AuDG5.jpg new file mode 100644 index 0000000000..9c800a89ad Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG5.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG6.jpg b/tutorials/_adb/adb212-audg/AuDG6.jpg new file mode 100644 index 0000000000..58093e7559 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG6.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG7.jpg b/tutorials/_adb/adb212-audg/AuDG7.jpg new file mode 100644 index 0000000000..a146d97ff4 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG7.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG8.jpg b/tutorials/_adb/adb212-audg/AuDG8.jpg new file mode 100644 index 0000000000..090b283aa7 Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG8.jpg differ diff --git a/tutorials/_adb/adb212-audg/AuDG9.jpg b/tutorials/_adb/adb212-audg/AuDG9.jpg new file mode 100644 index 0000000000..8069b42d7d Binary files /dev/null and b/tutorials/_adb/adb212-audg/AuDG9.jpg differ diff --git a/tutorials/_adb/adb212-audg/adb_failover_manual.png b/tutorials/_adb/adb212-audg/adb_failover_manual.png new file mode 100644 index 0000000000..b7e405918b Binary files /dev/null and b/tutorials/_adb/adb212-audg/adb_failover_manual.png differ diff --git a/tutorials/_adb/adb212-audg/backup-based-dr-cross-region.png b/tutorials/_adb/adb212-audg/backup-based-dr-cross-region.png new file mode 100644 index 0000000000..2a8d063c4c Binary files /dev/null and b/tutorials/_adb/adb212-audg/backup-based-dr-cross-region.png differ diff --git a/tutorials/_adb/adb212-audg/backup-based-dr-local.png b/tutorials/_adb/adb212-audg/backup-based-dr-local.png new file mode 100644 index 0000000000..81bc9aac6a Binary files /dev/null and b/tutorials/_adb/adb212-audg/backup-based-dr-local.png differ diff --git a/tutorials/_adb/adb212-audg/backupbase1.jpg b/tutorials/_adb/adb212-audg/backupbase1.jpg new file mode 100644 index 0000000000..a9b6023ae1 Binary files /dev/null and b/tutorials/_adb/adb212-audg/backupbase1.jpg differ diff --git a/tutorials/_adb/adb212-audg/backupbase2.jpg b/tutorials/_adb/adb212-audg/backupbase2.jpg new file mode 100644 index 0000000000..17b0cfc3ee Binary files /dev/null and b/tutorials/_adb/adb212-audg/backupbase2.jpg differ diff --git a/tutorials/_adb/adb212-audg/backupbase3.jpg b/tutorials/_adb/adb212-audg/backupbase3.jpg new file mode 100644 index 0000000000..09285b01a8 Binary files /dev/null and b/tutorials/_adb/adb212-audg/backupbase3.jpg differ diff --git a/tutorials/_adb/adb212-audg/backupbase4.jpg b/tutorials/_adb/adb212-audg/backupbase4.jpg new file mode 100644 index 0000000000..d0ba946258 Binary files /dev/null and b/tutorials/_adb/adb212-audg/backupbase4.jpg differ diff --git a/tutorials/_adb/adb212-audg/backupbase5.jpg b/tutorials/_adb/adb212-audg/backupbase5.jpg new file mode 100644 index 0000000000..a448489fdf Binary files /dev/null and b/tutorials/_adb/adb212-audg/backupbase5.jpg differ diff --git a/tutorials/_adb/adb214-spatial-studio.md b/tutorials/_adb/adb214-spatial-studio.md index c794ed0ce4..0f508002fb 100644 --- a/tutorials/_adb/adb214-spatial-studio.md +++ b/tutorials/_adb/adb214-spatial-studio.md @@ -298,7 +298,7 @@ group by b.station_name; ``` + sdo_anyinteract:表内のジオメトリに、特定のジオメトリとの位相関係があるかどうかを確認する、つまり東京都の小地域の空間データと駅の座標位置になんらかの位相関係があればTRUEを返します。 -+ sdo_geometry:Oracleのデータベース上に点やポリゴンを収容するオブジェクト型です。引数の2001は二次元の点を表し、8307はWGS84経度/緯度座標系に関連付けられています。詳しくは[こちら](https://docs.oracle.com/adb/121/SPATL/sdo_geometry-object-type.htm#SPATL489){:target="_blank"} をご参照ください。 ++ sdo_geometry:Oracleのデータベース上に点やポリゴンを収容するオブジェクト型です。引数の2001は二次元の点を表し、8307はWGS84経度/緯度座標系に関連付けられています。詳しくは[こちら](https://docs.oracle.com/cd/F19136_01/spatl/spatial-datatypes-metadata.html#GUID-683FF8C5-A773-4018-932D-2AF6EC8BC119){:target="_blank"} をご参照ください。 + sdo_point_type:点ジオメトリの座標を格納するオブジェクト型です。 10秒ほど待つと、以下のような結果が返されます。東京都の各駅周辺の地域の年齢階層別の人口が表示されています。 @@ -378,7 +378,7 @@ Oracle Spatial StudioはAutonomous Databaseに標準で含まれております
# 参考資料 -+ 『共有Exadata InfrastructureでのOracle Autonomous Databaseの使用』 [14 Autonomous DatabaseでのOracle Spatialの使用](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/spatial-autonomous-database.html#GUID-2090A775-E049-4695-B371-E583313A5F8C){:target="_blank"} ++ 『Oracle Autonomous Database Serverlessの使用』 [Autonomous DatabaseでのOracle Spatialの使用](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/spatial-autonomous-database.html#GUID-2090A775-E049-4695-B371-E583313A5F8C){:target="_blank"} + Oracle Database 『開発者ガイド』 [20 空間演算子](https://docs.oracle.com/cd/E96517_01/spatl/spatial-operators-reference.html#GUID-85422854-5133-4F1D-BF0E-228CA6EDAF87){:target="_blank"} diff --git a/tutorials/_adb/adb215-graph.md b/tutorials/_adb/adb215-graph.md index 60df3ec941..72ea232947 100644 --- a/tutorials/_adb/adb215-graph.md +++ b/tutorials/_adb/adb215-graph.md @@ -8,7 +8,7 @@ layout: single # はじめに -この記事は["Graph Studio: Finding Circular Payment Chains using Graph Queries Workshop"](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/workshop-attendee-2?p210_workshop_id=770&p210_type=3&session=8859536952446) +この記事は["Graph Studio: Find Circular Payment Chains with Graph Queries in Autonomous Database"](https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=770&clear=RR,180&session=109952730335961) の記事と補足事項を日本語で解説した内容になります。 # Graph Studioとは @@ -28,8 +28,7 @@ Graph Studioでは下記のような機能を利用可能です。 - CSVファイルのデータをAutonomous Databaseにアップロードする方法(SQL Developer Web (Database Actions SQL)) - Graph Studioへの接続方法 - PGQLクエリ(グラフクエリ言語)を用いたグラフ作成方法 -- Graph Studioの分析用ノートブックの作成方法 -- PGQLクエリを使ってノートブック上でグラフをクエリ&可視化方法 +- PGQLクエリを使ったノートブック上でグラフをクエリ&可視化方法 具体的な題材として、今回は金融トランザクションから、循環的な資金の流れを見つける分析を行います。 @@ -40,8 +39,7 @@ Graph Studioでは下記のような機能を利用可能です。 + [2.データの準備(取込み)](#anchor2) + [3.データの準備(整形)](#anchor3) + [4.Graph Studioにてリレーショナル表からグラフを作成](#anchor4) - + [5.Graph Studioにて作成したグラフのクエリ](#anchor5) - + [6.ノートブック上のクエリ](#anchor6) + + [5.ノートブック上のクエリ](#anchor5) **前提条件 :** + Oracle Cloudのアカウント @@ -62,33 +60,47 @@ Always Freeの範囲内でも十分に確認できる題材となっているの 1. OCIコンソール上でAutonomous Databaseのインスタンス詳細画面を開く - ![adbtop.jpg](adbtop.jpg) + ![alt text](1.png) 1. ツールタブに移動して、データベースアクションを開く - ![adbdbaction.jpg](adbdbaction.jpg) + ![alt text](2.png) -1. ADMINユーザーでデータベースアクションにログイン - - ![dbactionslogin](dbactionslogin.jpg) 1. 管理より、データベースユーザー作成画面へ移動 - ![dbuser.jpg](dbuser.jpg) + ![alt text](3.png) 1. ユーザーの作成ボタンをクリック - ![mkuser.jpg](mkuser.jpg) + ![alt text](4.png) 1. グラフ用のユーザを作成 - ユーザー名とパスワードを任意の文字で設定して、グラフとWebアクセスのオプションを有効化します。表領域の割り当てはデフォルトよりも多く割り当てておくと、後々のグラフ作成時に便利ですが、デフォルトのままでも今回の内容では問題ありません。 - ユーザーの作成を押して、操作を完了させます。 - ![mkgraphuser.jpg](mkgraphuser.jpg) + 以下の様に設定します。 + - ユーザー設定 + - ユーザー名 - GRAPHUSER + - パスワード - 任意(本チュートリアルでは、Welcome12345#とします) + - 表領域 - UNLIMITED + - グラフ - 有効化 + - Webアクセス - 有効化 + + - 権限 + - DWROLE - 付与済み、デフォルト + + ![alt text](5.png) + + ![alt text](6.png) + +1. 一旦Data Actionsからサインアウトします。 + + ![alt text](7.png) + +1. 作成したGRAPHUSERとしてサインインします。 -これでGraph Studioが利用可能になりました。 -後程Graph Studioにログインするので、設定したユーザー名とパスワードをメモしておきましょう。 + ![alt text](8.png) +これで準備完了です。
@@ -110,29 +122,29 @@ Always Freeの範囲内でも十分に確認できる題材となっているの 入手したcsvファイルをデータベースアクション画面からデータベースへとロードしていきます。 1. データベースアクションのトップから、データロードの機能を選択 - ![datatool.jpg](datatool.jpg) + ![alt text](9.png) -1. データのロード、ローカルファイルからのアップロードを確認し、次へ +1. データのロードを選択し、次へ - データ処理の方法はデフォルトで、データのロードが選択されており、データの場所もデフォルトでローカルファイルからのアップロードが選択されているので、そのまま次へを押します。 - ![dataload.jpg](dataload.jpg) + ![alt text](10.png) 1. ファイルのアップロード ファイルの選択画面になるので、今回使用する二つのcsvデータを選択します。 今回は以下の二つのファイルを同時にアップロードします。 - - account.csv - - the banktxns.csv + - bank_accounts.csv + - bank_txns.csv - ![ddfiles.png](ddfiles.png) - ![ddselect.png](ddselect.png) + ![alt text](11.png) -1. 選択ができたら、緑色の開始ボタンを押して、データロードを実行 - ![ddloading.png](ddloading.png) +1. 開始ボタンを押して、データロードを実行 + + ![alt text](12.png) 1. データが正常にロードされたことが確認後、右下の完了ボタンを押しデータのロードを終了 - ![ddfine.png](ddfine.png) + + ![alt text](13.png) @@ -141,7 +153,8 @@ Always Freeの範囲内でも十分に確認できる題材となっているの csvのデータをデータベースにアップロードすることが完了したので、次はそのデータに対して主キーや外部参照制約などを追加していきます。この操作もデータベースアクション上で実行可能です。 1. SQL問い合わせ画面を開く - ![dbasql.png](dbasql.png) + + ![alt text](14.png) 1. fixup.sqlファイルの内容を実行 @@ -167,16 +180,10 @@ csvのデータをデータベースにアップロードすることが完了 1. 実行結果の確認 下記のような実行結果になっていればクエリは成功しています。 - ![fixupsql.png](fixupsql.png) -1. CSVから取り込んだデータを確認 - - 今回の記事で取り込んだ二つのテーブルの内容を確認します。 - BANK_ACCOUNTSテーブルは アカウントIDと名前を持っています - もう一つのTXNSテーブルはカラムとして、fromとtoという送金者と受け取りの人の口座IDを示す列になっています。 - ![importeddata.png](importeddata.png) + ![alt text](15.png) -これらの二つのリレーショナル表から、次のステップではGraph Studioにてグラフを作成していきます。 +BANK_ACCOUNTSと、BANK_TXNSという二つのリレーショナル表から、次のステップではGraph Studioにてグラフを作成していきます。
@@ -184,261 +191,214 @@ csvのデータをデータベースにアップロードすることが完了 # 4. Graph Studioにてリレーショナル表からグラフを作成 -1. Graph Studioへログイン - - Autonomous Databaseの詳細から、ツールタブを開き、Graph Studioを開きます。 - ![opgraphstudio.png](opgraphstudio.png) - -1. Graph Studioへのサインイン - - ADMINではGraph Studioには入れないので、作成したGraph用のユーザーでサインインをしましょう。 - ![signingraph.png](signingraph.png) +ロードした表を基に、グラフを作成していきます。 -1. メニュー画面の表示 - - メニューは左側のアイコンで、それぞれの機能へ移動ができます。上から順に説明すると、下記のようなアイコンの機能になっています。 - - ホームアイコン:ログイン後に見れるトップページに移動 - - モデルアイコン:グラフのモデリング用ページに移動 - - グラフアイコン:すでに存在するグラフが確認できます。ここからモデリングやPGQLのクエリも可能です。 - - ノートブックアイコン:グラフの分析機能を利用可能なノートブック作成ページに移動 - - ジョブアイコン:バックグラウンドで動いているジョブの確認ページに移動 - ![graphstudiotop.png](graphstudiotop.png) - -1. モデリングの機能でリレーショナル表からグラフを作成 - - 左メニューの、上から2つ目のModelsアイコンをクリックして、モデリングをスタートします。 - ![modeling.png](modeling.png) +1. Autonomous Databaseの詳細から、ツールタブを開き、Graph Studioを開きます。 -1. リレーショナル表一覧の確認 + ![alt text](16.png) - モデリングのページに移動すると、参照可能なデータベース上のリレーショナル表一覧が確認できます。 +1. ADMINではGraph Studioには入れないので、作成したGraph用のユーザーでサインインをしましょう。 - 今回のデータでは、ANK_ACCOUNTS と BANK_TXNS の表を使用するので選択して、真ん中の→アイコンを押して、右側の選択画面にデータを移動します。準備ができたら、Nextボタンを押して、次へ進みます。 - ![modelselections.png](modelselections.png) + ![alt text](17.png) +1. 左メニューの、上から2つ目のグラフアイコンをクリックして、モデリングをスタートします。 -1. 選択した表のグラフへのマッピングを確認 - - 画面上半分の左側には元のリレーショナル表、右側にはマッピング予定のグラフが確認できます。Vertexはグラフの頂点で、Edgeはグラフの辺を表します。 - ![modelingve.png](modelingve.png) + ![alt text](18.png) -1. マッピングプレビューの確認 - - Previewボタンを押すと、表からグラフへのマッピング予定のデータ構造が確認できます。 - 今回のデータでは、ノードの種類もエッジの種類も1つのみなので、グラフのプレビューでは1つのノードとエッジのみが表示されます。あくまでも、これはマッピングのプレビューなので、実際のグラフは同じ種類同士のやり取りで口座同士が送金するため、完成形の見た目はマッピングのプレビューとは異なります。 - ![modelpv.png](modelpv.png) +1. グラフの作成をクリックします。 -1. マッピングのソースの確認 - - Sourceでは表形式をグラフ形式に変換するためのPGQL文を確認できます。このPGQLはDDLのようなものです。 - bank_accounts表がノードとして変換され、bank transaction表がエッジとして変換されます。 - マッピング自動で生成されているため、列の情報の中身までは見てくれません。ここではソースとしてto acount id,向かう先としてfrom account id がマッピングされておりますが、 - 実際の関係性はソースがform accountでデスティネーションは to account id なので入れ替えます。 - ![modelsource.png](modelsource.png) + ![alt text](19.png) - 下記のように入れ替えると、toとfromの関係性が正しくマッピングができます。 - ![modelsourceswped.png](modelsourceswped.png) +1. グラフ名を入力し、次へをクリック + - グラフ名 - BANK_GRAPH -1. モデルの保存 + ![alt text](20.png) - プレビューやデザイナータブに移動しようとすると、この変更内容について保存するかどうか聞かれるので、Saveを押しましょう。(Nextを押してしまうと変更が保存されない場合があるので注意してください) - ![modelsourcesave.png](modelsourcesave.png) +1. リレーショナル表一覧の確認 +モデリングのページに移動すると、参照可能なデータベース上のリレーショナル表一覧が確認できます。今回のデータでは、BANK_ACCOUNTS と BANK_TXNS の表を使用するので選択して、真ん中の→アイコンを押して、右側の選択画面にデータを移動します。 -1. グラフの確認 + ![alt text](21.png) - PGQL文を確認後Nextボタンを押します。 - ![modelenext.png](modelenext.png) + 準備ができたら、次ボタンを押して、次へ進みます。 -1. 作成予定のグラフの確認 + ![alt text](22.png) - Summaryで作成予定のグラフを確認したら、Crreate Graphを押して、グラフを作成します。 - ![modelcreategraph.png](modelcreategraph.png) -1. グラフ情報の入力 +1. 選択した表のグラフへのマッピングを確認 + 画面上半分の左側には元のリレーショナル表、右側にはマッピング予定のグラフが確認できます。Vertexはグラフの頂点で、Edgeはグラフの辺を表します。 - createボタンを押すと、グラフの情報の入力を求められるので、名前を入力して、作成します。 - ![modelgname.png](modelgname.png) + ![alt text](23.png) -1. グラフの作成 +1. BANK_ACCOUNTSをクリックし、頂点ラベルをACCOUNTSに変更します。変更したらチェックマークを押して保存します。 + ![alt text](24.png) - createボタンを押した後は、画面が変更され、作成中のjobがご確認いただけます。 - 数分程度でグラフの作成は完了します。 - ![jobs.png](jobs.png) +1. BANK_TXNSをクリックし、頂点ラベルをTRANSFERSに変更します。変更したらチェックマークを押して保存します。両方の頂点ラベルを変更したら、次ボタンを押します。 + ![alt text](25.png) -最初に作成されたグラフ自体は、オラクルデータベースのテーブル上に保存されており、メモリに読み込むというオプションは、作成したグラフをメモリに読み込むことで、分析用のアルゴリズム等を実行することが可能になります。 -
+1. グラフの作成をクリックし、グラフを作成します。 - + ![alt text](26.png) -
+1. メモリーにロードはオンにしたままグラフの作成をクリックします。 -# 5. Graph Studioにて作成したグラフのクエリ -作成したデータの更新方法は、トランザクション、分析と2種類の方法があり、Graph Studioの場合、トランザクションはクエリメニューで行い、アルゴリズム実行等の分析用途ではノートブックでのクエリになります。 + ![alt text](27.png) -1. クエリ画面の確認 - - クエリ画面でデータ操作を行うと、データベース内のグラフに対する変更操作であるため、データに対する変更は永続化されます。一部の分析用のグラフアルゴリズムはこの画面からは実行できません。 - ノートブックへのクエリはクエリメニューからは使えない、グラフアルゴリズムが実行可能になっています。データ分析の用途がメインなため、データに対する変更は永続化されません。 - ![query.png](query.png) + +# 5. ノートブック上でのクエリ +本チュートリアルでは、違法行為に使用された可能性のある銀行口座をグラフの技術を使用して特定してみたいと思います。 +1. ノートブックの作成・インポート + + 本チュートリアルでは、既に作成済みのノートブックを使用していきます。[こちら](/ocitutorials/adb/adb-data/BANK_GRAPH.dsnb)から**BANK_GRAPH.dsnb**というノートブックをダウンロードします。 -1. データベースのクエリ + ノートブック画面へは左側のメニューバーから入ることができます。画面右上のインポートをクリックします。 - GraphツールのQueryというボタンから、下記のQuery Playgroundにて、データ更新のためのクエリが実行可能です。既存のグラフにデータを追加したり、新たなグラフを作成することが可能です。 - ![クエリ画面](query.png) - ![クエリ画面2](query2.jpg) + ![alt text](28.png) -1. クエリの実行 + ダウンロードしたノートブックをドラッグアンドドロップし、インポートします。 - 今回はシンプルなセレクト文をすでに作成したグラフに対して行います + ![alt text](29.png) - ```sql - select - a0.acct_id AS a0, t1.amount AS t1, a1.acct_id AS a1 - from match (a0)-[t1]->(a1) on bank_graph - where a0.acct_id=934 - ``` - アカウントa0に対する直接的な口座取引がこれで確認できます。 + これで、ノートブックのインポートが出来ました。 - 今回はアカウントidが934のものを指定してクエリを実行しました。 - ![query934one.png](query934one.png) + +1. 最初に、グラフをインメモリ・グラフサーバにロードします。 +以下のクエリを実行し、組み込みのセッションオブジェクトを使ってデータベースからグラフをメモリに読み込み、読み込まれたグラフを扱うPgXGraphオブジェクトを生成します。 -1. 次に口座取引が循環しているケースを探索 - 口座アカウントa0(934)を起点として、5ホップして、また起点であるa0に戻ってくるような経路を探索します。 + 三角形の実行ボタンをクリックし、クエリを実行します。 ```sql - select - a0.acct_id AS a0, t1.amount AS t1 - , a1.acct_id AS a1, t2.amount AS t2 - , a2.acct_id AS a2, t3.amount AS t3 - , a3.acct_id AS a3, t4.amount AS t4 - , a4.acct_id AS a4, t5.amount AS t5 - from match (a0)-[t1]->(a1)-[t2]->(a2)-[t3]->(a3)-[t4]->(a4)-[t5]->(a0) on bank_graph - where a0.acct_id=934 and all_different(a0, a1, a2, a3, a4) + %python-pgx + GRAPH_NAME="BANK_GRAPH" + # try getting the graph from the in-memory graph server + graph = session.get_graph(GRAPH_NAME) + # if it does not exist read it into memory + if (graph == None) : + session.read_graph_by_name(GRAPH_NAME, "pg_view") + print("Graph "+ GRAPH_NAME + " successfully loaded") + graph = session.get_graph(GRAPH_NAME) + else : + print("Graph '"+ GRAPH_NAME + "' already loaded") ``` - 結果が一覧で表示されました。 - ![query934ad.png](query934ad.png) - -1. クエリから直接グラフを作成する +1. 先ずは、転送数が多い銀行口座の上位10口座を探してみます。 + 以下のクエリを実行します。 - 新たにグラフを作成したい場合、下記のようにグラフ構文であるPGQLを利用して、プロパティグラフを作成することができます。 - 一行目のクエリで空のグラフを作成し、その後にノードとエッジをINSERTしています。今回のグラフ名はmy_8th_graphとしていますが、お好みのグラフ名をご指定下さい。 + %pgql-pgx + /* List 10 accounts with the most number of transactions (that is, incoming + outgoing edges) */ + SELECT a.acct_id, (in_degree(a) + out_degree(a)) AS num_transactions + FROM MATCH (a) ON bank_graph + ORDER BY num_transactions DESC + LIMIT 10 - この例では簡単に人物の情報をnodeとして、人物同士のつながりをエッジとして表しました。 - この記事のデータとは無関係のデータなので、クエリ参考例としてご活用ください。 + 口座934と387がリストの上位にあることが分かります。 + ![alt text](30.png) - ```sql - CREATE PROPERTY GRAPH my_8th_graph; - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Aさん', v."AGE" = '15'); - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Bさん'); - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Cさん'); - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Dさん'); - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Eさん'); - INSERT INTO my_8th_graph VERTEX v LABELS ("PERSON") PROPERTIES (v.id = 'Fさん'); - INSERT INTO my_8th_graph EDGE e BETWEEN src AND dst LABELS ("親") PROPERTIES (e.direction = '->') FROM MATCH (src) ON my_8th_graph, MATCH (dst) ON my_8th_graph WHERE src.id = 'Aさん' AND dst.id = 'Bさん'; - INSERT INTO my_8th_graph EDGE e BETWEEN src AND dst LABELS ("友人") PROPERTIES (e.direction = '->') FROM MATCH (src) ON my_8th_graph, MATCH (dst) ON my_8th_graph WHERE src.id = 'Bさん' AND dst.id = 'Cさん'; - INSERT INTO my_8th_graph EDGE e BETWEEN src AND dst LABELS ("友人") PROPERTIES (e.direction = '->') FROM MATCH (src) ON my_8th_graph, MATCH (dst) ON my_8th_graph WHERE src.id = 'Cさん' AND dst.id = 'Bさん'; - ``` - - ![newgraph](newgraphquery.jpg) - - +1. それでは転送数の多い、口座934を起点とする循環転送があるかどうかを確認してみます。 + 以下のクエリを実行します。 + ```sql + %pgql-pgx + /* Check if there are any circular payment chains of length 4 from acct 934 */ + SELECT v,e,v2 + FROM MATCH ALL (a)-[:TRANSFERS]->{4}(b) ON bank_graph ONE ROW PER STEP (v,e,v2) + WHERE a.acct_id=934 AND id(a) = id(b) + LIMIT 100 + ``` + 934で始まり、934で終わる長さ3ホップのサークルがあることが分かりました。 + + ![alt text](31.png) -# 6. ノートブック上でのクエリ -先ほどはデータの選択や、作成、更新に使用できるQuery画面からのクエリを行いましたが、次は分析等に使えるノートブックを活用していきましょう。クエリ画面ではできなかったアルゴリズムが実行可能ですが、ノートブック上でのデータの変更は永続化されないため、ご留意ください。 +1. 上記のクエリを変更して、長さを5ホップにした場合の循環転送の数を確認してみます。 + 資金が循環して動くときは詐欺の可能性があるので、循環転送の数が多い場合は違法行為をしている口座である場合が高くなります。 + 以下のクエリを実行します。 -1. ノートブック画面の作成 + %pgql-pgx + /* Check if there are any circular payment chains of length 5 from acct 934 */ + SELECT v,e,v2 + FROM MATCH ALL (a)-[:TRANSFERS]->{5}(b) ON bank_graph ONE ROW PER STEP (v,e,v2) + WHERE a.acct_id=934 AND id(a) = id(b) + LIMIT 100 - ノートブック画面へは左側のメニューバーから入ることができます。新たなノートブックを作成する場合、右上の作成ボタンを押しましょう。 - ![notebook](notebook.png) + 934で始まり、934で終わる循環転送の数が多いので、この口座が疑わしいということになります。 -1. 必要項目の入力 + ![alt text](32.png) - 作成ボタンクリック後には、ノートブックの作成に必要な名前の入力等が求められます。この画面で、フォルダを指定してノートブックを作成することも可能です。例えば、test1/testbookとノートブックの名前に入力すると、test1というフォルダの中にtestbookという名称のノートブックの作成が行われます。 - ![createnotebook](notebookcreation.png) - +1. ShortestPathHopDist() という分析アルゴリズムを使用し、アカウント934とアカウント387に近接しているアカウントを調べます。ShortestPathHopDist()は、934、387とグラフ内の他のすべてのアカウント間の最小ホップ数を計算します。ホップ数が少ないほど、アカウントが違法行為に関与している可能性が高くなります。 + ```sql + %python-pgx + #By default this is property refers to account #934 + vertex = graph.get_vertex("BANK_ACCOUNTS(934)") + analyst.shortest_path_hop_distance(graph, vertex, "hop_dist_from_934") + + %python-pgx + vertex = graph.get_vertex("BANK_ACCOUNTS(387)") + analyst.shortest_path_hop_distance(graph, vertex, "hop_dist_from_387") + ``` -1. コードの入力 +1. 934と387から2ホップ以下で繋がっている口座のトランザクション数を見てみます。 - 新規ノートブックにコードを記入していきます。 - 言語はmarkdownやJShell,PGQLの利用が可能で、将来的にはPythonもサポート予定となっています。 - ![creatednotebook](notebookcreated.png) - -1. コードの実行 + %pgql-pgx + SELECT a.acct_id, a.hop_dist_from_934 AS hops, in_degree(a) + out_degree(a) AS num_transactions FROM MATCH (a) ON bank_graph + WHERE hops > 0 AND hops <=2 + ORDER BY num_transactions DESC - コードを記載後、三角形の実行ボタンを押すことでプログラムの結果が出力されます。 - 一旦全てのグラフをクエリしてみます。下記コードで指定したグラフ名のグラフ全てをクエリ可能です。 + %pgql-pgx + SELECT a.acct_id, a.hop_dist_from_387 AS hops, in_degree(a) + out_degree(a) AS num_transactions FROM MATCH (a) ON bank_graph + WHERE hops > 0 AND hops <=2 + ORDER BY num_transactions DESC - ```sql - %pgql-pgx - SELECT * - FROM MATCH ()-[e]->() ON bank_graph - ``` + 934と近い口座として135、そして387と近い口座として534が挙げられます。これらも違法行為に関与している可能性があります。 -1. ノードとエッジの表示 + ![alt text](33.png) - 実行した後は、特にラベル等もついていないので、ノードとエッジのみが表示されます。 - ![notebooksa](notebooksa.png) -1. ビジュアライゼーションの変更 +1. 循環転送の数等を調べる以外にも、DeepWalkというグラフ機械学習アルゴリズムを使って違法行為に使用された可能性のある銀行口座を探すことが出来ます。 +以下のクエリを実行します。 - グラフの見た目の変更は下記ボタン部分から設定画面を開くことが可能です。 - ![notehl](notehl.png) - - ビジュアライゼーションの変更を行う場合、は設定のラベリングから、ノードとエッジのラベルを指定します。 - ![noteviz](noteviz.png) - ![notel](notel.png) - - 設定を完了すると、それぞれのノードとエッジに指定したラベルが表示されます。ビジュアライゼーションの設定はノートブックの段落ごとに行う必要があるため、段落のクローニングを行うと、設定が引き継がれたまま、別の段落でのクエリが可能になります。クローニングができたら、別のコードを上書きして実行をします。 - ![notebookcl](notebookcl.png) + %python-pgx -1. クエリの実行 + model = analyst.deepwalk_builder( + learning_rate=0.002, + num_epochs=30, + seed=1, + ) - それではここでも、ID934の口座に対して、5ホップでまたa0に戻ってくるようなパターンのものをクエリしてみましょう。先ほどのデータベースへのクエリ画面で行った場合、結果は一覧で表示されましたが、ノートブックはクエリ結果としてグラフ状の表示が可能となっております。 +2. 機械学習アルゴリズムなので、モデルをトレーニングする必要があります。以下のクエリを実行します。 - ```sql - %pgql-pgx - select * - from match (a0)-[t1]->(a1)-[t2]->(a2)-[t3]->(a3)-[t4]->(a4)-[t5]->(a0) on bank_graph - where a0.acct_id=934 and all_different(a0, a1, a2, a3, a4) - ``` + %python-pgx + import time + start_ts = time.time() + model.fit(graph) + print("DeepWalk model training completed in {:.4f} seconds".format(time.time() - start_ts)) +1. 先ずは、口座934に類似した口座を探してみます。 - ![5hid934](5hid934.png) + %python-pgx + similars_934 = model.compute_similars("BANK_ACCOUNTS(934)", 10) + print("List of nodes most similar to node 934.") + similars_934.print() - ノートブック上では、グラフアルゴリズムを活用することが可能になっており、ノード間での最短経路を求めることも可能です。これを用いて、直接やりとりの無い口座間において、仲介をしている可能性のある口座を探すことができます。 + 口座387の他に、怪しいと思われている口座135、534が上位に表示されています。 - 今回は口座番号934と66の間の取引の最短経路を求めました。この二つの口座間では直接の口座取引はありませんが、間接的な経路が存在する可能性を調査する目的でこのクエリを行っています。 + ![alt text](34.png) - ```sql - %pgql-pgx - SELECT ARRAY_AGG(a.acct_id) AS list_of_accounts - , ARRAY_AGG(ID(t)) AS list_of_transactions - , MIN(t.amount) AS min_amount_on_path - FROM MATCH TOP 5 SHORTEST ((a1) (-[t]->(a))* (a2)) on bank_graph - WHERE a1.acct_id = 934 AND a2.acct_id = 66 - ORDER BY MIN(t.amount) DESC - ``` +1. 次に、口座387に類似した口座を探してみます。 - ![t934-66.png](t934-66.png) + %python-pgx + similars_387 = model.compute_similars("BANK_ACCOUNTS(387)", 10) + print("List of nodes most similar to node 387.") + similars_387.print() - 結果を確認すると、直接指定した934と66にやり取りはありませんが、別の口座とのやり取りをたどることで、二つの口座にはつながりがあることが分かり、口座番号934と66の間の取引の最短経路が分かりました。 + 口座934の他に、口座135、534が今回も上位に表示されました。 + この結果から、口座934、387、135、534が違法行為に関与している可能性が高いと言えます。 - 上記クエリの結果で表示された経路を下記のようにクエリいただくと、経路を確認することが可能です。 - - ```sql - %pgql-pgx - SELECT * - FROM MATCH (a1)-[t]->(a2) on bank_graph - WHERE ID(t) IN (1762,845) - ``` + ![alt text](35.png) - ![t934-66id1762-845.png](t934-66id1762-845.png) + グラフのアルゴリズムを活用し、違法行為に加担している可能性の高い口座を見つける事が出来ました。 # まとめ 今回の記事を実践いただき、Graph Studioの利用の始め方から簡単なクエリの方法までご理解いただけたかと思います。 @@ -450,7 +410,7 @@ csvのデータをデータベースにアップロードすることが完了 # 参考資料 + Oracle LiveLabs -["Graph Studio: Finding Circular Payment Chains using Graph Queries Workshop"](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/workshop-attendee-2?p210_workshop_id=770&p210_type=3&session=8859536952446) +["Graph Studio: Find Circular Payment Chains with Graph Queries in Autonomous Database"](https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=770&clear=RR,180&session=109952730335961)
diff --git a/tutorials/_adb/adb215-graph/1.png b/tutorials/_adb/adb215-graph/1.png new file mode 100644 index 0000000000..d9a2d5adf0 Binary files /dev/null and b/tutorials/_adb/adb215-graph/1.png differ diff --git a/tutorials/_adb/adb215-graph/10.png b/tutorials/_adb/adb215-graph/10.png new file mode 100644 index 0000000000..6ce74cd1f3 Binary files /dev/null and b/tutorials/_adb/adb215-graph/10.png differ diff --git a/tutorials/_adb/adb215-graph/11.png b/tutorials/_adb/adb215-graph/11.png new file mode 100644 index 0000000000..d4ae8aadca Binary files /dev/null and b/tutorials/_adb/adb215-graph/11.png differ diff --git a/tutorials/_adb/adb215-graph/12.png b/tutorials/_adb/adb215-graph/12.png new file mode 100644 index 0000000000..d3d6771417 Binary files /dev/null and b/tutorials/_adb/adb215-graph/12.png differ diff --git a/tutorials/_adb/adb215-graph/13.png b/tutorials/_adb/adb215-graph/13.png new file mode 100644 index 0000000000..6b6e3f319f Binary files /dev/null and b/tutorials/_adb/adb215-graph/13.png differ diff --git a/tutorials/_adb/adb215-graph/14.png b/tutorials/_adb/adb215-graph/14.png new file mode 100644 index 0000000000..b5b20f9b6d Binary files /dev/null and b/tutorials/_adb/adb215-graph/14.png differ diff --git a/tutorials/_adb/adb215-graph/15.png b/tutorials/_adb/adb215-graph/15.png new file mode 100644 index 0000000000..8726886eb3 Binary files /dev/null and b/tutorials/_adb/adb215-graph/15.png differ diff --git a/tutorials/_adb/adb215-graph/16.png b/tutorials/_adb/adb215-graph/16.png new file mode 100644 index 0000000000..cf46543f54 Binary files /dev/null and b/tutorials/_adb/adb215-graph/16.png differ diff --git a/tutorials/_adb/adb215-graph/17.png b/tutorials/_adb/adb215-graph/17.png new file mode 100644 index 0000000000..2fade91c2c Binary files /dev/null and b/tutorials/_adb/adb215-graph/17.png differ diff --git a/tutorials/_adb/adb215-graph/18.png b/tutorials/_adb/adb215-graph/18.png new file mode 100644 index 0000000000..f4a74f02d1 Binary files /dev/null and b/tutorials/_adb/adb215-graph/18.png differ diff --git a/tutorials/_adb/adb215-graph/19.png b/tutorials/_adb/adb215-graph/19.png new file mode 100644 index 0000000000..961cbe98bb Binary files /dev/null and b/tutorials/_adb/adb215-graph/19.png differ diff --git a/tutorials/_adb/adb215-graph/2.png b/tutorials/_adb/adb215-graph/2.png new file mode 100644 index 0000000000..e18b817793 Binary files /dev/null and b/tutorials/_adb/adb215-graph/2.png differ diff --git a/tutorials/_adb/adb215-graph/20.png b/tutorials/_adb/adb215-graph/20.png new file mode 100644 index 0000000000..4ca53cc7f4 Binary files /dev/null and b/tutorials/_adb/adb215-graph/20.png differ diff --git a/tutorials/_adb/adb215-graph/21.png b/tutorials/_adb/adb215-graph/21.png new file mode 100644 index 0000000000..8a365b7611 Binary files /dev/null and b/tutorials/_adb/adb215-graph/21.png differ diff --git a/tutorials/_adb/adb215-graph/22.png b/tutorials/_adb/adb215-graph/22.png new file mode 100644 index 0000000000..645831d0b3 Binary files /dev/null and b/tutorials/_adb/adb215-graph/22.png differ diff --git a/tutorials/_adb/adb215-graph/23.png b/tutorials/_adb/adb215-graph/23.png new file mode 100644 index 0000000000..5194058075 Binary files /dev/null and b/tutorials/_adb/adb215-graph/23.png differ diff --git a/tutorials/_adb/adb215-graph/24.png b/tutorials/_adb/adb215-graph/24.png new file mode 100644 index 0000000000..cde44a7f88 Binary files /dev/null and b/tutorials/_adb/adb215-graph/24.png differ diff --git a/tutorials/_adb/adb215-graph/25.png b/tutorials/_adb/adb215-graph/25.png new file mode 100644 index 0000000000..dc05acd3cb Binary files /dev/null and b/tutorials/_adb/adb215-graph/25.png differ diff --git a/tutorials/_adb/adb215-graph/26.png b/tutorials/_adb/adb215-graph/26.png new file mode 100644 index 0000000000..cbe99882ed Binary files /dev/null and b/tutorials/_adb/adb215-graph/26.png differ diff --git a/tutorials/_adb/adb215-graph/27.png b/tutorials/_adb/adb215-graph/27.png new file mode 100644 index 0000000000..0a7d9d1daa Binary files /dev/null and b/tutorials/_adb/adb215-graph/27.png differ diff --git a/tutorials/_adb/adb215-graph/28.png b/tutorials/_adb/adb215-graph/28.png new file mode 100644 index 0000000000..63f71ce322 Binary files /dev/null and b/tutorials/_adb/adb215-graph/28.png differ diff --git a/tutorials/_adb/adb215-graph/29.png b/tutorials/_adb/adb215-graph/29.png new file mode 100644 index 0000000000..eee83eef54 Binary files /dev/null and b/tutorials/_adb/adb215-graph/29.png differ diff --git a/tutorials/_adb/adb215-graph/3.png b/tutorials/_adb/adb215-graph/3.png new file mode 100644 index 0000000000..0531f3dbcc Binary files /dev/null and b/tutorials/_adb/adb215-graph/3.png differ diff --git a/tutorials/_adb/adb215-graph/30.png b/tutorials/_adb/adb215-graph/30.png new file mode 100644 index 0000000000..6f19952ee7 Binary files /dev/null and b/tutorials/_adb/adb215-graph/30.png differ diff --git a/tutorials/_adb/adb215-graph/31.png b/tutorials/_adb/adb215-graph/31.png new file mode 100644 index 0000000000..0288e85d28 Binary files /dev/null and b/tutorials/_adb/adb215-graph/31.png differ diff --git a/tutorials/_adb/adb215-graph/32.png b/tutorials/_adb/adb215-graph/32.png new file mode 100644 index 0000000000..95b72fac8f Binary files /dev/null and b/tutorials/_adb/adb215-graph/32.png differ diff --git a/tutorials/_adb/adb215-graph/33.png b/tutorials/_adb/adb215-graph/33.png new file mode 100644 index 0000000000..2a0715feae Binary files /dev/null and b/tutorials/_adb/adb215-graph/33.png differ diff --git a/tutorials/_adb/adb215-graph/34.png b/tutorials/_adb/adb215-graph/34.png new file mode 100644 index 0000000000..51f85b58f0 Binary files /dev/null and b/tutorials/_adb/adb215-graph/34.png differ diff --git a/tutorials/_adb/adb215-graph/35.png b/tutorials/_adb/adb215-graph/35.png new file mode 100644 index 0000000000..513b397c21 Binary files /dev/null and b/tutorials/_adb/adb215-graph/35.png differ diff --git a/tutorials/_adb/adb215-graph/4.png b/tutorials/_adb/adb215-graph/4.png new file mode 100644 index 0000000000..aa65cd2c79 Binary files /dev/null and b/tutorials/_adb/adb215-graph/4.png differ diff --git a/tutorials/_adb/adb215-graph/5.png b/tutorials/_adb/adb215-graph/5.png new file mode 100644 index 0000000000..8aa4c0ed54 Binary files /dev/null and b/tutorials/_adb/adb215-graph/5.png differ diff --git a/tutorials/_adb/adb215-graph/6.png b/tutorials/_adb/adb215-graph/6.png new file mode 100644 index 0000000000..f348138c47 Binary files /dev/null and b/tutorials/_adb/adb215-graph/6.png differ diff --git a/tutorials/_adb/adb215-graph/7.png b/tutorials/_adb/adb215-graph/7.png new file mode 100644 index 0000000000..0edbe52f5a Binary files /dev/null and b/tutorials/_adb/adb215-graph/7.png differ diff --git a/tutorials/_adb/adb215-graph/8.png b/tutorials/_adb/adb215-graph/8.png new file mode 100644 index 0000000000..aa091a957f Binary files /dev/null and b/tutorials/_adb/adb215-graph/8.png differ diff --git a/tutorials/_adb/adb215-graph/9.png b/tutorials/_adb/adb215-graph/9.png new file mode 100644 index 0000000000..8f737a0dc9 Binary files /dev/null and b/tutorials/_adb/adb215-graph/9.png differ diff --git a/tutorials/_adb/adb216-patch-spa.md b/tutorials/_adb/adb216-patch-spa.md index 6d475dbef4..cc16fd3e08 100644 --- a/tutorials/_adb/adb216-patch-spa.md +++ b/tutorials/_adb/adb216-patch-spa.md @@ -16,9 +16,7 @@ header: Autonomous Database(ADB)は、事前定義されたメンテナンス・ウィンドウの中でデータベースに自動的にパッチを適用します。ADBではこのパッチ適用によって性能劣化が生じない仕組みが実装されています。 ![SQL_PLAN_MANAGEMENTイメージ](SQL_PLAN_MANAGEMENT.png) -それでもアプリケーションの性能劣化に不安がある場合に利用できるのが、先行してパッチを適用できるearly patchという機能です。パッチは毎週もしくは隔週で一斉に当てられますが、このearly patchでは通常より1週早く同じパッチが当てられます。テスト環境用ADBをearly patchで作成しておくことで、本番環境適用前にパッチ適用の影響テストを行うことができます。 - -**※early patchは、Ashburn・Phoenix・London・Frankfurtリージョンでのみ利用可能な機能です。(2022/1時点) 東京や大阪リージョンで利用したい場合は、担当営業までご相談ください。** +それでもアプリケーションの性能劣化に不安がある場合に利用できるのが、先行してパッチを適用できる早期パッチという機能です。パッチは毎週もしくは隔週で一斉に当てられますが、この早期パッチでは通常より1週早く同じパッチが当てられます。テスト環境用ADBを早期パッチで作成しておくことで、本番環境適用前にパッチ適用の影響テストを行うことができます。 また、ADBでは、Oracle Databaseオプション「Real Application Testing(RAT)」に含まれる機能の1つであるSQL Performance Analyzer(SPA)を使用することができます。 SPAを利用すると、システム変更前後のSQLワークロードの実行統計を比較して変更の影響を測定することができます。詳細はこちらをご覧ください。 @@ -55,7 +53,7 @@ SPAを利用すると、システム変更前後のSQLワークロードの実 # 1. 環境の準備 ## 1-1. 本番環境用ADBの作成 -まずは本番環境用ADBである**ATPprod**を作成します。ADBの構成は以下になります。なお、本記事ではADBをはじめとする各リソースは全てAshburnリージョンで作成します。 +まずは本番環境用ADBである**ATPprod**を作成します。ADBの構成は以下になります。なお、本記事ではADBをはじめとする各リソースは全てAshburnリージョンで作成します。(Tokyo/Osakaリージョンでも実施可能です) + **ワークロード・タイプ**:トランザクション処理 + **デプロイメント・タイプ**:サーバーレス diff --git a/tutorials/_adb/adb217-use-database-actions/img1_1.png b/tutorials/_adb/adb217-use-database-actions/img1_1.png index d992a3da4c..b4513ac7b4 100644 Binary files a/tutorials/_adb/adb217-use-database-actions/img1_1.png and b/tutorials/_adb/adb217-use-database-actions/img1_1.png differ diff --git a/tutorials/_adb/adb217-use-database-actions/img2_2.png b/tutorials/_adb/adb217-use-database-actions/img2_2.png index bfe1cde6c0..f524e1a8d5 100644 Binary files a/tutorials/_adb/adb217-use-database-actions/img2_2.png and b/tutorials/_adb/adb217-use-database-actions/img2_2.png differ diff --git a/tutorials/_adb/adb217-use-database-actions/img3_1_1.png b/tutorials/_adb/adb217-use-database-actions/img3_1_1.png index eff8bd17b7..caa415d99e 100644 Binary files a/tutorials/_adb/adb217-use-database-actions/img3_1_1.png and b/tutorials/_adb/adb217-use-database-actions/img3_1_1.png differ diff --git a/tutorials/_adb/adb217-use-database-actions/img3_2_1.png b/tutorials/_adb/adb217-use-database-actions/img3_2_1.png index ef417192be..260b541f56 100644 Binary files a/tutorials/_adb/adb217-use-database-actions/img3_2_1.png and b/tutorials/_adb/adb217-use-database-actions/img3_2_1.png differ diff --git a/tutorials/_adb/adb217-use-database-actions/img3_3_1.png b/tutorials/_adb/adb217-use-database-actions/img3_3_1.png index 74d47d7399..19985334cc 100644 Binary files a/tutorials/_adb/adb217-use-database-actions/img3_3_1.png and b/tutorials/_adb/adb217-use-database-actions/img3_3_1.png differ diff --git a/tutorials/_adb/adb301-create-source-db.md b/tutorials/_adb/adb301-create-source-db.md index f8f851becc..8b8a2ca9eb 100644 --- a/tutorials/_adb/adb301-create-source-db.md +++ b/tutorials/_adb/adb301-create-source-db.md @@ -4,8 +4,8 @@ excerpt: "まずは準備作業として、現行ご利用いただいているO order: "3_301" layout: single header: - teaser: "/adb/adb301-tac/sa00x.png" - overlay_image: "/adb/adb301-tac/sa00x.png" + teaser: "/adb/adb301-create-source-db/img103.png" + overlay_image: "/adb/adb301-create-source-db/img103.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=776 --- @@ -21,7 +21,11 @@ header: * [301: 移行元となるデータベースを作成しよう(本章)](/ocitutorials/adb/adb301-create-source-db){:target="_blank"} * [302: スキーマ・アドバイザを活用しよう](/ocitutorials/adb/adb302-schema-adviser){:target="_blank"} * [303: Data Pumpを利用してデータを移行しよう](/ocitutorials/adb/adb303-datapump){:target="_blank"} - * [304: ZDM/DMSを利用し、ダウンタイムを最小限に移行しよう(準備中)] + * [304: ZDM/DMSを利用し、ダウンタイムを最小限に移行しよう](/ocitutorials/adb/adb304-database-migration-prep){:target="_blank"} + * [305 : OCI Database Migration Serviceを使用したデータベースのオフライン移行](/ocitutorials/adb/adb304-database-migration-prep){:target="_blank"} + * [306 : OCI Database Migration Serviceを使用したデータベースのオンライン移行](/ocitutorials/adb/adb304-database-migration-prep){:target="_blank"} + +
---- @@ -57,7 +61,7 @@ TeraTermを起動しBaseDBインスタンスにSSHでアクセスするところ 以降では、BaseDBインスタンスが以下の値で作成されていることを前提として記載しています。(その他、DBシステム名やシェイプ等は基本的に任意です) * ホスト名接頭辞 : **dbcs01** -* データベースのバージョン:**12.2** +* データベースのバージョン:**19.23** * パスワード:**WelCome123#123#** * PDBの名前:**pdb1** diff --git a/tutorials/_adb/adb302-cpat.md b/tutorials/_adb/adb302-cpat.md index f37a6e1dd6..639e9f0b5f 100644 --- a/tutorials/_adb/adb302-cpat.md +++ b/tutorials/_adb/adb302-cpat.md @@ -4,8 +4,8 @@ excerpt: "Autonomous Databaseへの移行前に、現行Oracle Database環境に order: "3_302" layout: single header: - teaser: "/adb/adb302-xxx/sa00x.png" - overlay_image: "/adb/adb302-xxx/sa00x.png" + teaser: "/adb/adb302-cpat/img102.png" + overlay_image: "/adb/adb302-cpat/img102.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=776 --- @@ -15,7 +15,7 @@ header: Autonomous Databaseでは性能・可用性・セキュリティの観点から特定のデータベースオブジェクトの作成が制限されています。 -具体的な制限事項は[マニュアル](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/experienced-database-users.html#GUID-58EE6599-6DB4-4F8E-816D-0422377857E5){:target="_blank"}に記載がございますが、これら制限対象のオブジェクトを利用しているかなどを確認するために、オラクルはCloud Premigration Advisor Tool(CPAT)というツールを提供しています。 +具体的な制限事項は[マニュアル](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/migration-autonomous-database.html#GUID-F2471136-3BBA-462C-9E5B-12A144AD7D56){:target="_blank"}に記載がございますが、これら制限対象のオブジェクトを利用しているかなどを確認するために、オラクルはCloud Premigration Advisor Tool(CPAT)というツールを提供しています。 ![イメージ](img101.png) @@ -50,7 +50,7 @@ Autonomous Databaseでは性能・可用性・セキュリティの観点から # 1. Cloud Premigraiton Advisor Tool (CPAT) とは? Oracle DatabaseインスタンスをOracleクラウドに移行する際に、問題になる可能性があるコンテンツや移行を妨げる可能性があるその他の要因をチェックするJavaベースのツールです。移行チェックのツールとして以前提供されていたスキーマ・アドバイザの後継となります。 スキーマ・アドバイザはデータベースにPL/SQLパッケージのインストールが必要でしたが、CPATは読み取り専用でデータベースに対して変更を与えることはありません。 -サポート対象となるOracle Databaseのバージョンは11.2.0.4以降です(2022/3時点)。 +サポート対象となるOracle Databaseのバージョンは11.2.0.4以降です(2024/7時点)。 また、現時点では物理移行のチェックはサポートされておらず、デフォルトでDataPumpによる移行が想定されています。 @@ -179,7 +179,7 @@ view full_advisor_premigration_advisor_report.txt # 参考資料 * [Autonomous Database Cloud 技術詳細](https://speakerdeck.com/oracle4engineer/autonomous-database-cloud-ji-shu-xiang-xi){:target="_blank"} -* [マニュアル(ADB-Sの各種制限事項について)](https://docs.oracle.com/cd/E83857_01/paas/autonomous-adb/adbsa/experienced-database-users.html#GUID-58EE6599-6DB4-4F8E-816D-0422377857E5){:target="_blank"} +* [マニュアル(ADB-Sの各種制限事項について)](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/migration-autonomous-database.html#GUID-F2471136-3BBA-462C-9E5B-12A144AD7D56){:target="_blank"} * [ Cloud Premigration Advisor Tool (CPAT) Analyzes Databases for Suitability of Cloud Migration (Doc ID 2758371.1)](https://support.oracle.com/knowledge/Oracle%20Cloud/2758371_1.html){:target="_blank"} diff --git a/tutorials/_adb/adb303-datapump.md b/tutorials/_adb/adb303-datapump.md index 95b8974e7b..c5bef10193 100644 --- a/tutorials/_adb/adb303-datapump.md +++ b/tutorials/_adb/adb303-datapump.md @@ -4,8 +4,8 @@ excerpt: "まずはシンプルにData Pumpを利用した移行方法につい order: "3_303" layout: single header: - teaser: "/adb/adb303-xxx/img00x.png" - overlay_image: "/adb/adb303-xxx/img00x.png" + teaser: "/adb/adb303-datapump/img101.png" + overlay_image: "/adb/adb303-datapump/img101.png" overlay_filter: rgba(34, 66, 55, 0.7) #link: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=776 --- @@ -146,7 +146,7 @@ vi expdp_hr.sh > - dumpfile句に指定するファイル名にはワイルドカード(%u)を付けてください。複数のファイルを同時に出力することで高速化が可能です。 > - filesize句は5GBよりも小さい値を指定してください。ブラウザ経由でオブジェクトストレージに転送できるデータは1ファイル辺り最大5GBの制限があるためです。 > - excludeオプションを利用することで、不要なオブジェクトを除いてエクスポートすることが可能です。例えばADWを利用するような分析系のアプリの場合において、性能観点で付与した索引はExadataを利用すると不要になることが多いため、IndexをExcludeの引数に指定します。 - > - 詳細は[「マニュアル(Autonomous DatabaseでのOracle Data Pumpを使用したデータのインポート)」](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/load-data-data-pump.html#GUID-30DB1EEA-DB45-49EA-9E97-DF49A9968E24){:target="_blank"}を参照ください。 + > - 詳細は[「マニュアル(Autonomous DatabaseでのOracle Data Pumpを使用したデータのインポート)」](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/load-data-data-pump.html#GUID-30DB1EEA-DB45-49EA-9E97-DF49A9968E24){:target="_blank"}を参照ください。 ## 1-3. エクスポートを実施 @@ -210,7 +210,6 @@ chmod +x expdp_hr.sh (ここまでの手順にて、移行元データベースとして利用していたBaseDBインスタンスではないことにご注意ください。) ## 4-1. 仮想マシンへのアクセス - 1. TeraTermを起動し、仮想マシンにopcユーザーでログインします。 1. opcユーザーからoracleユーザにスイッチします。 @@ -223,7 +222,7 @@ sudo su - oracle 1. ADBに接続するための環境変数の設定 ```sh export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib -export TNS_ADMIN=/home/oracle/labs/wallets +export TNS_ADMIN=/home/oracle/labs/wallets_atp01 ``` 1. ADBインスタンスにSQL*Plusでログインします。 @@ -358,7 +357,7 @@ Data Pumpを利用したAutonomous Database へのデータ移行についてご # 参考資料 * [Autonomous Database Cloud 技術詳細](https://speakerdeck.com/oracle4engineer/autonomous-database-cloud-ji-shu-xiang-xi){:target="_blank"} -* [マニュアル(Autonomous DatabaseでのOracle Data Pumpを使用したデータのインポート)](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/load-data-data-pump.html#GUID-30DB1EEA-DB45-49EA-9E97-DF49A9968E24){:target="_blank"} +* [マニュアル(Autonomous DatabaseでのOracle Data Pumpを使用したデータのインポート)](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/load-data-data-pump.html#GUID-30DB1EEA-DB45-49EA-9E97-DF49A9968E24){:target="_blank"}
diff --git a/tutorials/_adb/adb304-database-migration-prep.md b/tutorials/_adb/adb304-database-migration-prep.md index 325a517919..9c8c2b281b 100644 --- a/tutorials/_adb/adb304-database-migration-prep.md +++ b/tutorials/_adb/adb304-database-migration-prep.md @@ -264,108 +264,98 @@ exit; ## 3-1. ソースCDBの登録 -1. OCIコンソール・メニューから **移行** → **登録済データベース** を選択します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **データベース接続** を選択します。 - ![](2022-02-28-19-02-00.png) + ![alt text](image.png) -2. **データベースの登録** をクリックします。 +2. **接続の作成** をクリックします。 - ![](2022-02-28-19-03-40.png) + ![alt text](image-1.png) -3. **データベース詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 +3. **一般情報** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 + **名前** - 任意 + + **タイプ** - Oracle Database + **ボールト** - 登録したいボールトを選択します。 + **暗号化キー** - 登録したい暗号化キーを選択します。 - + **データベース・タイプ** - DBシステム・データベース(ベア・メタル、VMおよびExadata)を選択します。 - + **データベース・システム** - 登録したいデータベース・システムを選択します。 - + **データベース** - 登録したいデータベースを選択します。 - + **接続文字列** - [2-1.ソース・データベースのCDBとPDBの接続情報の確認の5.](#anchor21)でメモ帳にコピーした接続文字列のホスト名部分をデータベース・ノードのプライベートIPアドレスと入れ替えて入力します。例:10.0.0.28:1521/sourcedb_phx1rp.sub01270428300.vcndms.oraclevcn.com - + **サブネット** - データベースが配置されているサブネットを選択します。 - 設定後、**次** をクリックします。 + 設定後、**Next** をクリックします。 - ![](2022-03-10-17-48-28.png) + ![alt text](image-2.png) 4. **接続の詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 - + **データベース管理者ユーザー名** - system - + **データベース管理者のパスワード** - <管理者パスワード> - + **SSHデータベース・サーバー・ホスト名** - <データベース・ノードのプライベートIPアドレス> - + **SSH秘密キー** - 秘密鍵ファイルを選択(DMSではRSA形式のみサポート。OPENSSH形式は使用できません。) - + **SSHユーザー名** - opc - + **SSH Sudo** - /usr/bin/sudo - - 設定後、**登録** をクリックします。 + + **データベース詳細** - データベース情報の入力 + + **接続文字列** - [2-1.ソース・データベースのCDBとPDBの接続情報の確認の5.](#anchor21)でメモ帳にコピーした接続文字列のホスト名部分をデータベース・ノードのプライベートIPアドレスと入れ替えて入力します。例:10.0.0.28:1521/sourcedb_phx1rp.sub01270428300.vcndms.oraclevcn.com + + **初期ロード・データベース・ユーザー名** - system + + **初期ロード・データベース・パスワード** - <管理者パスワード> + + **サブネット** - データベースが配置されているサブネットを選択します。 + + 設定後、**作成** をクリックします。 - ![](2022-02-28-19-13-34.png) + ![alt text](image-3.png) + ## 3-2. ソースPDBの登録 -1. OCIコンソール・メニューから **移行** → **登録済データベース** を選択します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **データベース接続** を選択します。 - ![](2022-02-28-19-02-00.png) + ![alt text](image.png) -2. **データベースの登録** をクリックします。 +2. **接続の作成** をクリックします。 - ![](2022-02-28-19-03-40.png) + ![alt text](image-1.png) -3. **データベース詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 +3. **一般情報** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 + **名前** - 任意 + + **タイプ** - Oracle Database + **ボールト** - 登録したいボールトを選択します。 + **暗号化キー** - 登録したい暗号化キーを選択します。 - + **データベース・タイプ** - DBシステム・データベース(ベア・メタル、VMおよびExadata) - + **データベース・システム** - 登録したいデータベース・システムを選択します。 - + **データベース** - 登録したいデータベースを選択します。 - + **接続文字列** - 本チュートリアルの[2-1.ソース・データベースのCDBとPDBの接続情報の確認の10.](#anchor22)でメモ帳にコピーした接続文字列のホスト名部分をデータベース・ノードのプライベートIPアドレスと入れ替えて入力します。例:10.0.0.28:1521/pdb.sub01270428300.vcndms.oraclevcn.com - + **サブネット** - データベースが配置されているサブネットを選択します。 - - 設定後、**次** をクリックします。 - ![](2022-03-10-17-48-57.png) + 設定後、**Next** をクリックします。 + ![alt text](image-4.png) 4. **接続の詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 - + **データベース管理者ユーザー名** - system - + **データベース管理者のパスワード** - <管理者パスワード> - + **SSHデータベース・サーバー・ホスト名** - <データベース・ノードのプライベートIPアドレス> - + **SSH秘密キー** - 秘密鍵ファイルを選択(DMSではRSA形式のみサポート。OPENSSH形式は使用できません。) - + **SSHユーザー名** - opc - + **SSH Sudo** - /usr/bin/sudo + + **データベース詳細** - データベース情報の入力 + + **接続文字列** - 本チュートリアルの[2-1.ソース・データベースのCDBとPDBの接続情報の確認の10.](#anchor22)でメモ帳にコピーした接続文字列のホスト名部分をデータベース・ノードのプライベートIPアドレスと入れ替えて入力します。例:10.0.0.28:1521/pdb.sub01270428300.vcndms.oraclevcn.com + + **初期ロード・データベース・ユーザー名** - system + + **初期ロード・データベース・パスワード** - <管理者パスワード> + + **サブネット** - データベースが配置されているサブネットを選択します。 - 設定後、**登録** をクリックします。 + 設定後、**作成** をクリックします。 - ![](2022-02-28-19-19-06.png) + ![alt text](image-5.png) ## 3-3. ターゲットADBの登録 -1. OCIコンソール・メニューから **移行** → **登録済データベース** を選択します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **データベース接続** を選択します。 - ![](2022-02-28-19-02-00.png) + ![alt text](image.png) -2. **データベースの登録** をクリックします。 +2. **接続の作成** をクリックします。 - ![](2022-02-28-19-03-40.png) + ![alt text](image-1.png) -3. **データベース詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 +3. **一般情報** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 + **名前** - 任意 + + **タイプ** - Oracle Autonomous Database + **ボールト** - 登録したいボールトを選択します。 + **暗号化キー** - 登録したい暗号化キーを選択します。 - + **データベース・タイプ** - Autonomous Database - + **データベース** - 登録したいデータベースを選択します。 - 設定後、**次** をクリックします。 + 設定後、**Next** をクリックします。 - ![](2022-03-10-17-49-22.png) + ![alt text](image-6.png) 4. **接続の詳細** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 - + **データベース管理者ユーザー名** - admin - + **データベース管理者のパスワード** - <管理者パスワード> + + **データベース** - 登録したいADBを選択します。 + + **初期ロード・データベース・ユーザー名** - admin + + **初期ロード・データベース・パスワード** - <管理者パスワード> - 設定後、**登録** をクリックします。 + 設定後、**作成** をクリックします。 - ![](2022-02-28-19-23-24.png) + ![alt text](image-7.png) 以上で **DMSを使用したデータベース移行の前準備** は終了です。 diff --git a/tutorials/_adb/adb304-database-migration-prep/image-1.png b/tutorials/_adb/adb304-database-migration-prep/image-1.png new file mode 100644 index 0000000000..8f143c5965 Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-1.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-2.png b/tutorials/_adb/adb304-database-migration-prep/image-2.png new file mode 100644 index 0000000000..78416c881b Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-2.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-3.png b/tutorials/_adb/adb304-database-migration-prep/image-3.png new file mode 100644 index 0000000000..b01f81a1d7 Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-3.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-4.png b/tutorials/_adb/adb304-database-migration-prep/image-4.png new file mode 100644 index 0000000000..5d14f21e16 Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-4.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-5.png b/tutorials/_adb/adb304-database-migration-prep/image-5.png new file mode 100644 index 0000000000..7f58d98b69 Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-5.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-6.png b/tutorials/_adb/adb304-database-migration-prep/image-6.png new file mode 100644 index 0000000000..af180d5f4e Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-6.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image-7.png b/tutorials/_adb/adb304-database-migration-prep/image-7.png new file mode 100644 index 0000000000..634e3819e8 Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image-7.png differ diff --git a/tutorials/_adb/adb304-database-migration-prep/image.png b/tutorials/_adb/adb304-database-migration-prep/image.png new file mode 100644 index 0000000000..bfd9045f1f Binary files /dev/null and b/tutorials/_adb/adb304-database-migration-prep/image.png differ diff --git a/tutorials/_adb/adb305-database-migration-offline.md b/tutorials/_adb/adb305-database-migration-offline.md index 0aff9597f6..df90be9456 100644 --- a/tutorials/_adb/adb305-database-migration-offline.md +++ b/tutorials/_adb/adb305-database-migration-offline.md @@ -83,22 +83,20 @@ DMSを使用してBaseDBで作成したソース・データベースからADB # 2. 移行の作成 -1. OCIコンソール・メニューから **移行** → **移行** に移動します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **移行** に移動します。 - ![](2022-03-04-13-55-12.png) + ![alt text](image-8.png) 2. **移行の作成** を選択します。 ![](2022-03-04-13-57-08.png) -3. **詳細の追加** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 +3. **一般情報** の各項目は以下のように設定します。その他の入力項目はデフォルトのままにします。 + **名前** - 任意 ※名前にスペースを含めると移行の作成に失敗します。 - + **ボールト** - **登録済みデータベース** に登録されているボールトを選択します。 - + **暗号化キー** - **登録済みデータベース** に登録されている暗号化キーを選択します。 - - 設定後、**次** をクリックします。 - ![](2022-03-10-13-16-30.png) + 設定後、**Next** をクリックします。 + + ![alt text](image-9.png) 4. **データベースの選択** の各項目は以下のように設定します。 + **ソース・データベース** - 登録済みのソース・データベース(PDB)を選択します。 @@ -106,20 +104,21 @@ DMSを使用してBaseDBで作成したソース・データベースからADB + **登録済みコンテナ・データベース** - 登録済みのソース・データベース(CDB)を選択します。 + **ターゲット・データベース** - 登録済みのターゲット・データベースを選択します。 - 設定後、**次** をクリックします。 + 設定後、**Next** をクリックします。 - ![](2022-03-04-14-15-17.png) + ![alt text](image-10.png) 5. **移行オプション** の各項目は以下のように設定します。 + **初期ロード** - オブジェクト・ストレージ経由のデータポンプを選択します。 - + **オブジェクト・ストレージ・バケット** - 使用したいオブジェクト・ストレージ・バケットを選択します。 - + **ディレクトリ・オブジェクトのエクスポート** - + + **ソース・データベース:** + 名前 - 任意 + パス - 任意 + + SSLウォレット・パス- 任意 + + **オブジェクト・ストレージ・バケット** - 使用したいオブジェクト・ストレージ・バケットを選択します。 設定後、**作成** をクリックします。 - ![](2022-03-04-14-17-50.png) + ![alt text](image-11.png) 6. 作成した移行の状態が **アクティブ** になるまで待ちます。(3分ほどかかります。) @@ -133,9 +132,9 @@ DMSを使用してBaseDBで作成したソース・データベースからADB # 3. 移行の検証 -1. OCIコンソール・メニューから **移行** → **移行** に移動します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **移行** に移動します。 - ![](2022-03-04-13-55-12.png) + ![alt text](image-8.png) 2. 検証する移行の名前をクリックします。 @@ -181,9 +180,9 @@ DMSを使用してBaseDBで作成したソース・データベースからADB # 4. 移行の実行 -1. OCIコンソール・メニューから **移行** → **移行** に移動します。 +1. OCIコンソール・メニューから **移行とディザスタ・リカバリ** → **移行** に移動します。 - ![](2022-03-04-13-55-12.png) + ![alt text](image-8.png) 2. 実行する移行の名前をクリックします。 @@ -234,7 +233,7 @@ DMSを使用してBaseDBで作成したソース・データベースからADB 4. **SQL** をクリックします。 - ![](2022-03-04-15-30-32.png) + ![alt text](image-12.png) 5. 画面左にあるナビゲーターでソースPDBで作成したサンプル・データが格納されているスキーマがあることを確認し、選択します。 diff --git a/tutorials/_adb/adb305-database-migration-offline/image-10.png b/tutorials/_adb/adb305-database-migration-offline/image-10.png new file mode 100644 index 0000000000..e752555d36 Binary files /dev/null and b/tutorials/_adb/adb305-database-migration-offline/image-10.png differ diff --git a/tutorials/_adb/adb305-database-migration-offline/image-11.png b/tutorials/_adb/adb305-database-migration-offline/image-11.png new file mode 100644 index 0000000000..fb5ba9e73c Binary files /dev/null and b/tutorials/_adb/adb305-database-migration-offline/image-11.png differ diff --git a/tutorials/_adb/adb305-database-migration-offline/image-12.png b/tutorials/_adb/adb305-database-migration-offline/image-12.png new file mode 100644 index 0000000000..eba383c109 Binary files /dev/null and b/tutorials/_adb/adb305-database-migration-offline/image-12.png differ diff --git a/tutorials/_adb/adb305-database-migration-offline/image-8.png b/tutorials/_adb/adb305-database-migration-offline/image-8.png new file mode 100644 index 0000000000..4bf071bead Binary files /dev/null and b/tutorials/_adb/adb305-database-migration-offline/image-8.png differ diff --git a/tutorials/_adb/adb305-database-migration-offline/image-9.png b/tutorials/_adb/adb305-database-migration-offline/image-9.png new file mode 100644 index 0000000000..ea30187a5d Binary files /dev/null and b/tutorials/_adb/adb305-database-migration-offline/image-9.png differ diff --git a/tutorials/_adb/adb306-database-migration-online.md b/tutorials/_adb/adb306-database-migration-online.md index e79f8772a5..bcfbc18fd9 100644 --- a/tutorials/_adb/adb306-database-migration-online.md +++ b/tutorials/_adb/adb306-database-migration-online.md @@ -618,7 +618,7 @@ BaseDBにあるソース・データベースに対して以下の設定を行 12. **SQL** をクリックします。 - ![](2022-03-10-13-53-22.png) + ![alt text](image-13.png) 13. 画面左にあるナビゲーターでソースPDBで作成したサンプル・データが格納されているスキーマがあることを確認し、選択します。 diff --git a/tutorials/_adb/adb306-database-migration-online/image-13.png b/tutorials/_adb/adb306-database-migration-online/image-13.png new file mode 100644 index 0000000000..f3045e9f00 Binary files /dev/null and b/tutorials/_adb/adb306-database-migration-online/image-13.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate.md b/tutorials/_adb/adb401-oci-goldengate.md index 5015376c32..2570ff9254 100644 --- a/tutorials/_adb/adb401-oci-goldengate.md +++ b/tutorials/_adb/adb401-oci-goldengate.md @@ -117,11 +117,11 @@ ENABLE_GOLDENGATE_REPLICATIONパラメータを設定して、GGが利用する 1. ターゲット・データベースであるADBのggadminユーザのアンロックを行います。 Autonomous DatabaseにはGoldenGate実行用のユーザがデータベース作成時点から用意されています。初期状態ではこのユーザはロックされていますので、アンロックを行っていきます。Aunotomous Databaseのデータベース・アクションを開きます。 - ![データベース・アクション](userunlock0.png) + ![alt text](image-16.png) 1. データベース・ユーザを選択します。 - ![データベース・ユーザ](userunlock1.png) + ![alt text](image-14.png) 1. データベースのユーザ一覧が表示されます。既存で用意されているggadminユーザを見つけてください。 @@ -166,23 +166,38 @@ OCI GGデプロイメントを作成していきます。 1. 以下の記載例を参考に各項目を入力します。 - **名前** - 任意 - **説明** - 任意 + - **タイプ** - 開発またはテスト - **OCPU数** - 1から24までの値で選択してください。動作確認であれば1OCPUで構いません。
実運用の参考値としてREDO生成量 60GB/h 程度であれば4OCPU+自動スケーリングを選択してください。 - **自動スケーリング** - 選択したOCPU数の最大3倍までの間でOCPUの利用率によって自動的にスケーリングされます。スケーリングはダウンタイムなくオンラインで実行され、
1時間あたりに消費されたOCPUの実平均が課金対象となります。 - **サブネット** - 任意 - **ライセンス・タイプの選択** - 任意 - - **拡張オプションの表示** - 任意(パブリック・エンドポイントの作成、エンドポイントのカスタマイズが可能であることをご確認ください。本チュートリアルではパプリック・エンドポイントにチェックを入れています。) - ![デプロイメントの作成2](deploy2.png) + - **GoldenGateコンソール・パブリック・アクセスの有効化** - 任意(パブリック・エンドポイントの作成、エンドポイントのカスタマイズが可能であることをご確認ください。本チュートリアルではパプリック・エンドポイントにチェックを入れています。) -1. **次** をクリックします。 + ![alt text](image-17.png) + ![alt text](image-18.png) + + **Next** をクリックします。 1. GoldenGateの詳細入力欄に、各項目を入力します。 - - **GoldenGateインスタンス名** - 任意 + - **デプロイメント・タイプ** - データ・レプリケーション + - **テクノロジ** - Oracle Database + - **GoldenGateインスタンス名** - 任意(例:gginstance) + - **資格証明ストア** - GoldenGate - **管理者ユーザ名** - 任意 (例:oggadmin) - - **名前管理者パスワード** - 任意 (例:Welcome#1Welcome#1) - - **名前管理者パスワードの確認** - 任意 - ![デプロイメントの作成3](deploy3.png) + - **パスワード・シークレット** - 任意 + + パスワード・シークレットがない場合は、**パスワード・シークレットの作成** をクリックします。 + 既にパスワード・シークレットがある場合は、次のステップはスキップします。 + + ![alt text](image-20.png) + +1. 以下の記載例を参考に各項目を入力します。 + - **名前** - 任意(LLSecret) + - **ユーザー・パスワード** - 任意 + **作成** をクリックします。 + ![alt text](image-19.png) 1. **作成** をクリックするとデプロイメントの作成が開始されます。 @@ -201,40 +216,32 @@ OCI GGデプロイメントを作成していきます。 OCI GGで利用するソースデータベース、ターゲットデータベースをOCI上に登録していきます。 OCI上にデータベースを登録しておくことで、この後の工程でExtract,Replicatの作成を行うことができます。 -1. GoldenGateのサービス画面から **登録済みデータベース** を選択します。 - ![データベースの登録1](registDB1.png) +1. GoldenGateのサービス画面から **接続** を選択し、**接続の作成** をクリックします。 + ![alt text](image-21.png) -1. **データベースの登録** を選択します。 - ![データベースの登録2](registDB2.png) - -1. データベースの登録 詳細入力欄に、各項目を入力します。まずはソースDBとなるBaseDBの登録を行っていきます。 +1. 一般情報入力欄に、各項目を入力します。まずはソースDBとなるBaseDBの登録を行っていきます。 - **名前** - 任意 - - **別名** - 任意 - - **説明** - 任意 - - **コンパートメント** - 任意 - - **データベースの選択**、**データベース情報の入力** - OCI上のデータベースを登録する場合には **データベースの選択** を選択します。オンプレミス上のデータベース等OCI上にあるデータベース以外を登録する場合には **データベース情報の入力** を選択します。 - どちらを選択するかによってこの後の入力欄が変化します。 -
- 今回はOCI上のBaseDBをソースDBとして登録するため、**データベースの選択** を選択します。 - **データベース・タイプ** - OCI上のどのデータベースを登録するかを選択します。
- 今回はOCI上のBaseDBをソースDBとして登録するため、**DBシステム・データベース(ベア・メタル、VM、Exadata)** を選択します。 + 今回はOCI上のBaseDBをソースDBとして登録するため、**Oracle Database** を選択します。 + + ![alt text](image-22.png) + - **データベース詳細** - データベースの選択 - **データベース・システム** - 登録したいデータベース・システムを選択します。 BaseDBの場合データベース・システムを選択することでデータベース接続文字列まで自動入力されます。 - **データベース・ホーム** - 任意 - **データベース** - 任意 - - **データベースFQDN** - 任意 - - **データベース接続文字列** - 任意(IPを指定することはできません。データベースFQDNで入力した名前を使用してください。TNS記述、簡易接続記述のどちらも使用可能です。) - **データベース・ユーザ名** - 任意
今回はあらかじめ作成しておいた **c##oggadmin** を指定します。 - **データベース・ユーザ・パスワード** - 入力したデータベース・ユーザのパスワードを指定してください。 - **データベース・ウォレット** - 任意 - - **データベース・IP** - 登録したいデータベースのIPを入力してください。(2021/08現在SCAN IPを指定することはできません。RAC構成の場合はローカル・リスナーのVIPを入力してください。) - - **サブネット** - 任意 - ![データベースの登録3](registDB3.png) + - **ネットワーク接続** - 共有エンドポイント + + ![alt text](image-25.png) 1. ターゲットとなるADBも同様にデータベースを登録します。 - ![データベースの登録4](registDB4.png) + ![alt text](image-23.png) + ![alt text](image-24.png)
これでデータベースの登録は完了です。 diff --git a/tutorials/_adb/adb401-oci-goldengate/image-14.png b/tutorials/_adb/adb401-oci-goldengate/image-14.png new file mode 100644 index 0000000000..ead2018c23 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-14.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-16.png b/tutorials/_adb/adb401-oci-goldengate/image-16.png new file mode 100644 index 0000000000..424aef98c5 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-16.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-17.png b/tutorials/_adb/adb401-oci-goldengate/image-17.png new file mode 100644 index 0000000000..7d0612435d Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-17.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-18.png b/tutorials/_adb/adb401-oci-goldengate/image-18.png new file mode 100644 index 0000000000..23ce7ae8ba Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-18.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-19.png b/tutorials/_adb/adb401-oci-goldengate/image-19.png new file mode 100644 index 0000000000..4311a04a7b Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-19.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-20.png b/tutorials/_adb/adb401-oci-goldengate/image-20.png new file mode 100644 index 0000000000..56976cac77 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-20.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-21.png b/tutorials/_adb/adb401-oci-goldengate/image-21.png new file mode 100644 index 0000000000..114e025848 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-21.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-22.png b/tutorials/_adb/adb401-oci-goldengate/image-22.png new file mode 100644 index 0000000000..4057fe1172 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-22.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-23.png b/tutorials/_adb/adb401-oci-goldengate/image-23.png new file mode 100644 index 0000000000..42c2ab9ffe Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-23.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-24.png b/tutorials/_adb/adb401-oci-goldengate/image-24.png new file mode 100644 index 0000000000..3d183666d2 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-24.png differ diff --git a/tutorials/_adb/adb401-oci-goldengate/image-25.png b/tutorials/_adb/adb401-oci-goldengate/image-25.png new file mode 100644 index 0000000000..41b223de27 Binary files /dev/null and b/tutorials/_adb/adb401-oci-goldengate/image-25.png differ diff --git a/tutorials/_adb/adb402-database-link.md b/tutorials/_adb/adb402-database-link.md index 8865a559b4..6b1ee49ada 100644 --- a/tutorials/_adb/adb402-database-link.md +++ b/tutorials/_adb/adb402-database-link.md @@ -1,6 +1,6 @@ --- -title: "402 : Database Linkによるデータ連携" -excerpt: "Database Linkを使えば、あるデータベースから別のデータベースへのアクセスが可能になります。Autonomous DatabaseにおけるDatabase Link作成手順をご紹介します。" +title: "402 : Database Linkによる他のデータベースとのデータ連携" +excerpt: "Database Linkを使えば、あるデータベースから別のデータベースへのアクセスが可能になります。Autonomous Databaseと他のOracle Database とのDatabase Link作成手順をご紹介します。" order: "3_402" layout: single header: @@ -19,57 +19,69 @@ header: ![DatabaseLinkイメージ](DatabaseLink.jpg) -Autonomous Databaseでは以下の3つのパターンでDatabase Linkを作成いただくことができます。 - -本文書では2のパターンであるAutonomous Database(リンク元)にDatabase Linkを作成し、 -他のOracle Database(リンク先)にアクセスする手順を記載します。 - -その後、補足と言う形でパターン1, 3についても記載します。 +Autonomous Database では以下の4つのパターンでDatabase Linkを作成いただくことができます。 ![DatabaseLink_optionイメージ](DatabaseLink_option.png) + +本チュートリアルでは2のパターンであるAutonomous Database(リンク元)にDatabase Linkを作成し、他のOracle Database(リンク先)にアクセスする手順を記載します。 + +補足と言う形でパターン1、3、4については、[3.その他のパターン](#anchor3)にて記載しています。 + +本チュートリアルでは、リンク先である他のOracle Databaseとして、OCIのBase Database Serviceを使用します。手順としてはオンプレミスのOracle Databaseも同様になります。またパブリック・アクセスが可能なBaseDBと、プライベート・アクセスのみ可能なBaseDBへのDatabase Linkのそれぞれの手順を記載しています。 -なお、本文書ではパブリックIPアドレスを持つBaseDBを前提としています。プライベートIPアドレスへのDatabase Link作成については、[こちらの記事](https://qiita.com/wahagon/items/7964b3ab19da625bfb39){:target="_blank"} で紹介しています。 -ご不明な点がございましたら、担当営業までお問い合わせください。 **目次 :** - + [1.BaseDBインスタンスの作成およびスキーマのインポート](#anchor1) - + [2.BaseDBにてTCPS認証(SSL認証)を有効化](#anchor2) - + [3.BaseDBのウォレットファイルをADBに渡す](#anchor3) - + [4.VCNのイングレス・ルールを更新](#anchor4) - + [5.ADBにてDatabase Linkを作成](#anchor5) - + [6.エラーへの対応例](#anchor6) - + [7.その他のパターン](#anchor7) - + [8.おわりに](#anchor8) + + [1.パブリック・アクセス可能なOracle DatabaseへのDatabase Link](#anchor1) + + [1-1.BaseDBにてTCPS認証(SSL認証)を有効化](#anchor1-1) + + [1-2.BaseDBのウォレットファイルをADBに渡す](#anchor1-2) + + [1-3.VCNのイングレス・ルールを更新](#anchor1-3) + + [1-4.ADBにてDatabase Linkを作成](#anchor1-4) + + [1-5.エラーへの対応例](#anchor1-5) + + [2.プライベート・アクセスのみ可能なOracle DatabaseへのDatabase Link](#anchor2) + + [3.その他のパターン](#anchor3) + + [4.おわりに](#anchor4) **前提条件** + ADBインスタンスが構成済みであること
※ADBインタンスの作成方法については、 [101:ADBインスタンスを作成してみよう](/ocitutorials/adb/adb101-provisioning){:target="_blank"} を参照ください。 -
++ BaseDBインスタンスを構成済み、かつサンプルスキーマをインストール済みであること +
※手順については、 + [301 : 移行元となるデータベースを作成しよう](/ocitutorials/adb/adb301-create-source-db/){:target="_blank"} を参考に、BaseDBインスタンスを作成し、HRスキーマを作成してください。 + +
+ +ADBからのDatabase Linkは大きく分けて2種類の接続方法があります。 -**所要時間 :** 約100分(BaseDBのインスタンスの作成時間を含む) ++ TCPS接続(SSL認証): ADBではデフォルトでウォレットを使ったTCPS接続を使用しているため、ターゲット・データベース(リンク先)もTCPS接続を使用するよう設定する必要があります。パブリック・アクセス可能なOracle Database へのDatabase Linkではこの方式を利用します。 ++ TCP接続: こちらはウォレットを使用しない接続方式です。この接続方式を使用する場合、ターゲット・データベース(リンク先)がTCPS接続を使用するよう設定する必要はありません。プライベート・アクセス可能なOracle DatabaseへのDatabase Linkでは、TCPS接続に加え、この接続方式を利用できます。[2.プライベート・アクセスのみ可能なOracle DatabaseへのDatabase Link](#anchor2)ではこの方式を利用します。 + +本チュートリアルでは上記2つの接続方式のそれぞれの手順を記載します。 + + +
+ +**所要時間 :** 約60分(BaseDBのインスタンスの作成時間を含む)
-# 1. BaseDBインスタンスの作成およびスキーマのインポート +# 1. TCPS接続(SSL認証)を使用したDatabase Link +ここではADBのウォレットを使用して、ソースをADBとして、リンク先がBaseDBのTCPS接続のDatabase Linkを作成します。 -まず、サンプル・データベースとして、Database Linkのリンク先となるBaseDBインスタンスを作成します。 -[301 : 移行元となるデータベースを作成しよう](/ocitutorials/adb/adb301-create-source-db/){:target="_blank"} を参考に、BaseDBインスタンスを作成し、HRスキーマを作成してください。 +なおここではBaseDBはパブリックIPアドレスを持つインスタンスとして作成しています。プライベートなBaseDBへのDatabase Linkは[2.プライベート環境のBaseDBへのDatabase Link](#anchor2)に手順を記載しています。
- + -# 2. BaseDBにてTCPS認証(SSL認証)を有効化 - -Autonomous Databaseは、すべての接続でSecure Sockets Layer (SSL)と証明書ベースの認証が使用されます。そのため、BaseDBにてTCPS 認証(SSL認証)を有効化する必要があります。 +## 1-1. BaseDBにてTCPS認証(SSL認証)を有効化 サーバーとクライアントの両サイドの認証を交換したウォレットをADBに渡すことで、これを実現します。 -## 2-1. ウォレット用のディレクトリの作成 -1. Tera Termを利用してBaseDBインスタンスに接続します。 +### 1-1-1. ウォレット用のディレクトリの作成 +1. Tera Term等のターミナルソフトを利用してBaseDBインスタンスに接続します。 1. opcユーザーからrootユーザーにスイッチします。 ```sh @@ -89,7 +101,7 @@ chown -R oracle:oinstall /u01/certificate
-## 2-2. サーバーのウォレットの作成 +### 1-1-2. サーバーのウォレットの作成 1. oracleユーザーにスイッチします。 ```sh sudo su - oracle @@ -100,7 +112,7 @@ sudo su - oracle cd /u01/server/wallet/ orapki wallet create -wallet ./ -pwd Oracle123456 -auto_login ``` -以降『2-4. 証明書の交換』まで、"Operation is successfully completed."となれば、OKです。エラーが発生する場合は、『4. サーバーのウォレットを作成します。』からやり直します。 +以降『1-1-4. 証明書の交換』まで、"Operation is successfully completed."となれば、OKです。エラーが発生する場合は、『1-1-2. サーバーのウォレットの作成』からやり直します。 ![server_wallet_createイメージ](server_wallet_create.jpg) 1. 自己署名証明書をウォレットに追加します。 @@ -109,7 +121,7 @@ orapki wallet add -wallet ./ -pwd Oracle123456 -dn "CN=dbcs" -keysize 1024 -self ```
-## 2-3. クライアントのウォレットの作成 +### 1-1-3. クライアントのウォレットの作成 1. ウォレットを作成します。 ```sh cd /u01/client/wallet/ @@ -123,7 +135,7 @@ orapki wallet add -wallet ./ -pwd Oracle123456 -dn "CN=client" -keysize 1024 -se
-## 2-4. 証明書の交換 +### 1-1-4. 証明書の交換 サーバーとクライアントで証明書を交換します。 1. サーバー証明書をエクスポートします。 @@ -165,7 +177,7 @@ chmod 640 cwallet.sso
-## 2-5. ウォレット用のディレクトリの追加 +### 1-1-5. ウォレット用のディレクトリの追加 サーバーのネットワークファイルに、ウォレットのディレクトリを追加します。 1. gridユーザーにスイッチします。 @@ -220,7 +232,7 @@ cat $ORACLE_HOME/network/admin/sqlnet.ora
-## 2-6. TCPS接続に使用する1522番ポートを解放 +### 1-1-6. TCPS接続に使用する1522番ポートを解放 今回は、1522番ポートでTCPS接続をします。しかしBaseDBインスタンスでは、デフォルトで1522番ポートは開いていないため、開ける必要があります。 1. rootユーザーにスイッチします。 ```sh @@ -249,7 +261,7 @@ service iptables restart
-## 2-7. リスナーにTCPSエンドポイントを追加 +### 1-1-7. リスナーにTCPSエンドポイントを追加 1. gridユーザーにスイッチします。 ```sh sudo su - grid @@ -333,11 +345,11 @@ The command completed successfully
- + -# 3. BaseDBのウォレットファイルをADBに渡す +## 1-2. BaseDBのウォレットファイルをADBに渡す -## 3-1. ウォレットのダウンロード +### 1-2-1. ウォレットのダウンロード /u01/client/walletにあるクライアントのウォレットcwallet.ssoを、ローカルにダウンロードします。 1. oracleユーザーにスイッチします。 @@ -355,20 +367,20 @@ chmod 604 /tmp/cwallet.sso
-## 3-2. Object Storageへのウォレットのアップロード +### 1-2-2. Object Storageへのウォレットのアップロード [102:ADBにデータをロードしよう(Database Actions)](/ocitutorials/adb/adb102-dataload/){:target="_blank"}の「2.OCIオブジェクトストレージへのデータアップロード」を参考に、ダウンロードしたウォレットをObject Storageにアップロードします。
-## 3-3. ADBへのウォレットの配置 -1. データベース・アクションでウォレット配置用のディレクトリ・オブジェクトを作成します。 -``` +### 1-2-3. ADBへのウォレットの配置 +1. ADMINユーザーでADBに接続し、ウォレット配置用のディレクトリ・オブジェクトを作成します。 +```sql CREATE DIRECTORY dblink_wallet_dir_dbcs AS 'walletdir'; ``` 1. クレデンシャル情報を登録します。 -``` +```sql BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'WORKSHOP_CREDENTIAL', @@ -383,7 +395,7 @@ END; ユーザー名、認証トークンの生成については、[102:ADBにデータをロードしよう(Database Actions)](/ocitutorials/adb/adb102-dataload/){:target="_blank"}の「1.OCIオブジェクトストレージへのアクセス情報を取得」を参考にしてください。 1. Object Storageにアップロードしたウォレットをディレクトリ・オブジェクトに配置します。 -``` +```sql BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'WORKSHOP_CREDENTIAL', @@ -396,7 +408,7 @@ object_uri: Object StorageにアップロードしたファイルのURL(< region > (補足) > - オブジェクトが見つからないエラー(ORA-20404: Object not found)が出る場合、オブジェクトストレージ上のバケットを一時的にPublic にして試してください。 > - 作成済みのクレデンシャル情報を削除する場合は以下を実行ください。 -``` +```sql BEGIN DBMS_CLOUD.DROP_CREDENTIAL(credential_name => 'WORKSHOP_CREDENTIAL'); END; @@ -404,16 +416,16 @@ END; ``` 1. 配置したウォレットを確認します。 -``` +```sql SELECT * FROM table(dbms_cloud.list_files('dblink_wallet_dir_dbcs')) WHERE object_name LIKE '%.sso'; ``` ![wallet_checkイメージ](wallet_check.png)
- + -# 4. VCNのイングレス・ルールの追加 +## 1-3. VCNのイングレス・ルールの追加 1522番ポートを使用するようにしましたが、デフォルトでは許可されていません。そのためイングレス・ルールを追加する必要があります。 ADBには、Database Linkで連携する際やAPIを実行する際に利用されるパブリックIPアドレスである、OUTBOUND_IP_ADDRESSが割り当てられています。このIPアドレスをイングレス・ルールに設定することで、そのADBインスタンスからのアクセスに制限することができます。v$pdbsのCLOUD_IDENTITY列で確認可能です。 @@ -433,12 +445,12 @@ BaseDBを配置したパブリック・サブネットのセキュリティ・
- + -# 5. ADBにてDatabase Linkを作成 +## 1-4. ADBにてDatabase Linkを作成 1. BaseDBへ接続するためのクレデンシャルを作成します。 -``` +```sql BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DBCS_DB_LINK_CRED', @@ -450,12 +462,12 @@ END; ``` **※ usernameは大文字'HR'で指定してください。** -1. 新規 Database Linkを作成します。 -``` +1. 新規 Database Linkを作成します。ADMINユーザーで実行していますが、ADMIN以外のユーザーで以下を実行する場合、`DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK`の実行権限が必要です。 +```sql BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'HR_LINK', - hostname => 'xxx.xxx.xxx.xxx', + hostname => 'dbcs.xxxx.vcn1.oraclevcn.com', port => '1522', service_name => '...oraclevcn.com', ssl_server_cert_dn => 'CN=dbcs', @@ -464,29 +476,45 @@ BEGIN END; / ``` -* hostname: BaseDBインスタンスのパブリックIPアドレス -* service_name: tnsnames.oraに記載されているPDB1のサービス名 + * hostname: BaseDBインスタンスのホスト名もしくはパブリックIPアドレス + * service_name: tnsnames.oraに記載されているPDB1のサービス名 + * ssl_server_cert_dn: 『1-1-2. サーバーのウォレットの作成』で作成した自己署名証明書のCN(Common Name) + + > ターゲット・データベース(リンク先)がRAC構成の場合 + > + > hostnameパラメータの代わりに、rac_hostnamesパラメータで一つ以上のホスト名を指定することが可能です。これにより、Oracle RACの高可用性機能を活用できます。ただし、rac_hostnamesの値にIPアドレス、SCAN IP、またはSCANホスト名を使用することはサポートされていません。 + > そのため、以下のようにRACの各ノードのホスト名を設定します。 + + ```sql + BEGIN + DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( + db_link_name => 'HR_LINK', + rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com", "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com", "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]', + port => '1522', + service_name => '...oraclevcn.com', + ssl_server_cert_dn => 'CN=dbcs', + credential_name => 'DBCS_DB_LINK_CRED', + directory_name => 'dblink_wallet_dir_dbcs'); + END; + / + ``` 1. Database Linkを使用して、BaseDBのテーブルを参照します。 -``` +```sql SELECT * FROM COUNTRIES@HR_LINK; ``` 正しく実行されると、以下のような結果が表示されます。 HRスキーマのCOUNTRIES表にアクセスできていることがわかります。 ![dblink_resultイメージ](dblink_result.png) ※ Database Linkを誤って作成した場合は、こちらのコマンドを実行します。 -``` + +```sql execute DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(db_link_name => 'HR_LINK'); ``` -
- -以上で、この章の作業は終了です。 - -
- - +
+ -# エラーへの対応例 +## 1-5. エラーへの対応例 * 『ORA-12545: Connect failed because target host or object does not exist』が発生する場合 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKにて指定するオプションに誤りがないか確認します。 @@ -510,11 +538,80 @@ execute DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(db_link_name => 'HR_LINK'); ※ 上記は代表的なもののみを記載しており、全てのエラーを網羅しているものではありません。必要に応じてサポート・サービスもご活用ください。 -
+
+ + +# 2. プライベート・アクセスのみ可能なOracle DatabaseへのDatabase Link +ここではプライベート・アクセスのみ可能なBaseDBへのDatabase Linkを作成します。こちらでは上記のTCPS接続に加え、ウォレットを使用しないTCP接続が可能なので、そちらの手順を確認します。 + +まずは以下の前提条件を確認してください。 + +ターゲットDBは、ソースDBのOCI 仮想クラウドネットワーク(VCN)からアクセス可能でなければなりません。具体的には、以下の場合にターゲットDBに接続できます: + ++ ソースDB(ここではADB)とターゲットDB(ここではBaseDB)が同じOCI VCN内にある ++ ソースDBとターゲットDBがペアリングされた異なるOCI VCNにある ++ ターゲットDBがオンプレミスで、FastConnectまたはVPNを使用してソースDBのOCI VCNに接続されている + +どの場合でも、ADBが配置されているVCNからターゲットDBへ疎通が可能であることが条件になります。またセキュリティリストの設定を以下のように許可する必要があります。 - ++ ソースDB(ADB)のサブネット・セキュリティ・リスト(SL)またはネットワーク・セキュリティ・グループ(NSG)内に、TCP上のトラフィックがターゲットDB(BaseDB)のIPアドレスとポート番号に対して許可されるような、Egress ruleを定義する。 ++ ターゲットDBのサブネット・セキュリティ・リストまたはネットワーク・セキュリティ・グループ内に、TCP上のトラフィックがソースDBのIPアドレスから宛先ポートに対して許可されるような、Ingress ruleを定義する。 + +それでは実際の手順を確認します。 -# その他のパターン +1. BaseDBへ接続するためのクレデンシャルを作成します。 +```sql +BEGIN + DBMS_CLOUD.CREATE_CREDENTIAL( + credential_name => 'DBCS_DB_LINK_CRED', + username => 'HR', + password => 'WelCome123#123#' + ); +END; +/ +``` +**※ usernameは大文字'HR'で指定してください。** + +1. Database Linkを作成します。ADMINユーザーで実行していますが、ADMIN以外のユーザーで以下を実行する場合、`DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK`の実行権限が必要です。 +```sql +BEGIN + DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( + db_link_name => 'HR_LINK', + hostname => 'dbcs.xxxx.vcn1.oraclevcn.com', + port => '1522', + service_name => '...oraclevcn.com', + ssl_server_cert_dn => NULL, + credential_name => 'DBCS_DB_LINK_CRED', + directory_name => NULL, + private_target => TRUE); +END; +/ +``` + + * hostname: BaseDBインスタンスのホスト名。ターゲットDBがプライベート・エンドポイントにある場合、IPアドレス、SCAN IP、またはSCANホスト名の使用はサポートされていないため、必ずFQDNで指定します。ターゲットDBがRAC構成の場合、rac_hostnamesパラメータを使用することも可能です。指定の仕方および注意事項は[1-4. ADBにてDatabase Linkを作成](#anchor1-4)をご参照ください。 + * service_name: PDB1のサービス名 + * ssl_server_cert_dn: NULLを指定 + * directory_name: NULLを指定 + * private_target: TRUEを指定 + + > プライベート・エンドポイントで構成されているADBでは、すべてのDatabase Linkの発信トラフィックをプライベート・エンドポイントVCNのEgress ruleに従うように指定することが可能です。 + > + > この設定を以下のように有効化している場合、CREATE_DATABASE_LINKのprivate_targetをTRUEに指定する必要はありません。 + > + > こちらの設定について、詳細は[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/private-endpoints-autonomous.html#GUID-9F76DD5E-85A3-4F5E-A88D-3D4D131FC2CA){:target="_blank"}をご参照ください。 + ```sql + ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'PRIVATE_ENDPOINT'; + ``` + +1. Database Linkを使用して、BaseDBのテーブルを参照します。 +```sql +SELECT * FROM COUNTRIES@HR_LINK; +``` + +
+ + +# 3. その他のパターン ここまで、ADBからBaseDBインスタンスへのDatabase Link作成方法についてご説明しました。 『はじめに』でも記載した通り、その他にもADBでDatabase Linkを使用できるパターンがあります。 @@ -526,34 +623,47 @@ execute DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(db_link_name => 'HR_LINK'); 1. ADB1のバケットにcwallet.sso(ウォレット・ファイル)をアップロード - ここからは、[3. BaseDBのウォレットファイルをADBに渡す](#anchor3)の『手順3:Object StorageにアップロードしたWalletをADBのディレクトリ・オブジェクトに配置します。』以降の操作と同様になります。 + ここからは、[1-2. BaseDBのウォレットファイルをADBに渡す](#anchor1-2)の『手順3:Object StorageにアップロードしたWalletをADBのディレクトリ・オブジェクトに配置します。』以降の操作と同様になります。 詳細は『Autonomous Database Cloud 技術詳細』の「Database Linkによるデータ連携」の章でご確認ください。 -
+
-* BaseDBインスタンスからADBへのDatabase Linkによる連携 +* Oracle Database(非ADB)からADBへのDatabase Linkによる連携 - 別のOracle DatabaseからAutonomous Databaseへのデータベース・リンクを作成できます。詳細な手順については、 -[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/adbsa/database-links-inbound.html#GUID-EB369724-29CE-452E-8EC1-2E0B33AE0A49){:target="_blank"} を参照ください。 + 別のOracle Databaseをソースとして、ターゲットをAutonomous DatabaseにしたDatabase Linkを作成できます。詳細な手順については、[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/database-links-inbound.html#GUID-EB369724-29CE-452E-8EC1-2E0B33AE0A49){:target="_blank"} をご参照ください。 -
+
+ +* ADBから非Oracle DatabaseへのDatabase Linkによる連携 + + ADBではOracle Database以外のデータベースへDatabase Linkを作成できます。ここでは以下の2つの構成が可能です。 + + Oracle管理の異機種間接続 + + この構成ではOracle Database Gatewayを作成する必要はありません。2024/8現在、[Amazon Redshift](https://qiita.com/500InternalServerError/items/d6faad7bbadf3697ee76){:target="_blank"}、[MySQL](https://qiita.com/500InternalServerError/items/d5dc1268f0c8259146df){:target="_blank"}、[PostgreSQL](https://qiita.com/500InternalServerError/items/c6a85703c3e6454de2c0){:target="_blank"}、Snowflake、Google Bigquery、MongoDB等がサポートされています。またNW構成については、Oracle DatabaseとのDatabase Linkと同様に、パブリックもプライベート構成でも可能です。 + + ターゲットDBのタイプによって、必須ポートやパラメータ設定が異なります。詳細の手順や制限事項については[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/database-links-other-databases-oracle-managed.html#GUID-51E46547-E6A3-4D12-8392-31723B37896B){:target="_blank"}をご参照ください。 + + 顧客管理の異機種間接続 + + 顧客管理の異機種間接続では、顧客がOracle Database Gatewayを作成する必要があります。2024/8現在、SQL Server等のデータベースへのDatabase Linkはこちらを利用する必要があります。詳細は[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/database-links-other-databases-customer-managed.html#GUID-DE1B1E26-0AB8-44CF-8A9E-D42E7628ADF2){:target="_blank"}をご参照ください。 + +
- + -# おわりに +# 4. おわりに ここではAutonomous DatabaseにDatabase Linkを作成して、別のBaseDBインスタンスからデータを収集する方法を紹介しました。 複数の異なるデータベースにアクセスする際には非常に便利ですので、ぜひ活用してみてください。 -
+
# 参考資料 * [Autonomous Database Cloud 技術詳細](https://speakerdeck.com/oracle4engineer/autonomous-database-cloud-ji-shu-xiang-xi){:target="_blank"} -
+
以上でこの章は終了です。次の章にお進みください。 -
+
[ページトップへ戻る](#anchor0) \ No newline at end of file diff --git a/tutorials/_adb/adb403-data-transforms/adb403_3_4.png b/tutorials/_adb/adb403-data-transforms/adb403_3_4.png index b03df79170..b601e5d306 100644 Binary files a/tutorials/_adb/adb403-data-transforms/adb403_3_4.png and b/tutorials/_adb/adb403-data-transforms/adb403_3_4.png differ diff --git a/tutorials/_adb/adb503-monitoring.md b/tutorials/_adb/adb503-monitoring.md index f38b9caa98..b5a46670f8 100644 --- a/tutorials/_adb/adb503-monitoring.md +++ b/tutorials/_adb/adb503-monitoring.md @@ -34,12 +34,12 @@ Autonomous Databaseはデータベースの様々な管理タスクをADB自身 # 1. 技術概要 Autonomous Databaseに対する監視・通知を行うツールはいくつか存在します。環境やユーザーによって、適切なツールを選択します。 -本記事ではOCIモニタリング、サービス・コンソール、Oracle Enterprise Manager(EM)、Oracle Cloud Observability and Management Platform(O&M)Database Managementによる監視設定をご紹介します。 +本記事ではOCIモニタリング、データベース・ダッシュボード、パフォーマンス・ハブ、Oracle Enterprise Manager(EM)、Oracle Cloud Observability and Management Platform(O&M)Database Managementによる監視設定をご紹介します。
# 2. 単体インスタンスの監視 -単体のADBインスタンスに対しては、OCIモニタリングとサービス・コンソールを使ってメトリック監視/イベント監視をすることができます。 +単体のADBインスタンスに対しては、OCIモニタリングとOCI Eventsを使ってメトリック監視/イベント監視をすることができます。 ## 2-1. アラームの通知先の作成 監視設定の前に通知先を作成しておく必要があります。[こちら](https://oracle-japan.github.io/ocitutorials/intermediates/monitoring-resources/#4-%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%A0%E3%81%AE%E9%80%9A%E7%9F%A5%E5%85%88%E3%81%AE%E4%BD%9C%E6%88%90){:target="_blank"} を参考に、トピックの作成・サブスクリプションの作成を行います。 @@ -51,7 +51,7 @@ OCIモニタリングでは、OCI上の各種リソースの性能や状態の 今回は、ADBのCPUの閾値を超えた際に通知が来るよう設定し、その挙動を確認します。 -1. まずは[こちらの記事](https://oracle-japan.github.io/ocitutorials/intermediates/monitoring-resources/#4-%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%A0%E3%81%AE%E9%80%9A%E7%9F%A5%E5%85%88%E3%81%AE%E4%BD%9C%E6%88%90){:target="_blank"} を参考に、アラームの通知先の作成をします。 +1. まずは[こちら](https://oracle-japan.github.io/ocitutorials/intermediates/monitoring-resources/#4-%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%A0%E3%81%AE%E9%80%9A%E7%9F%A5%E5%85%88%E3%81%AE%E4%BD%9C%E6%88%90){:target="_blank"} を参考に、アラームの通知先の作成をします。 1. 次にアラームの定義の作成をします。ハンバーガーメニューの**Observability & Management** の **[アラーム定義]** をクリックします。 ![monitoring1イメージ](monitoring1.png) @@ -119,28 +119,47 @@ end;
-## 2-3. サービス・コンソールによるパフォーマンス監視 -OCIモニタリングは、事前定義されたメトリックを用いてOCIの各種リソースのモニタリングや通知ができる一方で、サービス・コンソールでは以下のようなADBのアクティビティ状況が把握できます。 +## 2-3. データベース・ダッシュボードとパフォーマンスハブによるパフォーマンス監視 +OCIモニタリングは、事前定義されたメトリックを用いてOCIの各種リソースのモニタリングや通知ができる一方で、データベース・ダッシュボードでは以下のようなADBのアクティビティ状況が把握できます。 - ストレージ使用状況 - CPU使用率 - 割り当てECPU数 - SQL実行数 - SQLの平均レスポンスタイム - 接続サービス毎の負荷状況 -- DBの待機イベント - キューイングの状況 -以下のように、ADBの詳細画面から**サービス・コンソール** をクリックします。 -![service_console1イメージ](service_console1.png) +以下のように、ADBの詳細画面から**データベース・アクション** をクリックします。 +![databaseactionsイメージ](databaseactions.png) -**アクティビティ** からデータベース・アクティビティやCPU使用率が確認できます。 -![service_console2イメージ](service_console2.png) +サインイン後、**モニタリング**をクリックし、**データベース・ダッシュボード**をクリックします。 +![databasedashboardイメージ](databasedashboard.png) -**モニター対象SQL** からリアルタイムの個々のSQL監視をすることができます。 -![service_console3イメージ](service_console3.png) +**概要**では、CPU使用率やSQLの平均レスポンスタイムが確認できます。 -SQLテキストを選択し、**レポートのダウンロード** をクリックすると、Enterprise ManagerのDatabase Active Reportが取得できます。 -![service_console4イメージ](service_console4.png) +**モニター**からデータベース・アクティビティやCPU使用率が確認できます。 +![databasedashboard_monitorイメージ](databasedashboard_monitor.png) + +またパフォーマンスハブでは、リアルタイムSQLモニタリングが可能です。 + +以下のように、ADBの詳細画面から**パフォーマンス・ハブ** をクリックします。 + +![performancehub1イメージ](performancehub1.png) + +ASH分析やADDMやSQLモニタリングがあります。ここではSQLモニタリングをクリックします。 + +![performancehub2イメージ](performancehub2.png) + +実行しているSQL IDをクリックしてみます。 + +DB時間や待機時間、I/Oなどのより詳しい情報が確認できます。 + +![performancehub3イメージ](performancehub3.png) + +**レポートの保存** をクリックすると、SQL Monitor Active Report(HTMLファイル)が取得できます。 +ここではPGAの使用量やI/Oスループットなどのメトリックを確認できます。 + +![performancehub4イメージ](performancehub4.png)
@@ -165,9 +184,13 @@ OCIではメトリック監視とは別に、あらかじめ指定されたイ - **トピック:** 先ほど作成したトピックを選択 > (補足) -> Autonomous Databaseにおけるイベント・タイプ一覧(※2021年12月時点) -> ![event_allイメージ](event_all.png) -> 個別のイベント条件の詳細は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/Events/Reference/eventsproducers.htm#dbaasevents__AutoDB){:target="_blank"} +> Autonomous Databaseにおけるイベント・タイプ一覧(※2024年8月時点) +> +> イベント・タイプ: Critical - ADMINパスワードの期限切れ通知、自動フェイルオーバー開始/終了、DBダウン開始/終了、DBアクセス負荷開始/終了、ログイン失敗通知、インスタンス再配置開始/終了、ウォレット失効通知 +> +> イベント・タイプ: Information - AJDストレージ超過、APEXアップグレード可能/開始/終了、新規DB接続、非アクティブDB接続超過、長期バックアップ開始/終了/スケジューリング、メンテンナンス開始/終了/設定、オペレーター・アクセス、ワークロード・キャプチャ開始/終了、ワークロード・リプレイ開始/終了 +> +> その他のイベント条件の詳細は[こちら](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-database-events.html#GUID-8DBAD1C3-55BE-49F8-AB43-AB3EA708AF03){:target="_blank"} 上記の手順に沿って、ADBに対してイベント・タイプCriticalのルールを作成しておくと、以下のようなメールが届くことがあります。 この例は、ADBがダウンした場合の通知です。 diff --git a/tutorials/_adb/adb503-monitoring/databaseactions.png b/tutorials/_adb/adb503-monitoring/databaseactions.png new file mode 100644 index 0000000000..ee8873871e Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/databaseactions.png differ diff --git a/tutorials/_adb/adb503-monitoring/databasedashboard.png b/tutorials/_adb/adb503-monitoring/databasedashboard.png new file mode 100644 index 0000000000..2b58ce0a91 Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/databasedashboard.png differ diff --git a/tutorials/_adb/adb503-monitoring/databasedashboard_monitor.png b/tutorials/_adb/adb503-monitoring/databasedashboard_monitor.png new file mode 100644 index 0000000000..f853c6348f Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/databasedashboard_monitor.png differ diff --git a/tutorials/_adb/adb503-monitoring/performancehub1.png b/tutorials/_adb/adb503-monitoring/performancehub1.png new file mode 100644 index 0000000000..83ab48b337 Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/performancehub1.png differ diff --git a/tutorials/_adb/adb503-monitoring/performancehub2.png b/tutorials/_adb/adb503-monitoring/performancehub2.png new file mode 100644 index 0000000000..bbda8ffd4a Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/performancehub2.png differ diff --git a/tutorials/_adb/adb503-monitoring/performancehub3.png b/tutorials/_adb/adb503-monitoring/performancehub3.png new file mode 100644 index 0000000000..7284c50127 Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/performancehub3.png differ diff --git a/tutorials/_adb/adb503-monitoring/performancehub4.png b/tutorials/_adb/adb503-monitoring/performancehub4.png new file mode 100644 index 0000000000..0a614fdb78 Binary files /dev/null and b/tutorials/_adb/adb503-monitoring/performancehub4.png differ diff --git a/tutorials/_adb/adb504-audit.md b/tutorials/_adb/adb504-audit.md index f0f59a00e2..2f5ddbdd42 100644 --- a/tutorials/_adb/adb504-audit.md +++ b/tutorials/_adb/adb504-audit.md @@ -9,10 +9,11 @@ header: overlay_filter: rgba(34, 66, 55, 0.7) #link: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=776 --- + # はじめに -Oracle Databaseではデータベースに対する操作を記録する監査機能が提供されています。12cからは従来の監査機能(DBA監査、標準監査、ファイングレイン監査)を統合した統合監査が利用できるようになりました。 +Oracle Databaseではデータベースに対する操作を記録する監査機能が提供されています。 ![Oracle Databaseの監査機能](dbaudit.png) ![統合監査機能](unifiedaudit.png) @@ -43,7 +44,7 @@ Autonomous Databaseは、統合監査を利用した、いくつかの監査設 # 1. デフォルトの監査設定の確認 統合監査では、監査対象を監査ポリシーで定義し、定義された監査ポリシーを有効化することで監査レコードが生成されます。 -Autonomous Databaseにはよく利用される監査対象用に事前定義済みの監査ポリシーがあり、そのうち4つがデフォルトで有効化されています。 +Autonomous Databaseにはよく利用される監査対象用に事前定義済みの監査ポリシーがあり、そのうち5つがデフォルトで有効化されています。 ![Autonomous Databaseの監査ポリシー](adb_audit_default.png) @@ -52,7 +53,7 @@ SQL*Plusを起動して以下を実行してください。 ```sql -- ADMINで接続する -CONNECT admin/Welcome12345##@atp01_low +CONNECT admin/Welcome12345#@atp01_low -- SQL*Plusのフォーマット用コマンド set pages 100 set lines 200 @@ -65,8 +66,45 @@ SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES; ``` **結果 :** -![デフォルトのポリシーの確認 by ADMIN](checkpolicy1.png) - +```sql +SQL> SELECT distinct policy_name FROM AUDIT_UNIFIED_POLICIES; + +POLICY_NAME +------------------------------ +ADB_PARURL_ACCESS_AUDIT +ORA_DV_AUDPOL2 +ADB_ADMIN_AUDIT +SYS_USER_ACTIONS +ORA_CIS_RECOMMENDATIONS +ADB_SAAS_ADMIN_AUDIT +COMMON_USER_LOGONS +ORA_ACCOUNT_MGMT +ORA_DATABASE_PARAMETER +ADB_MANDATORY_AUDIT +ADB_PARURL_PKG_ACCESS_AUDIT +ORA_LOGON_FAILURES +ORA_DV_AUDPOL +ORA_SECURECONFIG +ORA_RAS_SESSION_MGMT +ORA_RAS_POLICY_MGMT + +16 rows selected. + +SQL> SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES; + +POLICY_NAME ENABLED_OPTION ENTITY_NAME ENTITY_ SUC FAI +------------------------------ --------------- ------------------------------ ------- --- --- +ADB_ADMIN_AUDIT EXCEPT USER SYS USER YES NO +ADB_ADMIN_AUDIT EXCEPT USER C##CLOUD$SERVICE USER YES NO +ADB_PARURL_ACCESS_AUDIT BY USER C##CLOUD$SERVICE USER YES YES +ORA_LOGON_FAILURES BY USER ALL USERS USER NO YES +ADB_PARURL_PKG_ACCESS_AUDIT BY USER ALL USERS USER YES YES +COMMON_USER_LOGONS BY USER SYS USER YES YES +COMMON_USER_LOGONS BY USER SYSBACKUP USER YES YES +COMMON_USER_LOGONS BY USER PUBLIC USER YES YES + +8 rows selected. +``` 事前定義済みの監査ポリシーと有効化されている監査ポリシーの確認ができました。 @@ -90,7 +128,21 @@ SELECT policy_name,audit_option,audit_option_type,object_schema,object_name FROM WHERE policy_name='SALES_CHANNELS_POL'; ``` **結果 :** -![監査ポリシーの作成 by ADMIN](createpolicy.png) +```sql +SQL> CREATE AUDIT POLICY sales_channels_pol + 2 ACTIONS SELECT ON adbuser.sales_channels,UPDATE on adbuser.sales_channels,DELETE ON adbuser.sales_channels; + +Audit policy created. + +SQL> SELECT policy_name,audit_option,audit_option_type,object_schema,object_name FROM audit_unified_policies + 2 WHERE policy_name='SALES_CHANNELS_POL'; + +POLICY_NAME AUDIT_OPTI AUDIT_OPTION_TYPE OBJECT_SCHEMA OBJECT_NAME +------------------------------ ---------- ------------------ -------------------- -------------------- +SALES_CHANNELS_POL DELETE OBJECT ACTION ADBUSER SALES_CHANNELS +SALES_CHANNELS_POL SELECT OBJECT ACTION ADBUSER SALES_CHANNELS +SALES_CHANNELS_POL UPDATE OBJECT ACTION ADBUSER SALES_CHANNELS +``` 新しい監査ポリシーを作成することができました。 続けて、作成した監査ポリシーを有効化します。 @@ -103,7 +155,27 @@ AUDIT POLICY sales_channels_pol BY adbuser SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES; ``` **結果 :** - ![有効化された監査ポリシー一覧](checkpolicy2.png) +```sql +SQL> AUDIT POLICY sales_channels_pol BY adbuser; + +Audit succeeded. + +SQL> SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES; + +POLICY_NAME ENABLED_OPTION ENTITY_NAME ENTITY_ SUC FAI +------------------------------ --------------- ------------------------------ ------- --- --- +ADB_ADMIN_AUDIT EXCEPT USER SYS USER YES NO +ADB_ADMIN_AUDIT EXCEPT USER C##CLOUD$SERVICE USER YES NO +ADB_PARURL_ACCESS_AUDIT BY USER C##CLOUD$SERVICE USER YES YES +SALES_CHANNELS_POL BY USER ADBUSER USER YES YES ★追加されている +ORA_LOGON_FAILURES BY USER ALL USERS USER NO YES +ADB_PARURL_PKG_ACCESS_AUDIT BY USER ALL USERS USER YES YES +COMMON_USER_LOGONS BY USER SYS USER YES YES +COMMON_USER_LOGONS BY USER SYSBACKUP USER YES YES +COMMON_USER_LOGONS BY USER PUBLIC USER YES YES + +9 rows selected. +``` 作成した監査ポリシーが有効化されていることが確認できました。 @@ -132,7 +204,32 @@ CONNECT admin/Welcome12345##@atp01_low SELECT count(*) from adbuser.sales_channels; ``` **結果 :** -![監査対象の操作を実行する](executesql.png) +```sql +SQL> CONNECT adbuser/test@atp01_low +ERROR: +ORA-01017: invalid username/password; logon denied →1:ADBUSERでログオンエラー + +Warning: You are no longer connected to ORACLE. +SQL> CONNECT adbuser/Welcome12345##@atp01_low +Connected. +SQL> SELECT count(*) from sales_channels; →2:ADBUSERでsales_channels表にアクセス + + COUNT(*) +---------- + 5 +SQL> CONNECT admin/test@atp01_low +ERROR: +ORA-01017: invalid username/password; logon denied →3:ADMINでログオンエラー + +Warning: You are no longer connected to ORACLE. +SQL> CONNECT admin/Welcome12345##@atp01_low +Connected. +SQL> SELECT count(*) from adbuser.sales_channels; + + COUNT(*) +---------- + 5 +```
@@ -151,7 +248,16 @@ WHERE event_timestamp > SYSDATE -1/24 order by event_timestamp desc; ``` **結果 :** -![監査レコードを確認する](checkaudit.png) +```sql +SQL> SELECT event_timestamp,dbusername,sql_text,unified_audit_policies FROM unified_audit_trail + 2 WHERE event_timestamp > SYSDATE -1/24 order by event_timestamp desc; + +EVENT_TIMESTAMP DBUSERNAME SQL_TEXT UNIFIED_AUDIT_POLICIES +------------------------------ ---------- -------------------------------------------------- ----------------------- +16-JUL-24 06.05.47.384801 AM ADMIN ORA_LOGON_FAILURES  →3: ADMINでログオン失敗 +16-JUL-24 06.02.48.181643 AM ADBUSER SELECT count(*) from sales_channels SALES_CHANNELS_POL  →2: ADBUSERで検索 +16-JUL-24 05.59.56.529327 AM ADBUSER ORA_LOGON_FAILURES  →1: ADBUSERでログオン失敗 +``` デフォルトで有効化されている監査ポリシー「ORA_LOGON_FAILURES」は全てのユーザーに対しログオンの失敗を監査します。そのため、ADMINユーザー、ADBユーザーのログオンの失敗が記録されています。 一方、新しく作成したSALES_CHANNELS表の監査ポリシー「SALES_CHANNELS_POL」は、ADBUSERユーザーに対してのみ有効であるため、ADMINユーザーのSELECT文は記録されず、ADBUSERユーザーのSELECT文のみ記録されていることが確認できます。 @@ -174,7 +280,15 @@ NOAUDIT POLICY sales_channels_pol by adbuser; DROP AUDIT POLICY sales_channels_pol; ``` **結果 :** -![監査構成の削除](dropaudit.png) +```sql +SQL> NOAUDIT POLICY sales_channels_pol by adbuser; + +Noaudit succeeded. + +SQL> DROP AUDIT POLICY sales_channels_pol; + +Audit Policy dropped. +``` > **Note :** >+ AUDIT_UNIFIED_POLICIESビューのCOMMON列がYESである事前定義監査ポリシーはコンテナ・データベースレベルで設定する共通ポリシーであるため無効化はできません。 @@ -202,13 +316,41 @@ SELECT count(*) FROM unified_audit_trail; ``` **結果 :** -![監査レコードの削除](deleteaudit.png) - +```sql +SQL> SELECT count(*) FROM unified_audit_trail; + + COUNT(*) +---------- + 14 +SQL> BEGIN + 2 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( + 3 audit_trail_type => dbms_audit_mgmt.audit_trail_unified, + 4 use_last_arch_timestamp => FALSE + 5 ); + 6 END; + 7 / + +PL/SQL procedure successfully completed. +SQL> SELECT count(*) FROM unified_audit_trail; + + COUNT(*) +---------- + 1 +``` 削除が完了しました。しかし、削除後の監査レコードが1件となっています。[4. 監査レコードの確認](#4-監査レコードの確認)で使ったSQLで確認してみましょう。 **結果 :** -![削除後の監査レコード](auditafterdel.png) +```sql +SQL> SELECT event_timestamp,dbusername,sql_text,unified_audit_policies FROM unified_audit_trail + 2 WHERE event_timestamp > SYSDATE -1/24 order by event_timestamp desc; + +EVENT_TIMESTAMP DBUSERNAME SQL_TEXT UNIFIED_AUDIT_POLICIES +------------------------------ ---------- -------------------------------------------------- ----------------------- +16-JUL-24 06.17.12.088850 AM ADMIN BEGIN ORA$MANDATORY + DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( + audit_trail_type => dbms_audit_mgmt.a +``` これは監査レコードの削除操作の監査レコードです。UNIFIED_AUDIT_TRAILビューの元であるAUDSYSスキーマのAUD$UNIFIED表への操作はすべて監査対象となります。そのため、監査レコードが生成されています。 @@ -224,7 +366,7 @@ SELECT count(*) FROM unified_audit_trail; このチュートリアルではAutonomous Databaseの監査設定および監査レコードの管理について紹介しました。 なお、Autonomous Database内の監査レコードの保持期間は14日間になりますが、Oracle Data Safeを利用すると1カ月から12カ月までの間で保持期間の指定ができ、さらに監査レポートの生成も可能です。Oracle Data Safeはグラフィカルなユーザー・インターフェースで包括的にOracle Databaseのセキュリティ管理ができるサービスです。Autonomous Databaseを含むOCI Databaseサービスの場合は、100万監査レコード/月までは無償となりますのでぜひお試しください。 > **Note :** ->+ Oracle Data Safeの有効化については[こちら](https://qiita.com/western24/items/b772d95148b8855b8bb0)をご覧ください。 +>+ Oracle Data Safeの有効化については[こちら](https://docs.oracle.com/cd/E83857_01/paas/autonomous-database/serverless/adbsb/autonomous-data-safe.html#GUID-C8A06005-1EF4-4CE7-89E6-A43E69074BAD)をご覧ください。 >+ Oracle Data SafeはAlways Free環境のAutonomous Databaseでは利用できません。
@@ -238,4 +380,5 @@ SELECT count(*) FROM unified_audit_trail; 以上でこの章は終了です。次の章にお進みください。
-[ページトップへ戻る](#anchor0) \ No newline at end of file + +[ページトップへ戻る](#anchor0) diff --git a/tutorials/_adb/adb504-audit/adb_audit_default.png b/tutorials/_adb/adb504-audit/adb_audit_default.png index 6f14b827b0..7f929a8754 100644 Binary files a/tutorials/_adb/adb504-audit/adb_audit_default.png and b/tutorials/_adb/adb504-audit/adb_audit_default.png differ diff --git a/tutorials/_adb/adb504-audit/dbaudit.png b/tutorials/_adb/adb504-audit/dbaudit.png index 2e9f242f71..43685fa5da 100644 Binary files a/tutorials/_adb/adb504-audit/dbaudit.png and b/tutorials/_adb/adb504-audit/dbaudit.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons.md b/tutorials/_cloud-native/ocicache-for-commons.md new file mode 100644 index 0000000000..f3d55a321e --- /dev/null +++ b/tutorials/_cloud-native/ocicache-for-commons.md @@ -0,0 +1,305 @@ +--- +title: "OCI Cacheを使ってレスポンス・キャッシングをしてみよう" +excerpt: "OCI Cacheをレスポンス・キャッシングのキャッシュサーバーとして使う方法を学んでいただけるチュートリアルです。" +layout: single +order: "10000" +tags: +--- + +このチュートリアルでは、Oracleが提供するフルマネージドのRedisサービスであるOCI Cacheを使った、リクエストのキャッシングを体験していただけます。 + +1.前提条件 +--------------------------------- +- クラウド環境 + - Oracle Cloudのアカウント(Free Trial)を取得済みであること + + +2.概要 +--------------------------------- +このチュートリアルでは、OCI Functionsに簡単なアプリケーションをデプロイし、そのAPIをAPI Gatewayで管理します。API Gatewayには「リクエストキャッシング」という機能があり、この機能を使うと、リクエストやレスポンスのデータを一時的に保存(キャッシング)できます。キャッシュにデータがあれば、それを使ってすぐに結果を返し、データがない場合にはアプリケーションから新たにデータを取得します。このキャッシュ機能には、OCI Cacheを使用します。 + +このチュートリアルで作成されるリソースは以下のようになります。 + +![](image-40.png) + +作成するリソースは、 +- VCN +- OCI Cache +- OCIR +- OCI Functions +- Vault +- API Gateway + +になります。ここから順にこれらのリソースを作成していきます。 + +3.必要なリソースの作成 +--------------------------------- +## 3-1.VCNの作成 +まずは今回のリソースを配置するVCN(仮想クラウドネットワーク)を作成します。OCIコンソールの左上のハンバーガーメニューから、「ネットワーキング」を選択し、「仮想クラウド・ネットワーク」を選択します。 + +![](image.png) + +今回は簡単にVCNを作成するため、「VCNウィザードの起動」を選択します。 + +![](image-1.png) + +VCNウィザードの起動ページで、「インターネット接続性を持つVCNの作成」が選択されていることを確認し、「VCNウィザードの起動」を選択します。 + +![](image-2.png) + +VCN名だけ任意の名前を入力して、後はデフォルトのまま作成します。ここではVCN名をcache-tutorialとします。 + +![](image-3.png) + +VCNの作成が完了したら、作成したVCNの詳細ページの左下にある、セキュリティ・リストを選択し、「Default Security List for xxx」を選択します。 + +![](image-4.png) + +「イングレスルールの追加」を選択します。 + +![](image-5.png) + +本チュートリアルではHTTPS通信を行うため、ポート443の通信を許可します。ソースCIDRにはすべてのIPを許可するために0.0.0.0/0を入力し、宛先ポート範囲は443とします。これらを入力したら、「イングレス・ルールの追加」を選択します。 + +![](image-6.png) + +以上でVCNの作成と準備は完了です。 + + +## 3-2.OCI Cacheの作成 +次に、OCI Cacheを作成します。画面左上のハンバーガーメニューから、「データベース」を選択し、「OCIキャッシュ」の中の「クラスタ」を選択します。 + +![](image-7.png) + +「クラスタの作成」を選択します。 + +![](image-8.png) + +任意の名前を入力して次に進みます。ここではcache-tutorialという名前にしています。 + +![](image-9.png) + +次に「ノード構成」のページが開きますが、ここはデフォルトで次に進みます。 + +「ネットワーキングの構成」ページでは、VCNは先ほど作成したVCNを選択し、サブネットはパブリックサブネットを選択します。 + +![](image-10.png) +![](image-11.png) + +以降はすべてデフォルトのままクラスタの作成まで進めます。 + +クラスタの作成が完了したら、作成したクラスタの詳細ページからクラスタのエンドポイントを取得し、メモ帳等に控えておきます。 + +![](image-12.png) + +以上でOCI Cacheの作成は完了です。 + +## 3-3.OCIRの作成 +次に、OCI Functionsにデプロイするアプリケーションのコンテナイメージを格納するための、コンテナリポジトリの作成を行います。画面左上のハンバーガーメニューから、「開発者サービス」を選択し、「コンテナ・レジストリ」を選択します。 + +![](image-13.png) + +「リポジトリの作成」を選択します。 + +![](image-14.png) + +リポジトリの作成ページが開いたら、「アクセス」を「パブリック」にし、「リポジトリ名」をcache-tutorialとします。 + +![](image-15.png) + +OCIRにアクセスするには、ユーザー名とパスワードが必要になります。OCIRではパスワードに認証トークンを利用しますので、認証トークンを作成しておきます。画面右上のユーザーアイコンを選択し、ご自身のプロフィール名を選択します。 + +![](image-16.png) + +画面左下のリソースメニューから、「認証トークン」を選択します。 + +![](image-17.png) + +「トークンの生成」を選択します。 + +![](image-18.png) + +トークンの生成ページが開いたら、適当な説明文を入力して、「トークンの生成」を選択します。 + +![](image-19.png) + +トークンが生成されたら、メモ帳等にコピーして控えておきます。 + +![](image-20.png) + +以上でOCIRの作成と準備は終了です。 + +## 3-4.OCI Functionsの作成 +次に、アプリケーションをデプロイするOCI Functionsを作成します。画面左上のハンバーガーメニューから、「開発者サービス」を選択し、「ファンクション」の中の「アプリケーション」を選択します。 + +![](image-21.png) + +「アプリケーションの作成」を選択します。 + +![](image-22.png) + +アプリケーションの作成ページが開いたら、 +- 名前:cache-tutorial +- VCN:先ほど作成したもの +- サブネット:パブリックサブネット + +を選択し、「作成」を選択します。 + +![](image-23.png) + +Functionsを作成すると、下のような画面が表示されます。 + +![](image-24.png) + +そのまま下にスクロールしていくと、スタートガイドが書いてありますので、この手順を実施してアプリケーションをデプロイします。 + +![](image-25.png) + +なお、`fn update context registry`コマンドの`repo-name-prefix`は先ほど作成したOCIRのリポジトリ名になります。 +また、`docker login`コマンドで求められるパスワードは、先ほど生成した認証トークンになります。 + +**うまくログインできない場合** +`docker login`コマンドでうまくログインできない場合、認証トークンを作成する際にアクセスしたユーザーのプロファイル画面上部にあるユーザー名を、`docker login`コマンドのユーザー名としてください。 +{: .notice--warning} + +## 3-5.Vaultの作成 +次に、API Gatewayがキャッシュサーバーにアクセスする際のシークレットを保存するためのVaultを作成します。なお、2024年9月現在ではOCI Cacheはパスワード認証を行うことができないため、ここで作成するシークレットはダミーのデータになります。ダミーではありますが、API Gatewayの「レスポンスキャッシング」機能は、Vaultのシークレットの選択が必須となっているため本手順は必ず実施する必要があります。 + +画面左上のハンバーガーメニューから、「アイデンティティとセキュリティ」を選択し、「キー管理とシークレット管理」の中にある、「ボールト」を選択します。 + +![](image-26.png) + +「ボールトの作成」を選択します。 + +![](image-27.png) + +ボールトの作成ページが開いたら、任意の名前を入力します。ここではmyVaultとします。名前を入力したら、Vaultを作成します。 + +![](image-28.png) + +次に、Vaultのマスター暗号化キーを作成します。「キーの作成」を選択します。 + +![](image-29.png) + +キーの作成ページが開いたら、名前を入力します。ここではcache-tutorialとします。 + +![](image-30.png) + +次にシークレットを作成します。左下のリソース一覧から、「シークレット」を選択し、「シークレットの作成」を選択します。 + +![](image-31.png) + +シークレットの作成ページが開いたら、以下の項目を設定します。設定が完了したら、「シークレットの作成」を選択します。 +- 名前:cache-tutorial +- 説明:for OCI Cache +- 暗号化キー:cache-tutorial +- 手動シークレット生成を選択 +- シークレットタイプテンプレート:プレーン・テキスト +- シークレットコンテンツ:{"username": "default", "password": "cache-tutorial"} + +![](image-32.png) + +以上でVaultの設定は完了です。 + +## 3-6.API Gatewayの作成 +最後に、API Gatewayの作成を行います。画面左上のハンバーガーメニューから、「開発者サービス」を選択し、「API管理」の「ゲートウェイ」を選択します。 + +![](image-33.png) + +「ゲートウェイの作成」を選択します。 + +![](image-34.png) + +ゲートウェイの作成ページでは、以下の項目を設定します。 +- 名前:cache-tutorial +- タイプ:パブリック +- 仮想クラウドネットワーク:cache-tutorial +- サブネット:パブリックサブネット +- 拡張オプションの表示を選択 +- レスポンスキャッシングの有効化を選択 +- キャッシュ・サーバーのホスト:控えておいたOCI Cacheのエンドポイント +- キャッシュ・サーバーのポート: 6379 +- ボールト:myVault +- ボールとシークレット:cache-tutorial +- キャッシュサーバーへの接続設定を選択 +- リクエストのSSL/TLSを使用を選択 +- SSL/TLS証明書の検証を選択 + +![](image-35.png) + +![](image-36.png) + +![](image-37.png) + +ここまで設定したら、作成を完了します。 + +次に、デプロイメントを作成します。画面左下のリソース一覧から、「デプロイメント」を選択し、「デプロイメントの作成」を選択します。 + +![](image-38.png) + +作成ページが開いたら、名前にcache-tutorial、パス接頭辞に/v1を入力します。入力が完了したら、「次」を選択します。 + +認証のページではデフォルトのまま次に進みます。 + +ルーティングのページでは、以下の項目を設定します。 +- パス:/hello +- メソッド:GET +- バックエンドタイプ:Oracleファンクション +- アプリケーション:cache-tutorial +- 関数名:hello-java +- レスポンス・キャッシング・ポリシーを表示を選択 +- このルートのキャッシングの有効化にチェック +- キャッシュされたレスポンスのTTLに120を入力 + +以上を設定したら、次に進んでそのまま作成します。 + +デプロイメントの詳細ページを開いたら、エンドポイントをコピーしてメモ帳等に控えておきます。 + +![](image-39.png) + +お疲れ様でした。以上でこのチュートリアルで必要なすべてのリソースを準備できました。 + +4.キャッシングを確認 +--------------------------------- +ここからは、実際にキャッシングされているかどうかをCloud Shellを使って確認していきます。 +Cloud Shellを開き、以下のコマンドを実行します。 +```bash +curl --dump-header - /hello +``` +``には、デプロイメントの詳細ページで控えて置いたエンドポイントを入力します。コマンドの実行結果は以下のようになるかと思います。 + +```bash +HTTP/1.1 200 OK +Date: Thu, 05 Sep 2024 02:25:54 GMT +Content-Type: text/plain +Connection: keep-alive +Content-Length: 13 +Server: Oracle API Gateway +X-Cache-Status: MISS +X-Content-Type-Options: nosniff +X-Frame-Options: sameorigin +X-XSS-Protection: 1; mode=block +Strict-Transport-Security: max-age=31536000 +opc-request-id: /82C3A68C2887D582AC64D15AA313701E/8D52C50817DC55280F3E20CACC5FF8FE +``` +この結果を見てみると、`X-Cache-Status`が`MISS`になっていることが分かります。これは、初めての問い合わせなのでキャッシュサーバーにキャッシュが存在せず、ヒットしなかったことを表しています。 + +もう一度同じコマンドを実行してみます。すると、下記のような結果になります。 + +```bash +HTTP/1.1 200 OK +Date: Thu, 05 Sep 2024 02:25:58 GMT +Content-Type: text/plain +Transfer-Encoding: chunked +Connection: keep-alive +Server: Oracle API Gateway +X-Cache-Status: HIT +X-Content-Type-Options: nosniff +X-Frame-Options: sameorigin +X-XSS-Protection: 1; mode=block +Strict-Transport-Security: max-age=31536000 +opc-request-id: /808F39D18EBE55D0B292765191C812A3/F587676E53648414BDD37AF11014DF42 +``` +今回は`X-Cache-Status`が`HIT`になりました。これは、初回の問い合わせ結果がキャッシュサーバーに保存されたため、今回の問い合わせはキャッシュサーバーから取得したことを表しています。 + +このように、API GatewayとOCI Cacheを使うことで比較的簡単にレスポンスのキャッシングを行うことができます。 \ No newline at end of file diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-1.png b/tutorials/_cloud-native/ocicache-for-commons/image-1.png new file mode 100644 index 0000000000..e9d8c06fef Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-1.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-10.png b/tutorials/_cloud-native/ocicache-for-commons/image-10.png new file mode 100644 index 0000000000..5b8073012e Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-10.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-11.png b/tutorials/_cloud-native/ocicache-for-commons/image-11.png new file mode 100644 index 0000000000..e238fc6610 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-11.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-12.png b/tutorials/_cloud-native/ocicache-for-commons/image-12.png new file mode 100644 index 0000000000..5cb297fb7c Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-12.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-13.png b/tutorials/_cloud-native/ocicache-for-commons/image-13.png new file mode 100644 index 0000000000..333ec6d7b2 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-13.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-14.png b/tutorials/_cloud-native/ocicache-for-commons/image-14.png new file mode 100644 index 0000000000..fb8e2219c6 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-14.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-15.png b/tutorials/_cloud-native/ocicache-for-commons/image-15.png new file mode 100644 index 0000000000..e9a1cf2a9a Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-15.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-16.png b/tutorials/_cloud-native/ocicache-for-commons/image-16.png new file mode 100644 index 0000000000..2401a060a2 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-16.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-17.png b/tutorials/_cloud-native/ocicache-for-commons/image-17.png new file mode 100644 index 0000000000..86e326efcc Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-17.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-18.png b/tutorials/_cloud-native/ocicache-for-commons/image-18.png new file mode 100644 index 0000000000..c30bb469d4 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-18.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-19.png b/tutorials/_cloud-native/ocicache-for-commons/image-19.png new file mode 100644 index 0000000000..1c82b8e87d Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-19.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-2.png b/tutorials/_cloud-native/ocicache-for-commons/image-2.png new file mode 100644 index 0000000000..906bcc7460 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-2.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-20.png b/tutorials/_cloud-native/ocicache-for-commons/image-20.png new file mode 100644 index 0000000000..be7a6ac68f Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-20.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-21.png b/tutorials/_cloud-native/ocicache-for-commons/image-21.png new file mode 100644 index 0000000000..d5071757b6 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-21.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-22.png b/tutorials/_cloud-native/ocicache-for-commons/image-22.png new file mode 100644 index 0000000000..3983d243af Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-22.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-23.png b/tutorials/_cloud-native/ocicache-for-commons/image-23.png new file mode 100644 index 0000000000..77fe2a89b1 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-23.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-24.png b/tutorials/_cloud-native/ocicache-for-commons/image-24.png new file mode 100644 index 0000000000..233bcb1cc6 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-24.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-25.png b/tutorials/_cloud-native/ocicache-for-commons/image-25.png new file mode 100644 index 0000000000..3a9e70ffc5 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-25.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-26.png b/tutorials/_cloud-native/ocicache-for-commons/image-26.png new file mode 100644 index 0000000000..b4b0a754e4 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-26.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-27.png b/tutorials/_cloud-native/ocicache-for-commons/image-27.png new file mode 100644 index 0000000000..a0b38b5bb7 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-27.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-28.png b/tutorials/_cloud-native/ocicache-for-commons/image-28.png new file mode 100644 index 0000000000..89122a2bc6 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-28.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-29.png b/tutorials/_cloud-native/ocicache-for-commons/image-29.png new file mode 100644 index 0000000000..5577c07dc2 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-29.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-3.png b/tutorials/_cloud-native/ocicache-for-commons/image-3.png new file mode 100644 index 0000000000..65b2f2b106 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-3.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-30.png b/tutorials/_cloud-native/ocicache-for-commons/image-30.png new file mode 100644 index 0000000000..e03952e83b Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-30.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-31.png b/tutorials/_cloud-native/ocicache-for-commons/image-31.png new file mode 100644 index 0000000000..ccf0a69ddc Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-31.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-32.png b/tutorials/_cloud-native/ocicache-for-commons/image-32.png new file mode 100644 index 0000000000..4dfb6d3918 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-32.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-33.png b/tutorials/_cloud-native/ocicache-for-commons/image-33.png new file mode 100644 index 0000000000..d918c145bf Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-33.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-34.png b/tutorials/_cloud-native/ocicache-for-commons/image-34.png new file mode 100644 index 0000000000..e83c4fc01e Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-34.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-35.png b/tutorials/_cloud-native/ocicache-for-commons/image-35.png new file mode 100644 index 0000000000..cf959c1a22 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-35.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-36.png b/tutorials/_cloud-native/ocicache-for-commons/image-36.png new file mode 100644 index 0000000000..438ef7837f Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-36.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-37.png b/tutorials/_cloud-native/ocicache-for-commons/image-37.png new file mode 100644 index 0000000000..fabd5a1e14 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-37.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-38.png b/tutorials/_cloud-native/ocicache-for-commons/image-38.png new file mode 100644 index 0000000000..ea654d206b Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-38.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-39.png b/tutorials/_cloud-native/ocicache-for-commons/image-39.png new file mode 100644 index 0000000000..0dca470baf Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-39.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-4.png b/tutorials/_cloud-native/ocicache-for-commons/image-4.png new file mode 100644 index 0000000000..285a219493 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-4.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-40.png b/tutorials/_cloud-native/ocicache-for-commons/image-40.png new file mode 100644 index 0000000000..3c748bf370 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-40.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-5.png b/tutorials/_cloud-native/ocicache-for-commons/image-5.png new file mode 100644 index 0000000000..c20d6e67a9 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-5.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-6.png b/tutorials/_cloud-native/ocicache-for-commons/image-6.png new file mode 100644 index 0000000000..f31e6a2b85 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-6.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-7.png b/tutorials/_cloud-native/ocicache-for-commons/image-7.png new file mode 100644 index 0000000000..fbcba6436b Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-7.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-8.png b/tutorials/_cloud-native/ocicache-for-commons/image-8.png new file mode 100644 index 0000000000..0471107359 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-8.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image-9.png b/tutorials/_cloud-native/ocicache-for-commons/image-9.png new file mode 100644 index 0000000000..2824a59713 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image-9.png differ diff --git a/tutorials/_cloud-native/ocicache-for-commons/image.png b/tutorials/_cloud-native/ocicache-for-commons/image.png new file mode 100644 index 0000000000..5ce17e7df6 Binary files /dev/null and b/tutorials/_cloud-native/ocicache-for-commons/image.png differ diff --git a/tutorials/_hpc/benchmark/openfoam-tuning.md b/tutorials/_hpc/benchmark/openfoam-tuning.md index 7adf5d709b..dea21d30ec 100644 --- a/tutorials/_hpc/benchmark/openfoam-tuning.md +++ b/tutorials/_hpc/benchmark/openfoam-tuning.md @@ -15,7 +15,7 @@ header: 1. メモリ帯域の有効利用を考慮した最適なノード内並列実行方法 2. スケーラビリティーを考慮した最適なノード間並列実行方法 -3. NVMe SSDローカルディスクをストレージ領域に活用するノード間並列実行方法 +3. NVMe SSDローカルディスクをストレージ領域に活用する方法 本パフォーマンス関連Tipsの性能計測は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[OpenFOAMインストール・利用方法](/ocitutorials/hpc/tech-knowhow/install-openfoam/)** に従って構築された **OpenFOAM** を使用し、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[Slurmによるリソース管理・ジョブ管理システム構築方法](/ocitutorials/hpc/tech-knowhow/setup-slurm-cluster/)** に従って構築された **[Slurm](https://slurm.schedmd.com/)** 環境でバッチジョブとして計測しています。 @@ -35,15 +35,14 @@ header: ![プロセスバインディング](process_binding.png) -本Tipsは、以下の環境・条件で **OpenFOAM** のCFD解析フローの総所要時間(所要コスト)を計測しています。 +本Tipsは、以下の環境・条件で **OpenFOAM** のCFD解析フローの総所要時間(計算ノードの総所要コスト)を計測しています。 - シェイプ : **BM.Optimized3.36** - BIOS設定 : **SMT** 無効化、 **NPS1** or **NPS2** (※1) - OS : **Oracle Linux** 8.9ベースのHPC **[クラスタネットワーキングイメージ](/ocitutorials/hpc/#5-13-クラスタネットワーキングイメージ)** (※2) - **OpenFOAM** : v2312 - MPI : **[OpenMPI](https://www.open-mpi.org/)** 5.0.3 -- 解析対象モデル : **OpenFOAM HPC Benchmark Suite** の **HPC_Motorbike** の **Small** モデル -( **hpc/incompressible/simpleFoam/HPC_motorbike/Small/v1912/HPC_motorbike/Small/v1912** ) +- 解析対象モデル : **[OpenFOAM HPC Benchmark Suite](https://develop.openfoam.com/committees/hpc)** の **[HPC_Motorbike](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike)** の **[Small](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike/Small/v1912)** モデル - 計算結果の出力頻度( **writeInterval** ) : 1,000タイムステップ(デフォルト) ※1)NPSの設定方法は、 **[OCI HPCパフォーマンス関連情報](/ocitutorials/hpc/#2-oci-hpcパフォーマンス関連情報)** の **[パフォーマンスに関連するベアメタルインスタンスのBIOS設定方法](/ocitutorials/hpc/benchmark/bios-setting/)** を参照してください。 @@ -51,8 +50,8 @@ header: この結果、以下のことが判明しています。 -- **NPS2** が **NPS1** に対して **1.8 %** 総所要時間が短い(MPIプロセス数36の場合) -- MPIプロセス数36の場合(計算ノードに搭載する全てのコアを使用する)が総所要時間が最も短い +- **NPS2** が **NPS1** に対して **1.8 %** 総所要時間(計算ノードの総所要コスト)が短い(安価) +- MPIプロセス数36の場合(計算ノードに搭載する全てのコアを使用する)が総所要時間(計算ノードの総所要コスト)が最も短い(安価) ## 1-1. 実行方法 @@ -60,7 +59,7 @@ header: この方法は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[OpenFOAMインストール・利用方法](/ocitutorials/hpc/tech-knowhow/install-openfoam/)** の **[4. CFD解析フロー実行](/ocitutorials/hpc/tech-knowhow/install-openfoam//#4-cfd解析フロー実行)** を参照し、ここで解説しているチュートリアル付属のオートバイ走行時乱流シミュレーションモデルのバッチ実行の方法を参考に、 **OpenFOAM HPC Benchmark Suite** の **HPC_Motorbike** の **Small** モデルにこれを適用します。 -この際 **NPS2** の場合は、 **slurm.conf** ファイルの **NodeName=DEFAULT** で始まる行を以下のように修正します。 +この際 **NPS2** の場合は、 **Slurm** の設定ファイル **slurm.conf** の **NodeName=DEFAULT** で始まる行を以下のように修正します。 ```sh NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN @@ -85,15 +84,15 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC ## 1-2. 実行結果とその考察 **NPS** とMPIプロセス数をパラメータとして実行した結果を以下に示します。 -なお各計測値は、5回の計測結果の平均値です。 +なお各値は、5回の計測値の平均値です。 ![実行結果](graph_02.png) -この結果から、 **NPS** に着目すると以下のことがわかります。 +この結果から、 **NPS** に着目すると、以下のことがわかります。 - 全てのMPIプロセス数で **NPS2** が **NPS1** より高速 - MPIプロセス数が増えるに従い **NPS2** と **NPS1** の差は縮小する -- 最も性能の良いMPIプロセス数36の場合で **NPS2** は **NPS1** より総所要時間が **1.8 %** 短い +- 最も性能の良いMPIプロセス数36の場合で **NPS2** は **NPS1** より総所要時間(計算ノードの総所要コスト)が **1.8 %** 短い(安価) 以上より、本テストケースでは **NPS2** が有利であると結論付けることが出来るため、次に **NPS2** のMPIプロセス数によるスケーラビリティーに着目します。 @@ -109,7 +108,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC 以上より、本テストケースをノード内並列実行する際コストパフォーマンスを最大化する実行方法は、 **NPS2** と **MPIプロセス数36** の組み合わせである、と判断できます。 *** -# 2. ノード間並列スケーラビリティーを考慮した最適な実行方法 +# 2. スケーラビリティーを考慮した最適なノード間並列実行方法 ## 2-0. 概要 @@ -121,7 +120,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC ![プロセスバインディング](process_binding2.png) -本Tipsは、以下の環境・条件で **OpenFOAM** のCFD解析フローの総所要時間(所要コスト)を計測しています。 +本Tipsは、以下の環境・条件で **OpenFOAM** のCFD解析フローの総所要時間(計算ノードの総所要コスト)を計測しています。 - シェイプ : **BM.Optimized3.36** - BIOS設定 : **SMT** 無効化、 **NPS2** (※3) @@ -129,8 +128,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC - OS : **Oracle Linux** 8.9ベースのHPC **[クラスタネットワーキングイメージ](/ocitutorials/hpc/#5-13-クラスタネットワーキングイメージ)** (※4) - **OpenFOAM** : v2312 - MPI : **[OpenMPI](https://www.open-mpi.org/)** 5.0.3 -- 解析対象モデル : **OpenFOAM HPC Benchmark Suite** の **HPC_Motorbike** の **Small** モデル -( **hpc/incompressible/simpleFoam/HPC_motorbike/Small/v1912/HPC_motorbike/Small/v1912** ) +- 解析対象モデル : **[OpenFOAM HPC Benchmark Suite](https://develop.openfoam.com/committees/hpc)** の **[HPC_Motorbike](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike)** の **[Small](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike/Small/v1912)** モデル - 計算結果の出力頻度( **writeInterval** ) : 1,000タイムステップ(デフォルト) ※3)NPSの設定方法は、 **[OCI HPCパフォーマンス関連情報](/ocitutorials/hpc/#2-oci-hpcパフォーマンス関連情報)** の **[パフォーマンスに関連するベアメタルインスタンスのBIOS設定方法](/ocitutorials/hpc/benchmark/bios-setting/)** を参照してください。 @@ -146,7 +144,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC この方法は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[OpenFOAMインストール・利用方法](/ocitutorials/hpc/tech-knowhow/install-openfoam/)** の **[4. CFD解析フロー実行](/ocitutorials/hpc/tech-knowhow/install-openfoam//#4-cfd解析フロー実行)** を参照し、ここで解説しているチュートリアル付属のオートバイ走行時乱流シミュレーションモデルのバッチ実行の方法を参考に、 **OpenFOAM HPC Benchmark Suite** の **HPC_Motorbike** の **Small** モデルにこれを適用します。 -この際、 **slurm.conf** ファイルの **NodeName=DEFAULT** で始まる行を以下のように修正します。 +この際、 **Slurm** の設定ファイル **slurm.conf** の **NodeName=DEFAULT** で始まる行を以下のように修正します。 ```sh NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN @@ -171,15 +169,15 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC ## 2-2. 実行結果とその考察 ノード当たりのMPIプロセス数とノード数をパラメータとして実行した結果を以下に示します。 -なお各計測値は、5回の計測結果の平均値です。 +なお各値は、5回の計測値の平均値です。 ![実行結果](graph_04.png) -この結果から、ノード当たりのMPIプロセス数に着目すると以下のことがわかります。 +この結果から、ノード当たりのMPIプロセス数に着目すると、以下のことがわかります。 - 4ノードまではMPIプロセス数36が高速で8ノードはMPIプロセス数32が高速 - ノード数が増えるに従いMPIプロセス数36と32の差が縮小する傾向を示し8ノードで逆転する -- 最も性能の良いノード数8の場合でMPIプロセス数32が36より総所要時間が **1.3 %** 短い +- 最も性能の良いノード数8の場合でMPIプロセス数32が36より総所要時間(計算ノードの総所要コスト)が **1.3 %** 短い(安価) 以上より、8ノードでの差が1%程度であることから、本テストケースの8ノードまでの実行であれば総合的にノード当たりのMPIプロセス数36が有利であると結論付け、次にノード当たりのMPIプロセス数36のノード数によるスケーラビリティーに着目します。 @@ -227,16 +225,16 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC また **ステップ 7.** の同期は、各MPIプロセスが解析結果を格納する **processorxx** ディレクトリとその配下のファイルを除外し、ポスト処理に必要なファイルだけを同期することで、所要時間の短縮を図ります。 -共有ストレージを使用する実行方法は、 **ステップ 1.** ・ **ステップ 3.** ・ **ステップ 6.** ・ **ステップ 7.** に時間を消費しませんが、NVMe SSDローカルディスクを使用する実行方法が共有ストレージを使用する実行方法に対して **ステップ 2.** ・ **ステップ 4.** ・ **ステップ 5.** で所要時間を短縮することが出来るため、トータルの実行時間はNVMe SSDローカルディスクを使用する実行方法が短くなります。 +共有ストレージを使用する実行方法は、 **ステップ 1.** ・ **ステップ 3.** ・ **ステップ 6.** ・ **ステップ 7.** に時間を消費しませんが、NVMe SSDローカルディスクを使用する実行方法が共有ストレージを使用する実行方法に対して **ステップ 2.** ・ **ステップ 4.** ・ **ステップ 5.** で所要時間を短縮するため、トータルの所要時間はNVMe SSDローカルディスクを使用する実行方法が短くなります。 -また、 **[1. メモリ帯域の有効利用を考慮した最適なノード内並列実行方法](#1-メモリ帯域の有効利用を考慮した最適なノード内並列実行方法)** と **[2. ノード間並列スケーラビリティーを考慮した最適な実行方法](#2-ノード間並列スケーラビリティーを考慮した最適な実行方法)** の結果と最もストレージ領域に負荷のかかる条件を選定するという観点から、以下の条件で計測します。 +また、 **[1. メモリ帯域の有効利用を考慮した最適なノード内並列実行方法](#1-メモリ帯域の有効利用を考慮した最適なノード内並列実行方法)** と **[2. スケーラビリティーを考慮した最適なノード間並列実行方法](#2-スケーラビリティーを考慮した最適なノード間並列実行方法)** の結果と、最もストレージ領域に負荷のかかる条件を選定するという観点から、以下の条件で計測します。 - **NPS** : **NPS2** - ノード当たりのMPIプロセス数 : 36 - MPIプロセスのノード内バインディング : NUMAノード単位サイクリック - ノード数 : 8 -本Tipsは、以下の環境・条件で **OpenFOAM** を実行し、CFD解析フローの所要時間(所要コスト)を計測しています。 +本Tipsは、以下の環境・条件で **OpenFOAM** を実行し、CFD解析フローの総所要時間(計算ノードの総所要コスト)を計測しています。 - シェイプ : **BM.Optimized3.36** - BIOS設定 : **SMT** 無効化、 **NPS2** (※5) @@ -245,8 +243,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC - OS : **Oracle Linux** 8.9ベースのHPC **[クラスタネットワーキングイメージ](/ocitutorials/hpc/#5-13-クラスタネットワーキングイメージ)** (※6) - **OpenFOAM** : v2312 - MPI : **[OpenMPI](https://www.open-mpi.org/)** 5.0.3 -- 解析対象モデル : **OpenFOAM HPC Benchmark Suite** の **HPC_Motorbike** の **Small** モデル -( **hpc/incompressible/simpleFoam/HPC_motorbike/Small/v1912/HPC_motorbike/Small/v1912** ) +- 解析対象モデル : **[OpenFOAM HPC Benchmark Suite](https://develop.openfoam.com/committees/hpc)** の **[HPC_Motorbike](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike)** の **[Small](https://develop.openfoam.com/committees/hpc/-/tree/develop/incompressible/simpleFoam/HPC_motorbike/Small/v1912)** モデル - 計算結果の出力頻度( **writeInterval** ) : 10タイムステップ(デフォルト値:1,000タイムステップ) ※5)NPSの設定方法は、 **[OCI HPCパフォーマンス関連情報](/ocitutorials/hpc/#2-oci-hpcパフォーマンス関連情報)** の **[パフォーマンスに関連するベアメタルインスタンスのBIOS設定方法](/ocitutorials/hpc/benchmark/bios-setting/)** を参照してください。 @@ -254,7 +251,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC この結果、以下のことが判明しています。 -- NVMe SSDローカルディスクは共有ストレージに対して所要時間(所要コスト)が **26.2 %** 短い(安価) +- NVMe SSDローカルディスクは共有ストレージに対して総所要時間(計算ノードの総所要コスト)が **26.2 %** 短い(安価) ## 3-1. 実行方法 @@ -265,7 +262,7 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC この際、 **OpenFOAM** の設定ファイル **system/controlDict** の **writeInterval** を **10** に変更します。 この値がデフォルト値 **1,000** のままの場合、計算結果を出力しないため、NVMe SSDローカルディスクの効果を得ることが出来ません。 -また、 **Slurm** の設定ファイル **slurm.conf** ファイルの **NodeName=DEFAULT** で始まる行を以下のように修正します。 +また、 **Slurm** の設定ファイル **slurm.conf** の **NodeName=DEFAULT** で始まる行を以下のように修正します。 ```sh NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerCore=1 RealMemory=500000 TmpDisk=10000 State=UNKNOWN @@ -277,12 +274,12 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC | :-: | :-: | :---------------: | :---------------: | | 288 | 8 | 36 | verbose,rank_ldom | -また、 **[2.0. 概要](#2-0-概要)** に記載の7ステップにかかる時間を個別に取得出来るようにした上で、結果の妥当性を確認するために各テストケースをそれぞれ5回計測します。 +また、 **[3.0. 概要](#3-0-概要)** に記載の7ステップにかかる時間を個別に取得出来るようにした上で、結果の妥当性を確認するために各テストケースをそれぞれ5回計測します。 ## 3-2. 実行結果とその考察 共有ストレージを使用した場合とNVMe SSDローカルディスクを使用した場合の結果を以下に示します。 -なお各計測値は、5回の計測結果の平均値です。 +なお各値は、5回の計測値の平均値です。 ![実行結果](graph_01.png) @@ -294,4 +291,8 @@ NodeName=DEFAULT CPUs=36 Boards=1 SocketsPerBoard=4 CoresPerSocket=9 ThreadsPerC - 総所要時間(計算ノードの総所要コスト)が **26.2 %** 短い(安価) 以上より、NVMe SSDローカルディスクを使用するために実行方法をひと手間掛けることで、CFD解析フローのコストを大幅に削減可能であることがわかります。 -またこのコスト削減は、高並列実行のケースや計算結果の出力頻度が高いケースでより大きな効果を得ることが出来ます。 \ No newline at end of file +またこのコスト削減は、本計測条件と比較して以下の条件に当てはまる場合、より大きな効果を得ることが出来ます。 + +- 解析対象モデルが大規模 +- 高並列実行 +- 計算結果の出力頻度が高い \ No newline at end of file diff --git a/tutorials/_hpc/spinup-nfs-server-fss.md b/tutorials/_hpc/spinup-nfs-server-fss.md new file mode 100644 index 0000000000..9a848d070c --- /dev/null +++ b/tutorials/_hpc/spinup-nfs-server-fss.md @@ -0,0 +1,119 @@ +--- +title: "ファイル・ストレージでファイル共有ストレージを構築する" +excerpt: "ファイル・ストレージでファイル共有ストレージを構築してみましょう。このチュートリアルを終了すると、HPC/GPUクラスタから利用することが可能な高可用性ファイル共有ストレージを、OCIのマネージドNFSサービスであるファイル・ストレージを使用してOCIコンソールから構築することが出来るようになります。" +order: "1310" +layout: single +header: + teaser: "/hpc/spinup-nfs-server-fss/architecture_diagram.png" + overlay_image: "/hpc/spinup-nfs-server-fss/architecture_diagram.png" + overlay_filter: rgba(34, 66, 55, 0.7) +#link: https://community.oracle.com/tech/welcome/discussion/4474261/ +--- + +*** +# 0. 概要 + +**ファイル・ストレージ** は、以下の特徴から高い可用性が要求されるHPC/GPUクラスタ向けのファイル共有ストレージとして最適な、マネージドNFSサービスです。 + +- ヘッドノードの **マウント・ターゲット** がHA構成となっていて高いサービス可用性を提供 +- ストレージの **ファイル・システム** 内のデータが複製されていて高いデータ可用性を提供 +- OCIコンソールからGUIでデプロイできるのため構築難易度が低い + +OCIは、ブロックボリュームサービスである **ブロック・ボリューム** も提供しており、ベア・メタル・インスタンスと組み合わせることで **ファイル・ストレージ** よりもコストパフォーマンスの高いファイル共有ストレージを構築することが出来ますが、構築手順は圧倒的に **ファイル・ストレージ** が簡単です。 +**ファイル・ストレージ** とブロック・ボリュームNFSサーバの比較詳細は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[コストパフォーマンスの良いファイル共有ストレージ構築方法](/ocitutorials/hpc/tech-knowhow/howto-configure-sharedstorage/)** を参照してください。 + +以上を踏まえて本チュートリアルは、 **ファイル・ストレージ** を使用するファイル共有ストレージを構築、ファイル共有クライアントとなる計算/GPUノードからこの領域をマウントするまでの手順を解説します。 + +![システム構成図](architecture_diagram.png) + +**所要時間 :** 約30分 + +**前提条件 :** ファイル共有ストレージを収容するコンパートメント(ルート・コンパートメントでもOKです)の作成と、このコンパートメントに対する必要なリソース管理権限がユーザーに付与されていること。 + +**注意 :** 本コンテンツ内の画面ショットは、現在のOCIコンソール画面と異なっている場合があります。 + +*** +# 1. 事前作業 + +## 1-0. 概要 + +本章は、 **ファイル・ストレージ** と計算/GPUノードをTCP接続する **仮想クラウド・ネットワーク** と、通常インターネットから直接アクセス出来ないプライベートサブネットに接続する計算/GPUノードにログインする際の踏み台となるBastionノードを予め用意します。 + +## 1-1. 仮想クラウド・ネットワーク作成 + +本章は、 **ファイル・ストレージ** と計算/GPUノードをTCP接続する **仮想クラウド・ネットワーク** を作成します。 + **仮想クラウド・ネットワーク** の作成は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その2 - クラウドに仮想ネットワーク(VCN)を作る](https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn)** の手順通りに実行し、以下のリソースを作成します。 + +- **仮想クラウド・ネットワーク** +- パブリックサブネット +- プライベートサブネット +- **インターネット・ゲートウェイ** (パブリックサブネットにアタッチ) +- **NATゲートウェイ** (プライベートサブネットにアタッチ) +- **サービス・ゲートウェイ** (プライベートサブネットにアタッチ) +- **ルート表** x 2(パブリックサブネットとプライベートサブネットにアタッチ) +- **セキュリティリスト** x 2(パブリックサブネットとプライベートサブネットにアタッチ) + +この **仮想クラウド・ネットワーク** は、 **セキュリティリスト** で以下のアクセス制限が掛けられています。 + +- インターネットからのアクセス:パブリックサブネットに接続されるインスタンスの22番ポート(SSH)に限定 +- インターネットへのアクセス:インターネット上の任意のIPアドレス・ポートに制限なくアクセス可能 + +## 1-2. Bastionノード作成 + +本章は、計算/GPUノードにログインする際の踏み台となるBastinノードを作成します。 +Bastionノードの作成は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その3 - インスタンスを作成する](https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance)** の手順を参考に、自身の要件に沿ったインスタンスを先の手順で **仮想クラウド・ネットワーク** を作成した **コンパートメント** とパブリックサブネットを指定して作成します。 +本チュートリアルは、以下属性のインスタンスをBastionノードとして作成します。 + +- **イメージ** : **Oracle Linux** 8.9ベースのHPC **[クラスタネットワーキングイメージ](/ocitutorials/hpc/#5-13-クラスタネットワーキングイメージ)** (※1) +- **シェイプ** : **VM.Optimized3.Flex** (任意のコア数・メモリ容量) +- **SSHキーの追加** : Bastionノードにログインする際使用するSSH秘密鍵に対応する公開鍵 + +※1)**[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[クラスタネットワーキングイメージの選び方](/ocitutorials/hpc/tech-knowhow/osimage-for-cluster/)** の **[1. クラスタネットワーキングイメージ一覧](/ocitutorials/hpc/tech-knowhow/osimage-for-cluster/#1-クラスタネットワーキングイメージ一覧)** のイメージ **No.1** です。 + +次に、このBastionノード上でSSHの鍵ペアを作成します。このSSH鍵は、Bastionノードから計算/GPUノードにログインする際に使用します。 +先のチュートリアル **インスタンスを作成する** に記載のインスタンスへの接続方法に従い、BastionノードにopcユーザでSSHログインして以下コマンドでSSH鍵ペアを作成、作成された公開鍵を後の計算/GPUノード用インスタンス作成手順で指定します。 + +```sh +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/home/opc/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/opc/.ssh/id_rsa. +Your public key has been saved in /home/opc/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:2EvR7FXtEYAsDknJG1oREie1kv2r1PN3OYrYCP/Xlyg opc@bast +The keys randomart image is: ++---[RSA 2048]----+ +| +=*= . ..oo.| +| *B.+ o . ..| +| ooo* + . ..| +| ..+.+ . .| +| . S.. | +| .... | +| o.+ o o| +| . + *E.+ *.| +| . +.=+.o o| ++----[SHA256]-----+ +$ cat .ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD0TDo4QJPbXNRq/c5wrc+rGU/dLZdUziHPIQ7t/Wn+00rztZa/3eujw1DQvMsoUrJ+MHjE89fzZCkBS2t4KucqDfDqcrPuaKF3+LPBkgW0NdvytBcBP2J9zk15/O9tIVvsX8WBi8jgPGxnQMo4mQuwfvMh1zUF5dmvX3gXU3p+lH5akZa8sy/y16lupge7soN01cQLyZfsnH3BA7TKFyHxTe4MOSHnbv0r+6Cvyy7Url0RxCHpQhApA68KBIbfvhRHFg2WNtgggtVGWk+PGmTK7DTtYNaiwSfZkuqFdEQM1T6ofkELDruB5D1HgDi3z+mnWYlHMNHZU5GREH66acGJ opc@bast +$ +``` + +次に、以降作成する計算/GPUノードの名前解決をインスタンス名で行うため、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[計算ノードの効果的な名前解決方法](/ocitutorials/hpc/tech-knowhow/compute-name-resolution/)** の手順を実施します。 + +*** +# 2. HPC/GPUノード作成 + +本章は、ファイル共有ストレージのファイル共有クライアントとなるHPC/GPUノードを作成します。 + +この構築手順は、 **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[HPCクラスタ](/ocitutorials/hpc/#1-1-hpcクラスタ)** カテゴリや **[機械学習環境](/ocitutorials/hpc/#1-2-機械学習環境)** カテゴリの各チュートリアルを参照してください。 + +*** +# 3. ファイル共有ストレージ環境構築 + +本章は、 **ファイル・ストレージ** を利用し、ファイル共有ストレージ環境を構築します。 + +この構築手順は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その6 - ファイルストレージサービス(FSS)で共有ネットワークボリュームを利用する](https://oracle-japan.github.io/ocitutorials/beginners/using-file-storage/)** を参照してください。 + +これで、このチュートリアルは終了です。 \ No newline at end of file diff --git a/tutorials/_hpc/spinup-nfs-server-fss/architecture_diagram.png b/tutorials/_hpc/spinup-nfs-server-fss/architecture_diagram.png new file mode 100644 index 0000000000..c951740ac1 Binary files /dev/null and b/tutorials/_hpc/spinup-nfs-server-fss/architecture_diagram.png differ diff --git a/tutorials/_hpc/spinup-nfs-server-nvme.md b/tutorials/_hpc/spinup-nfs-server-nvme.md new file mode 100644 index 0000000000..8977de1752 --- /dev/null +++ b/tutorials/_hpc/spinup-nfs-server-nvme.md @@ -0,0 +1,265 @@ +--- +title: "短期保存データ用高速ファイル共有ストレージを構築する" +excerpt: "短期保存データを対象とする高速ファイル共有ストレージを構築してみましょう。このチュートリアルを終了すると、NVMe SSDローカルディスクを搭載するベアメタルインスタンスBM.DenseIO.E5.128を使用する、短期保存データ用高速ファイル共有ストレージを構築することが出来るようになります。" +order: "1333" +layout: single +header: + teaser: "/hpc/spinup-nfs-server-nvme/architecture_diagram.png" + overlay_image: "/hpc/spinup-nfs-server-nvme/architecture_diagram.png" + overlay_filter: rgba(34, 66, 55, 0.7) +#link: https://community.oracle.com/tech/welcome/discussion/4474261/ +--- + +*** +# 0. 概要 + +**[BM.DenseIO.E5.128](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-dense)** は、6.8 TBのNVMe SSDを12台ローカル接続し、ストレージに高いスループットとIOPSを要求する様々なワークロード用途に最適なベア・メタル・シェイプです。 + +また **BM.DenseIO.E5.128** は、100 GbpsのTCP/IP接続用ポートを1個搭載し、NVMe SSDローカルディスクに構築するストレージ領域を外部にサービスする際、100 Gbpsの帯域を全てクライアントへのサービスに割当てることで、ストレージとのアクセスにiSCSI接続によるネットワーク帯域を消費する **ブロック・ボリューム** を使用する場合と比較し、高速なストレージサービスサーバとして利用することが出来ます。 + +これに対して **BM.DenseIO.E5.128** のNVMe SSDローカルディスクを使用するストレージサービスは、 **ブロック・ボリューム** を使用する場合と比較し、以下の点を考慮する必要があります。 + +1. NVMe SSDローカルディスク上のデータ保護を自身で行う必要がある +2. ベア・メタル・インスタンスの故障でNVMe SSDローカルディスク上のデータを消失するリスクがある +3. データ格納容量が最大で38 TB程度(RAID10でファイルシステムを構成した場合)に限定され拡張出来ない + +本チュートリアルは、これらの考慮点に対して以下のアプローチを取り、 + +1. ソフトウェアRAIDによるRAID10で最低限の可用性を確保 +2. NVMe SSDローカルディスク上のデータを定期的に他の長期保存ストレージにバックアップ(保存するデータを短期保存データに限定) +3. **2.** のアプローチでバックアップの後データを削除して空き容量を確保 + +以下構成の短期保存データ用高速ファイル共有ストレージを構築します。 + +- NFSサーバ + - シェイプ : **BM.DenseIO.E5.128** + - OS : **Oracle Linux** 8.10(Oracle-Linux-8.10-2024.07.31-0) +- ソフトウェアRAID・NFS : OS付属のものを利用 +- RAID構成 + - RAIDレベル : RAID10 + - Placement : f2 + - Stripe width : 6 + - Chunk size / Stripe unit : 8 MB +- ファイルシステム容量 : 38 TB +- 起動nfsdスレッド数 : 128 + +![システム構成図](architecture_diagram.png) + +本チュートリアルで構築する短期保存データ用高速ファイル共有ストレージは、以下の条件でファイルシステムベンチマークを実行し、 + +- ベンチマークツール : **[IO500](https://io500.org/)** ISC20に含まれる **IOR** と **mdtest** +- NFSクライアント + - シェイプ : **VM.Standard2.24** + - OS : **Oracle Linux** 8.10(Oracle-Linux-8.10-2024.07.31-0) + - ノード数 : 8 +- **IOR** / **mdtest** 実行時MPIプロセス数 : 128(ノード当たり16) + +以下の性能が出ています。 + +| | Result (※1) | +| :-----------: | ----------: | +| IOR write | 8,967 MiB/s | +| IOR read | 7,526 MiB/s | +| mdtest create | 83,406 | +| mdtest stat | 255,682 | +| mdtest delete | 70,499 | + +※1)3回実行した平均値です。 + +**所要時間 :** 約1時間 + +**前提条件 :** ファイル共有ストレージを収容するコンパートメント(ルート・コンパートメントでもOKです)の作成と、このコンパートメントに対する必要なリソース管理権限がユーザーに付与されていること。 + +**注意 :** 本コンテンツ内の画面ショットは、現在のOCIコンソール画面と異なっている場合があります。 + +*** +# 1. 事前作業 + +## 1-0. 概要 + +本章は、NFSサーバと計算/GPUノードをTCP接続する **仮想クラウド・ネットワーク** と、通常インターネットから直接アクセス出来ないプライベートサブネットに接続するNFSサーバと計算/GPUノードにログインする際の踏み台となるBastionノードを予め用意します。 + +## 1-1. 仮想クラウド・ネットワーク作成 + +本章は、NFSサーバと計算/GPUノードを接続する **仮想クラウド・ネットワーク** を作成します。 + +**仮想クラウド・ネットワーク** の作成は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その2 - クラウドに仮想ネットワーク(VCN)を作る](https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn)** の手順通りに実行し、以下のリソースを作成します。 + +- **仮想クラウド・ネットワーク** (10.0.0.0/16) +- パブリックサブネット +- プライベートサブネット +- **インターネット・ゲートウェイ** (パブリックサブネットにアタッチ) +- **NATゲートウェイ** (プライベートサブネットにアタッチ) +- **サービス・ゲートウェイ** (プライベートサブネットにアタッチ) +- **ルート表** x 2(パブリックサブネットとプライベートサブネットにアタッチ) +- **セキュリティリスト** x 2(パブリックサブネットとプライベートサブネットにアタッチ) + +この **仮想クラウド・ネットワーク** は、 **セキュリティリスト** で以下のアクセス制限が掛けられています。 + +- インターネットからのアクセス:パブリックサブネットに接続されるインスタンスの22番ポート(SSH)に限定 +- インターネットへのアクセス:インターネット上の任意のIPアドレス・ポートに制限なくアクセス可能 + +## 1-2. Bastionノード作成 + +本章は、NFSサーバにログインする際の踏み台となるBastinノードを作成します。 + +Bastionノードの作成は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その3 - インスタンスを作成する](https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance)** の手順を参考に、自身の要件に沿ったインスタンスを先の手順で **仮想クラウド・ネットワーク** を作成した **コンパートメント** とパブリックサブネットを指定して作成します。 +本チュートリアルは、以下属性のインスタンスをBastionノードとして作成します。 + +- **イメージ** : **Oracle Linux** 8.10 +- **シェイプ** : **VM.Optimized3.Flex** (任意のコア数・メモリ容量) +- **SSHキーの追加** : Bastionノードにログインする際使用するSSH秘密鍵に対応する公開鍵 + +次に、このBastionノード上でSSHの鍵ペアを作成します。このSSH鍵は、BastionノードからNFSサーバにログインする際に使用します。 +先のチュートリアル **インスタンスを作成する** に記載のインスタンスへの接続方法に従い、BastionノードにopcユーザでSSHログインして以下コマンドでSSH鍵ペアを作成、作成された公開鍵を後のNFSサーバ用インスタンス作成手順で指定します。 + +```sh +$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (/home/opc/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/opc/.ssh/id_rsa. +Your public key has been saved in /home/opc/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:2EvR7FXtEYAsDknJG1oREie1kv2r1PN3OYrYCP/Xlyg opc@bast +The keys randomart image is: ++---[RSA 2048]----+ +| +=*= . ..oo.| +| *B.+ o . ..| +| ooo* + . ..| +| ..+.+ . .| +| . S.. | +| .... | +| o.+ o o| +| . + *E.+ *.| +| . +.=+.o o| ++----[SHA256]-----+ +$ cat .ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD0TDo4QJPbXNRq/c5wrc+rGU/dLZdUziHPIQ7t/Wn+00rztZa/3eujw1DQvMsoUrJ+MHjE89fzZCkBS2t4KucqDfDqcrPuaKF3+LPBkgW0NdvytBcBP2J9zk15/O9tIVvsX8WBi8jgPGxnQMo4mQuwfvMh1zUF5dmvX3gXU3p+lH5akZa8sy/y16lupge7soN01cQLyZfsnH3BA7TKFyHxTe4MOSHnbv0r+6Cvyy7Url0RxCHpQhApA68KBIbfvhRHFg2WNtgggtVGWk+PGmTK7DTtYNaiwSfZkuqFdEQM1T6ofkELDruB5D1HgDi3z+mnWYlHMNHZU5GREH66acGJ opc@bast +$ +``` + +次に、以降作成するNFSサーバの名前解決をインスタンス名で行うため、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[計算ノードの効果的な名前解決方法](/ocitutorials/hpc/tech-knowhow/compute-name-resolution/)** の手順を実施します。 + +*** +# 2. 計算/GPUノード作成 + +本章は、短期保存データ用高速ファイル共有ストレージのNFSクライアントとなる計算/GPUノードを作成します。 + +この構築手順は、 **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[HPCクラスタ](/ocitutorials/hpc/#1-1-hpcクラスタ)** カテゴリや **[機械学習環境](/ocitutorials/hpc/#1-2-機械学習環境)** カテゴリの各チュートリアルを参照してください。 + +*** +# 3. 短期保存データ用高速ファイル共有ストレージ環境構築 + +## 3-0. 概要 + +本章は、短期保存データ用高速ファイル共有ストレージ環境を構築します。 + +この構築は、以下の手順を経て行います。 + +- NFSサーバインスタンス作成 +- NVMe SSDローカルディスク領域ファイルシステム作成 +- NFSサーバ環境構築 +- NFSクライアントでのファイルシステムマウント + +## 3-1. NFSサーバインスタンス作成 + +本章は、NFSサーバインスタンスを作成します。 + +NFSサーバインスタンスの作成は、 **[OCIチュートリアル](https://oracle-japan.github.io/ocitutorials/)** の **[その3 - インスタンスを作成する](https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance)** の手順を参考に、以下属性のインスタンスを先の手順で **仮想クラウド・ネットワーク** を作成した **コンパートメント** とプライベートサブネットを指定して作成します。 + +- **名前** : インスタンスの名前(イニシャルホスト名)(本チュートリアルでは **nfs-srv**) +- **イメージ** : **Oracle Linux** 8.10 +- **シェイプ** : **BM.DenseIO.E5.128** +- **SSHキーの追加** : **[1-2. Bastionノード作成](#1-2-bastionノード作成)** で作成したSSH鍵公開鍵 + +NFSサーバインスタンスが **実行中** となったら、先に作成したBastionノードからopcユーザでSSHログインします。 + +次に、以下コマンドをopcユーザで実行し、12台のNVMe SSDローカルディスクが接続されていることを確認します。 + +```sh +$ lsblk | grep ^nvme | sort -k 1.5,1.6 -n +nvme0n1 259:7 0 6.2T 0 disk +nvme1n1 259:2 0 6.2T 0 disk +nvme2n1 259:4 0 6.2T 0 disk +nvme3n1 259:6 0 6.2T 0 disk +nvme4n1 259:3 0 6.2T 0 disk +nvme5n1 259:1 0 6.2T 0 disk +nvme6n1 259:10 0 6.2T 0 disk +nvme7n1 259:11 0 6.2T 0 disk +nvme8n1 259:9 0 6.2T 0 disk +nvme9n1 259:0 0 6.2T 0 disk +nvme10n1 259:5 0 6.2T 0 disk +nvme11n1 259:8 0 6.2T 0 disk +$ +``` + +## 3-2. NVMe SSDローカルディスク領域ファイルシステム作成 + +本章は、NFSサーバインスタンスでNVMe SSDローカルディスクにファイルシステムを作成します。 + +以下コマンドをopcユーザで実行し、NVMe SSDローカルディスクにRAID10のファイルシステムを作成しこれを **/mnt/nvme_raid** にマウントします。 + +```sh +$ sudo mdadm --create /dev/md0 --raid-devices=12 --level=10 --chunk=8M --layout=f2 --assume-clean /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 +$ sudo pvcreate /dev/md0 +$ sudo vgcreate nvme /dev/md0 +$ sudo lvcreate -y -l 100%FREE -n nvme_raid nvme +$ sudo mkfs.xfs -d su=8m,sw=6 -L nvme_raid /dev/nvme/nvme_raid +$ echo "LABEL=nvme_raid /mnt/nvme_raid/ xfs defaults,noatime 0 0" | sudo tee -a /etc/fstab +$ sudo systemctl daemon-reload +$ sudo mkdir -p /mnt/nvme_raid +$ sudo mount /mnt/nvme_raid +``` + +次に、以下コマンドをopcユーザで実行し、マウントしたファイルシステムを確認します。 + +```sh +$ df -h /mnt/nvme_raid +Filesystem Size Used Avail Use% Mounted on +/dev/mapper/nvme-nvme_raid 38T 266G 37T 1% /mnt/nvme_raid +$ +``` + +## 3-3. NFSサーバ環境構築 + +本章は、NFSサーバインスタンスでNFSサーバ環境を構築します。 + +以下コマンドをNFSサーバインスタンスのopcユーザで実行し、NFSサーバを起動します。 + +```sh +$ echo "/mnt/nvme_raid 10.0.0.0/16(rw,sync,no_root_squash)" | sudo tee -a /etc/exports +/mnt/nvme_raid 10.0.0.0/16(rw,sync,no_root_squash) +$ sudo sed -i 's/# threads=8/threads=128/g' /etc/nfs.conf +$ sudo systemctl enable --now nfs-server rpcbind +Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service. +$ sudo exportfs +/mnt/nvme_raid 10.0.0.0/16 +$ +``` + +## 3-4. NFSクライアントでのファイルシステムマウント + +本章は、短期保存データ用高速ファイル共有ストレージのNFSクライアントとなる計算/GPUノードで、当該領域をNFSマウントします。 + +以下コマンドを計算/GPUノードのopcユーザで実行し、短期保存データ用高速ファイル共有ストレージ領域をNFSマウントします。 + +```sh +$ echo "nfs-srv:/mnt/nvme_raid /mnt/nvme_raid nfs vers=3,defaults,noatime,nodiratime,bg,timeo=100,ac,actimeo=120,nocto,rsize=1048576,wsize=1048576,nolock,local_lock=none,proto=tcp,sec=sys,_netdev 0 0" | sudo tee -a /etc/fstab +$ sudo systemctl daemon-reload +$ sudo mkdir -p /mnt/nvme_raid +$ sudo mount /mnt/nvme_raid +``` + +次に、以下コマンドを計算/GPUノードのopcユーザで実行し、マウントしたファイルシステムを確認します。 + +```sh +$ df -h /mnt/nvme_raid +Filesystem Size Used Avail Use% Mounted on +/dev/mapper/nvme-nvme_raid 38T 266G 37T 1% /mnt/nvme_raid +$ +``` + +これで、このチュートリアルは終了です。 + diff --git a/tutorials/_hpc/spinup-nfs-server-nvme/architecture_diagram.png b/tutorials/_hpc/spinup-nfs-server-nvme/architecture_diagram.png new file mode 100644 index 0000000000..d08ce70a29 Binary files /dev/null and b/tutorials/_hpc/spinup-nfs-server-nvme/architecture_diagram.png differ diff --git a/tutorials/_hpc/spinup-nfs-server.md b/tutorials/_hpc/spinup-nfs-server.md index 516a452308..1c4210fced 100644 --- a/tutorials/_hpc/spinup-nfs-server.md +++ b/tutorials/_hpc/spinup-nfs-server.md @@ -1,7 +1,7 @@ --- title: "ブロック・ボリュームでNFSサーバを構築する" excerpt: "ブロック・ボリュームでNFSサーバを構築してみましょう。このチュートリアルを終了すると、OCIのブロックストレージサービスであるブロック・ボリュームを使用するコストパフォーマンスに優れるNFSサーバを、OCIコンソールから簡単に構築することが出来るようになります。" -order: "1310" +order: "1320" layout: single header: teaser: "/hpc/spinup-nfs-server/architecture_diagram.png" @@ -13,11 +13,12 @@ header: *** # 0. 概要 -Oracle Cloud Infrastructure(以降OCIと記載)の **ブロック・ボリューム** は、以下の特徴からHPCクラスタやGPUクラスタのファイル共有ストレージとして使用するNFSサーバのストレージに最適なサービスです。 +**ブロック・ボリューム** は、以下の特徴からHPCクラスタやGPUクラスタのファイル共有ストレージとして使用するNFSサーバのストレージに最適なサービスです。 + - 同一 **可用性ドメイン** 内の異なる **フォルト・ドメイン** に複数のレプリカを持ち高い可用性を実現 - ディスク装置にNVMe SSDを採用することで高いスループットとIOPSを実現 -また、Intel Ice Lakeプロセッサを搭載するベア・メタル・シェイプ **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** は、50 GbpsのTCP/IP接続用ポートを2個搭載し、それぞれをiSCSI接続の **ブロック・ボリューム** アクセス用途とNFSクライアントへのNFSサービス用途に割当てることで、コストパフォーマンスの高いNFSサーバ用インスタンスとして利用することが可能です。 +また、Intel Ice Lakeプロセッサを搭載するベア・メタル・シェイプ **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** は、50 GbpsのTCP/IP接続用ポートを2個搭載し、それぞれをiSCSI接続の **ブロック・ボリューム** アクセス用途とNFSクライアントへのNFSサービス用途に割当てることで、コストパフォーマンスの高いNFSサーバ用インスタンスとして利用することが可能です。 OCIは、NFSのマネージドサービスである **ファイル・ストレージ** も提供しており、OCIコンソールから簡単にNFSファイルサービスをデプロイすることが出来ますが、本チュートリアルのように少しだけ手間をかけて **ブロック・ボリューム** とベア・メタル・インスタンスを組み合わせたNFSファイルサービスを自身で構築することで、 **ファイル・ストレージ** よりもコストパフォーマンスの高いファイル共有ストレージを構築することが出来ます。 **ファイル・ストレージ** とブロック・ボリュームNFSサーバの比較詳細は、 **[OCI HPCテクニカルTips集](/ocitutorials/hpc/#3-oci-hpcテクニカルtips集)** の **[コストパフォーマンスの良いファイル共有ストレージ構築方法](/ocitutorials/hpc/tech-knowhow/howto-configure-sharedstorage/)** を参照してください。 @@ -427,17 +428,17 @@ IORとmdtestは、複数のNFSクライアントからベンチマークを実 - SSHのPATH設定にOpenMPIツール群格納ディレクトリを追加 - IO500インストール -ここでは、4ノードのNFSクライアントからIORとmdtestを実行し、以下性能が出ています。 +ここでは、4ノードのNFSクライアントからIORとmdtestを実行し、以下の性能が出ています。 | Test | Result (※3) | | :-----------: | -----------: | -| IOR write | 3,720 MiB/s | +| IOR write | 3,720 MiB/s | | IOR read | 4,938 MiB/s | | mdtest create | 3,796 | | mdtest stat | 23,860 | | mdtest delete | 3,818 | -※3)3回実行した平均値です。 +※3)3回計測した平均値です。 ## 3-1. OpenMPIインストール diff --git a/tutorials/_hpc/spinup-nfs-server/architecture_diagram.png b/tutorials/_hpc/spinup-nfs-server/architecture_diagram.png index 0082714083..43ca30372d 100644 Binary files a/tutorials/_hpc/spinup-nfs-server/architecture_diagram.png and b/tutorials/_hpc/spinup-nfs-server/architecture_diagram.png differ diff --git a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage.md b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage.md index 6e2ef025ee..985ede4879 100644 --- a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage.md +++ b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage.md @@ -1,6 +1,6 @@ --- -title: "コストパフォーマンスの良いファイル共有ストレージ構築方法" -excerpt: "HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれを構築することが一般的ですが、この際の選択肢として、NFSのマネージドサービスであるファイル・ストレージを使用する方法と、ブロック・ボリュームとベアメタルインスタンスを組み合わせたNFSサーバを構築する方法があります。本テクニカルTipsは、コストパフォーマンス等を考慮してどちらの方法を選択すればよいか、ブロック・ボリュームとベアメタルインスタンスを組み合わせたNFSサーバを構築する場合どのようにブロック・ボリュームとベアメタルインスタンスを構成すればよいか、解説します。" +title: "HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法" +excerpt: "HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれを構築することが一般的ですが、この際の選択肢は、NFSのマネージドサービスであるファイル・ストレージを使用する方法と、高帯域のネットワークポートを持つベア・メタル・インスタンスとストレージサービスを組合せてNFSサーバを自身で構築する方法があります。本テクニカルTipsは、コストパフォーマンス、可用性、構築・運用のしやすさ等を考慮し、最適なファイル共有ストレージ構築手法を解説します。" order: "322" layout: single header: @@ -15,15 +15,61 @@ table, th, td { } -HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれを構築することが一般的ですが、この際の選択肢として、NFSのマネージドサービスである **ファイル・ストレージ** を使用する方法と、 **ブロック・ボリューム** とベアメタルインスタンスを組み合わせたNFSサーバ(以降" **ブロック・ボリューム** NFSサーバ"と呼称)を構築する方法があります。 -本テクニカルTipsは、コストパフォーマンス等を考慮してどちらの方法を選択すればよいか、 **ブロック・ボリューム** NFSサーバを構築する場合どのように **ブロック・ボリューム** とベアメタルインスタンスを構成すればよいか、解説します。 - *** -# 1. ブロック・ボリュームNFSサーバ構成 +# 0. 概要 -本章は、 **ブロック・ボリューム** NFSサーバを構築する際、コストパフォーマンスを最適化するベアメタルインスタンスと **ブロック・ボリューム** の構成を解説します。 +HPC/GPUクラスタと共に利用するファイル共有ストレージは、その構築方法を決定する際に以下の評価項目を考慮する必要があります。 -NFSサーバ用のベアメタルインスタンスは、Intel Ice Lakeプロセッサを搭載するベアメタルシェイプ **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** を使用します。 +1. 計算/GPUノードの複数ノード同時アクセス時性能 +2. ランニングコスト +3. ストレージ領域に格納するデータの可用性 +4. ファイル共有ストレージサービスの可用性 +5. システム構築・運用のしやすさ + +本テクニカルTipsは、HPC/GPUクラスタ向けにNFSでサービスするファイル共有ストレージを構築することを念頭に、いくつかのファイル共有ストレージ構築手法を紹介し、上記評価基準を元にどの手法を採用すればよいか、その考慮点を解説します。 + +NFSでサービスするファイル共有ストレージを構築する際の最初の考慮点は、マネージドのNFSサービスである **ファイル・ストレージ** を使用する方法と、自身で **ベア・メタル・インスタンス** からNFSサーバを構築する(以降"ベア・メタル・インスタンスNFSサーバ"と呼称)方法の、どちらを採用するかです。 + +ここで **ファイル・ストレージ** を採用する場合は、性能要件に合わせて **マウント・ターゲット** に標準タイプ(以降"標準FSS"と呼称)とHigh Performanceタイプ(以降"高性能FSS"と呼称)(※1)のどちらを使用するかを考慮します。 + +※1)High Performanceタイプの **マウント・ターゲット** は、その性能違いで3種類存在しますが、本テクニカルTipsでは読み取りスループット設定が80 Gbpsで性能が最も高い **HPMT-80** を前提に解説します。 +High Performanceタイプの **マウント・ターゲット** 詳細は、 **[ここ](https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/managingmounttargets.htm#performance)** を参照くして下さい。 + +またベア・メタル・インスタンスNFSサーバを採用する場合は、以下2種類のどちらにするかを考慮します。 + +1. ストレージ領域に **ブロック・ボリューム** を使用しこれをベア・メタル・インスタンスにアタッチする方法(以降"ブロック・ボリュームNFSサーバ”と呼称) +2. **ベア・メタル・インスタンス** にNVMe SSDドライブを搭載するDenceIOシェイプを使用する方法(以降”DenceIO NFSサーバ”と呼称) + +以上より、本テクニカルTipsで解説するファイル共有ストレージは、以下4種類です。 + +| 呼称 | 使用するサービス | ヘッドノード | ストレージ領域 | ターゲットスループット | +| :--------------: | :--------------------------------------: | :----------------------------: | :--------------: | :---------: | +| 標準FSS | **ファイル・ストレージ** | **標準マウント・ターゲット** | **ファイル・システム** | 100 MB/s | +| 高性能FSS | **ファイル・ストレージ** | **High Performanceマウント・ターゲット** | **ファイル・システム** | 10 GB/s | +| ブロック・ボリュームNFSサーバ | **ベア・メタル・インスタンス**
+
**ブロック・ボリューム** | **ベア・メタル・インスタンス** | **ブロック・ボリューム** | 5 GB/s | +| DenceIO NFSサーバ | DenceIOシェイプ
**ベア・メタル・インスタンス** | **ベア・メタル・インスタンス** | NVMe SSDローカルディスク | 10 GB/s | + +以降では、これら4種類のファイル共有ストレージ構築手法について、まず初めに2種類の **ベア・メタル・インスタンス** NFSサーバ(ブロック・ボリュームNFSサーバとDenceIO NFSサーバ)の構成を解説し、次に前述の評価項目をもとに4種類のファイル共有ストレージ構築手法を比較します。 + +なお、各ファイル共有ストレージ構築手法に沿ったファイル共有ストレージは、 **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[1-3. ファイル共有ストレージ](/ocitutorials/hpc/#1-3-ファイル共有ストレージ)** カテゴリの以下チュートリアルを参照して構築することが出来ます。 + +| 呼称 | チュートリアル | +| :--------------: | :-------------------------------------------------------------------------: | +| 標準FSS | **[ファイル・ストレージでファイル共有ストレージを構築する](/ocitutorials/hpc/spinup-nfs-server-fss/)** | +| 高性能FSS | **[ファイル・ストレージでファイル共有ストレージを構築する](/ocitutorials/hpc/spinup-nfs-server-fss/)** | +| ブロック・ボリュームNFSサーバ | **[ブロック・ボリュームでNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** | +| DenceIO NFSサーバ | **[短期保存データ用高速ファイル共有ストレージを構築する](/ocitutorials/hpc/spinup-nfs-server-nvme/)** | + +*** +# 1. ベア・メタル・インスタンスNFSサーバ構成 + +## 1-0. 概要 + +本章は、2種類のベア・メタル・インスタンスNFSサーバ(ブロック・ボリュームNFSサーバとDenceIO NFSサーバ)の構成を解説します。 + +## 1-1. ブロック・ボリュームNFSサーバ構成 + +NFSサーバとなるベアメタルインスタンスは、 **[BM.Optimized3.36](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-hpc-optimized)** を使用します。 この理由は、このシェイプが50 GbpsのTCP/IP接続用ポートを2個搭載し、それぞれをiSCSI接続の **ブロック・ボリューム** アクセス用途とNFSクライアントへのNFSサービス用途に割当ててこれらをNFSサービス時に同時に使用することで、NFSサービスに50 Gbpsの帯域をフルに使用することが可能となるためです。 またデータ格納領域に使用する **ブロック・ボリューム** は、ボリューム・パフォーマンスにBalancedを使用します。 @@ -34,67 +80,120 @@ HPC/GPUクラスタで使用するファイル共有ストレージは、アプ ![システム構成図](architecture_diagram.png) -なお、本構成の **ブロック・ボリューム** NFSサーバは、 **[マーケットプレース](/ocitutorials/hpc/#5-5-マーケットプレイス)** から無料で利用可能な **[スタック](/ocitutorials/hpc/#5-3-スタック)** を利用して自動構築する事が可能で、詳細は **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[ブロック・ボリュームでNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** を参照ください。 +## 1-2. DenceIO NFSサーバ構成 + +NFSサーバとなるベアメタルインスタンスは、 **[BM.DenseIO.E5.128](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm#bm-dense)** を使用します。 +この理由は、このシェイプが100 GbpsのTCP/IP接続用ポートを1個搭載し、12台の6.8 TB NVMe SSDローカルディスクに構築するストレージ領域をNFSでサービスする際、100 Gbpsの帯域全てをNFSクライアントへのサービスに使用することが可能となるためです。 +これにより、 **[1-1. ブロック・ボリュームNFSサーバ構成](#1-1-ブロックボリュームnfsサーバ構成)** で解説するブロック・ボリュームNFSサーバに対して、NFSクライアントへのサービスに使用できるネットワーク帯域が2倍となり、NVMe SSDローカルディスクの持つ高いI/O性能とあいまって、計算/GPUノードからの多数同時アクセス時に高いスループットとメタデータ性能を提供するファイル共有ストレージを構築することが可能になります。 + +![システム構成図](architecture_diagram_nvme.png) + +またデータ格納領域に使用する12台のNVMe SSDドライブは、 **Linux software RAID** を使用し、データ保全性とパフォーマンスを両立するRAID10構成とします。 + +![RAID構成図](raid_configuration.png) *** -# 2. ファイル・ストレージとブロック・ボリュームNFSサーバの比較 +# 2. 各ファイル共有ストレージ構築方法の比較 ## 2.0 概要 -本章は、前述の構成の **ブロック・ボリューム** NFSサーバと **ファイル・ストレージ** を、以下の観点で比較します。 +本章は、4種類のファイル共有ストレージ構築手法を、 **[概要](#0-概要)** に記載の5個の評価項目を以下3グループに分類して比較します。 -- コストパフォーマンス -- システム構築・運用のしやすさ +- コストパフォーマンス + 1.計算/GPUノードの複数ノード同時アクセス時性能 + 2.ランニングコスト +- 可用性 + 3.ストレージ領域に格納するデータの可用性 + 4.ファイル共有ストレージサービスの可用性 +- 運用性 + 5.システム構築・運用のしやすさ -詳細は以降の章で解説しますが、コストパフォーマンスは **ブロック・ボリューム** NFSサーバが有利で、システム構築やシステム運用のしやすさでは **ファイル・ストレージ** が有利となり、どちらの観点に重きを置くかで選択することになります。 +詳細は以降の章で解説しますが、コストパフォーマンスはベア・メタル・インスタンスNFSサーバを使用する構築手法が有利で、可用性と運用性は **ファイル・ストレージ** を使用する構築手法が有利となります。 ## 2-1. コストパフォーマンスによる比較 +本章は、コストパフォーマンスとして以下2項目の評価指標を採用します。 + +1. 計算/GPUノードの複数ノード同時アクセス時性能 +2. ランニングコスト + +ここで **評価指標 1.** は、 **[IO500](https://io500.org/)** でも採用されているファイルシステムベンチマークツールである **IOR** と **mdtest** を、それぞれスループットとメタデータ性能の評価指標として採用します。 + 以下の表は、 **ファイル・ストレージ** と前述の構成の **ブロック・ボリューム** NFSサーバを、価格と性能の観点で比較しています。 -この表から、 **ブロック・ボリューム** NFSサーバのコストパフォーマンスが **ファイル・ストレージ** より圧倒的に高いことがわかります。 +| 呼称 | 構成 | 月あたりランニングコスト
(2024年9月時点定価) | IOR
write | IOR
read | mdtest
create | mdtest
stat | mdtest
delete | +| :---: | :------------------------------------------------------: | -----------------------: | :---------------: | :-------------: | :--------------: | :------------: | :--------------: | +| 標準FSS | **マウント・ターゲット** (Standard)
**ファイルシステム** (15 TB)
Total | 0 円
697,500 円
**697,500** 円| 125 MiB/s
(※1) | 125 MiB/s
(※1) | -
(※2) | -
(※2) | -
(※2) | + 高性能FSS| **マウント・ターゲット** (HPMT-80)
**ファイルシステム** (80 TB)
Total |3,360,000 円
**マウント・ターゲット** 込み
**3,360,000 円**|10 GiB/s
(※1)|10 GiB/s
(※1)|-
(※2)|-
(※2)|-
(※2)| +| ブロック・ボリューム
NFSサーバ | **ブロック・ボリューム** (Balanced 15 TB)
**BM.Optimized3.36**
Total | 98,813 円
302,659 円
**401,472** 円 | 3,720 MiB/s
(※3) | 4,938 MiB/s
(※3) | 3,796
(※3) | 23,860
(※3) | 3,818
(※3) | + DenceIO
NFSサーバ|**BM.DenseIO.E5.128**
NVMe SSD 40.8 TB (RAID10)|**1,328,701** 円|8,967 MiB/s
(※3)|7,526 MiB/s
(※3)|83,406
(※3)|255,682
(※3)|70,499
(※3)| + +※1)**IOR** 測定値が無いため、 **マウント・ターゲット** の最大スループット値を記載しています。 +※2)**mdtest** 測定値が無いため、記載していません。 +※3)3回計測した平均値です。 -| | 構成 | 月額定価
(2023年9月時点) | スループット | IOPS | | -| :-----------------------: | :---------------------------------------------------------------------------------: | -----------------------------------------------: | ------------------: | --------------: | --- | -| **ファイル・ストレージ** | マウント・ターゲット x 1, ファイルシステム x 1(15 TB)
- | **630,000** 円
(\*5, 6) | 983 MB/s
(\*1) | 25.0 k
(\*2) | | -| **ブロック・ボリューム**
NFSサーバ | **ブロック・ボリューム** (Balanced)1 TB x 15ボリューム
**BM.Optimized3.36** x 1インスタンス
Total
- | 89,250円
273,370円
**362,620** 円
(\*5, 6) | 2,040 MB/s
(\*3) | 33.3 k
(\*4) | | +この表から、以下のことがわかります。 -*1) 以下URLで公開されている **ファイル・ストレージ** の性能情報11ページ目に記載の、 -[https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf](https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf) -1マウント・ターゲット1 MiBブロックサイズreadのスループット値を使用しています。 +- **IOR** スループットレンジが同程度の高性能FSSとDenceIO NFSサーバを比較すると、 + - DenceIO NFSサーバのランニングコストは高性能FSSの約3分の1(※4) + - (高性能FSSの測定値が無い状況の中)DenceIO NFSサーバは圧倒的なメタデータ性能を示す +- パフォーマンスがエントリーレベルの標準FSSとブロック・ボリュームNFSサーバを比較すると、 + - ブロック・ボリュームNFSサーバのランニングコストは標準FSSの6割程度(※5)(※6) + - ブロック・ボリュームNFSサーバのスループットは標準FSSの30倍以上 -*2) 以下URLで公開されている **ファイル・ストレージ** の性能情報11ページ目に記載の、 -[https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf](https://docs.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/file-storage-performance-guide.pdf) -1マウント・ターゲット32 KiBブロックサイズreadのIOPS値を使用しています。 +※4)この比較は、高性能FSSの80 TBとDenceIO NFSサーバの40.8 TBの異なる総容量で比較しているため条件が異なりますが、高性能FSSの80 TBは使用するにあたっての最低容量で、DenceIO NFSサーバの40.8 TBは当該ベア・メタル・インスタンスに搭載するNVMe SSDドライブ使用から来る固定容量です。 +※5)総容量15TBのブロック・ボリュームNFSサーバの構成は、価格の大部分を **BM.Optimized3.36** が占めるため、総容量がこれより大きくなると、下表のように標準FSSに対する価格優位性が拡大します。 -*3) **ファイル・ストレージ** と同様、 **VM.Standard2.16** で構築したNFSクライアントから1 MiBブロックサイズreadでfioを使用して計測したスループット値です。 +| 総容量(TB) | 標準FSS
月額定価 | **ブロック・ボリューム** NFSサーバ
月額定価 | +| ------: | ---------------: | ----------------------------: | +| 15 | **697,500** 円 | **401,472** 円 | +| 100 | **4,650,000** 円 | **961,409** 円 | +| 500 | **23,250,000** 円 | **3,596,409** 円 | +| 1,000 | **46,500,000** 円 | **6,587,500** 円 | -*4) **ファイル・ストレージ** と同様、 **VM.Standard2.16** で構築したNFSクライアントから32 KiBブロックサイズreadでfioを使用して計測したIOPS値です。 +※6)標準FSSは、従量制課金のため使用量が15 TBを下回るとそれに応じて金額が安くなりますが、 **ブロック・ボリューム** NFSサーバはその時点の使用量に関わらず定額課金されます。 -*5) 総容量15TBの **ブロック・ボリューム** NFSサーバの構成は、価格の大部分を **BM.Optimized3.36** が占めるため、総容量がこれより大きくなると、下表のように **ファイル・ストレージ** に対する価格優位性が拡大します。 +以上より、性能レンジが高性能・エントリーレベル何れの場合も、コストパフォーマンスを評価指標にファイル共有ストレージを比較すると、ベア・メタル・インスタンスNFSサーバを使用する構築手法が **ファイル・ストレージ** を使用する構築手法より圧倒的に有利であることがわかります。 -| 総容量(TB) | **ファイル・ストレージ**
月額定価 | **ブロック・ボリューム** NFSサーバ
月額定価 | -| ------: | ---------------------: | ----------------------------: | -| 15 | **630,000** 円 | **362,620** 円 | -| 100 | **4,200,000** 円 | **868,370** 円 | -| 500 | **21,000,000** 円 | **3,248,370** 円 | -| 1,000 | **42,000,000** 円 | **6,223,370** 円 | +## 2.2 可用性による比較 -*6) **ファイル・ストレージ** は、従量制課金のため使用量が15 TBを下回るとそれに応じて金額が安くなりますが、 **ブロック・ボリューム** NFSサーバは、その時点の使用量に関わらず定額課金されます。 +本章は、可用性として以下2項目の評価指標を採用します。 -## 2.2 システム構築・運用のしやすさによる比較 +3. ストレージ領域に格納するデータの可用性 +4. ファイル共有ストレージサービスの可用性 -以下の表は、 **ブロック・ボリューム** NFSサーバと **ファイル・ストレージ** の利点・欠点を、システム構築やシステム運用のしやすさという観点で比較しています。 +ここで **ファイル・ストレージ** を使用する標準FSSと高性能FSSは、可用性を評価指標とした場合同じ評価となるため、これらをまとめて3種類の構築手法を比較します。 + +以下の表は、これら3種類の構築手法の可用性観点での利点・欠点を比較しています。 + +| | 利点 | 欠点 | +| :-----------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| 標準FSS
高性能FSS | ・HA化されたマウント・ターゲットによる高いサービス可能性
・ **ファイル・ストレージ** が用意する豊富なバックアップ機能を
使用することで高いデータ保全性を実現可能(※7) | - | +| ブロック・ボリューム
NFSサーバ | ・**ブロック・ボリューム** が **可用性ドメイン** 内に複数レプリカを
持つことによる高いデータ可用性 | ・NFSサーバインスタンスがサービス可用性に対する単一障害点
・データ保全性を高めるためのバックアップに環境構築が必要(※8) | +| DenceIO
NFSサーバ | ・ **Linux software RAID** のRAID10によるデータ可用性 | ・NFSサーバインスタンスがサービス可用性に対する単一障害点
・NFSサーバインスタンスがデータ可用性に対する単一障害点
・NVMe SSDドライブのRAID10による脆弱なデータ可用性
・データ保全性を高めるためのバックアップに環境構築が必要(\*9) | + +※7)スナップショット、クローン、及びレプリケーションが用意されています。これらサービスの詳細は、OCI公式ドキュメントの **[ここ](https://docs.oracle.com/ja-jp/iaas/Content/File/home.htm)** を参照ください。 + +※8)**ブロック・ボリューム** に格納されるファイルのバックアップは、 **ブロック・ボリューム** が用意するバックアップ機能を利用することが出来ず、NFSサーバ上のファイルシステムとしてアクセスしバックアップする必要があります。 この表から、 **ファイル・ストレージ** は **ブロック・ボリューム** NFSサーバに対して、圧倒的にシステム構築やシステム運用が容易であることがわかります。 -| | 利点 | 欠点 | -| -------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| **ファイル・ストレージ** | ・NFSサービス開始までの構築手順が簡単
・ **ファイル・ストレージ** が用意する豊富な
 バックアップ機能を利用可能(\*7)
・ファイルシステムの拡張作業が不要
・メンテナンスフリーのマウント・ターゲット
・HA化されたマウント・ターゲットによる高可能性 | ・マウント・ターゲットあたりのNFSサーバ性能
 は固定 | -| **ブロック・ボリューム**
NFSサーバ | ・ボリューム・パフォーマンスとシェイプの選択
 によるNFSサーバ性能のVertical Scaling
 が可能 | ・NFSサービス開始までの構築手順が煩雑(\*8)
・バックアップのための環境構築が必要(\*9)
・ファイルシステムの拡張作業が煩雑
・NFSサーバのソフトウェアメンテナンスが必要
・NFSサーバインスタンスが単一障害点 | +以上より、可用性を評価指標にファイル共有ストレージを比較すると、 **ファイル・ストレージ** を使用する構築手法がベア・メタル・インスタンスNFSサーバを使用する構築手法より圧倒的にデータ可用性とサービス可用性が高いことがわかります。 + +## 2.3 運用性による比較 + +本章は、運用性としてシステム構築・運用のしやすさを評価指標に採用します。 + +ここで **ファイル・ストレージ** を使用する標準FSSと高性能FSSは、運用性を評価指標とした場合同じ評価となるため、これらをまとめて3種類の構築手法を比較します。 + +以下の表は、これら3種類の構築手法の運用性観点での利点・欠点を比較しています。 -*7) スナップショット、クローン、及びレプリケーションが用意されています。これらサービスの詳細は、OCI公式ドキュメントの **[ここ](https://docs.oracle.com/ja-jp/iaas/Content/File/home.htm)** を参照ください。 +| | 利点 | 欠点 | +| :-----------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| 標準FSS
高性能FSS | ・サービス開始までの構築手順が簡単
・ファイルシステムの容量拡張作業が不要
・メンテナンスフリーのマウント・ターゲット
・マウント・ターゲットのアップグレードによる動的な
NFSサーバの性能向上が可能 | | +| ブロック・ボリューム
NFSサーバ | ・ボリューム・パフォーマンスとシェイプの選択
 によるNFSサーバ性能のVertical Scaling
 が可能 | ・サービス開始までの構築手順が煩雑(※9)
・ファイルシステムの容量拡張作業が煩雑
・ベア・メタル・インスタンスのソフトウェアメンテナンスが必要 | +| DenceIO
NFSサーバ | - | ・サービス開始までの構築手順が煩雑
・ファイルシステムの容量拡張が不可能
・ベア・メタル・インスタンスのソフトウェアメンテナンスが必要 | -*8) この構築作業を自動化する **[スタック](/ocitutorials/hpc/#5-3-スタック)** が **[マーケットプレース](/ocitutorials/hpc/#5-5-マーケットプレイス)** から無料で提供されています。この詳細は、 **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[ブロック・ボリュームでNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** を参照ください。 +※9)この構築作業を自動化する **[スタック](/ocitutorials/hpc/#5-3-スタック)** が **[マーケットプレース](/ocitutorials/hpc/#5-5-マーケットプレイス)** から無料で提供されています。この詳細は、 **[OCI HPCチュートリアル集](/ocitutorials/hpc/#1-oci-hpcチュートリアル集)** の **[ブロック・ボリュームでNFSサーバを構築する](/ocitutorials/hpc/spinup-nfs-server/)** を参照ください。 -*9) **ブロック・ボリューム** に格納されるファイルのバックアップは、 **ブロック・ボリューム** が用意するバックアップ機能を利用することが出来ず、NFSサーバ上のファイルシステムとしてアクセスしバックアップする必要があります。 \ No newline at end of file +以上より、運用性を評価指標にファイル共有ストレージを比較すると、 **ファイル・ストレージ** を使用する構築手法がベア・メタル・インスタンスNFSサーバを使用する構築手法より圧倒的にシステム構築やシステム運用が容易であることがわかります。 \ No newline at end of file diff --git a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram.png b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram.png index e8e4eef2a9..f2990464a2 100644 Binary files a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram.png and b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram.png differ diff --git a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram_nvme.png b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram_nvme.png new file mode 100644 index 0000000000..fc4cc5c6fd Binary files /dev/null and b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/architecture_diagram_nvme.png differ diff --git a/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/raid_configuration.png b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/raid_configuration.png new file mode 100644 index 0000000000..59e412fa4d Binary files /dev/null and b/tutorials/_hpc/tech-knowhow/howto-configure-sharedstorage/raid_configuration.png differ diff --git a/tutorials/_hpc/tech-knowhow/install-openfoam.md b/tutorials/_hpc/tech-knowhow/install-openfoam.md index 8cc4529c6e..5099dbea38 100644 --- a/tutorials/_hpc/tech-knowhow/install-openfoam.md +++ b/tutorials/_hpc/tech-knowhow/install-openfoam.md @@ -829,7 +829,7 @@ srun --cpu-bind=verbose,cores potentialFoam -parallel $decompDict -writephi srun --cpu-bind=verbose,cores checkMesh -parallel $decompDict -writeFields '(nonOrthoAngle)' -constant # Run solver in parallel -srun --cpu-bind=verbose,cores impleFoam -parallel $decompDict +srun --cpu-bind=verbose,cores simpleFoam -parallel $decompDict # Concurrently sync model files on other node NVMe local disk with head node's pdsh_cmd="pdsh -w $child_node_list '$rsync_script $SLURM_JOB_NODELIST $proc_pernode $local_dir'" diff --git a/tutorials/_hpc/tech-knowhow/site-to-site-vpn.md b/tutorials/_hpc/tech-knowhow/site-to-site-vpn.md index 95ec9ddfa3..15de006398 100644 --- a/tutorials/_hpc/tech-knowhow/site-to-site-vpn.md +++ b/tutorials/_hpc/tech-knowhow/site-to-site-vpn.md @@ -15,16 +15,12 @@ table, th, td { } -HPC/機械学習ワークロードをオンプレミスからOCIに移行する際、多くのケースでオンプレミスとOCIを拠点間接続する必要が生じます。 -例えば、オンプレミス側の有償CAEアプリケーション用ライセンスサーバにOCI側の計算ノードからライセンス取得のためにアクセスするケースや、オンプレミス側の端末からOCI側のログインノードにログインしインタラクティブ処理を行うケースです。 -本テクニカルTipsは、 **[サイト間VPN](https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/managingIPsec.htm)** を使用してIPSecのトンネルモードでオンプレミスとOCIを拠点間接続し、OCI側プライベートサブネットに接続する計算ノード相当のインスタンスとオンプレミス側プライベートサブネットに接続するライセンスサーバ相当のインスタンスの疎通を可能とするための手順を解説します。 - **注意 :** 本コンテンツ内の画面ショットは、現在のOCIコンソール画面と異なっている場合があります。 *** # 0. 概要 -**サイト間VPN** は、IPSecのトンネルモードを使用するOCIのマネージドVPN接続サービスで、オンプレミスのネットワークとOCIの **仮想クラウド・ネットワーク** をIP層で拠点間接続するため、以下のような利用形態をセキュアでシームレスに実現することが可能です。 +**[サイト間VPN](https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/managingIPsec.htm)** は、IPSecのトンネルモードを使用するOCIのマネージドVPN接続サービスで、オンプレミスのネットワークとOCIの **仮想クラウド・ネットワーク** をIP層で拠点間接続するため、以下のような利用形態をセキュアでシームレスに実現することが可能です。 1. OCIで稼働する計算ノードでオンプレミスのライセンスサーバから有償CAEアプリケーションのライセンスを取得する 2. オンプレミスの端末からOCIで稼働するログインノードにログインしインタラクティブ処理を行う diff --git a/tutorials/_hpc/tech-knowhow/site-to-site-vpn/connection_type.png b/tutorials/_hpc/tech-knowhow/site-to-site-vpn/connection_type.png index 6e1f5118de..337c3334a1 100644 Binary files a/tutorials/_hpc/tech-knowhow/site-to-site-vpn/connection_type.png and b/tutorials/_hpc/tech-knowhow/site-to-site-vpn/connection_type.png differ