昨年、Oracle Autonomous DatabaseにJSON用データベースが提供されました。データベースとしては基本的にOracle Databaseと同じですが、利用価格を下げ、シンプルなアクセスメソッド(SODA)を提供しています。ここではデータベースのインフラとしてAutonomous Transaction Processing (ATP) と JSON データベースがどのように違うのかを確認しました。
JSONデータベースの作成
JSONデータベースの作成はOracle Cloud 「スタート・ガイド」画面から「ATPデータベースの作成」または「ADWデータベースの作成」をクリックし、「ワークロード・タイプの選択」で「JSON」を選択します。
「デプロイメント・タイプの選択」以降のCPU数やストレージ、ADMINユーザーのパスワード等はATP/ADWと同じです。JSON用の設定項目はありません。
ATPとの比較
どちらも1 OCPUを指定して作ったATPとJSONデータベースについて比較しました。
バージョン
バージョン情報はATP/ADW/JSONで違いはありません。Oracle Database 19c (19.5) が採用されています。
SQL> SELECT * FROM v$version;
BANNER BANNER_FULL BANNER_LEGACY CON_ID
----------------------------------------------------------------------- ----------------------------------------------------------------------- ----------------------------------------------------------------------- -----
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 0
Version 19.5.0.0.0
初期化パラメータ
初期化パラメーターは大きく違いません。データベース名やファイル名等を除く違いとしては以下のようになります。JSONデータベースの方がやや大きいインフラになっていることがわかります。ただこれはATPがAlways Free環境であることも関係するかもしれません。OCPUとしては1を指定していますが、PDBから参照できる初期化CPU_COUNTはより大きい値を持っています。Resource Manager等の仕組みでプロセッサ使用量を制限していると思われます。
初期化パラメータ名 | ATP | JSON |
---|---|---|
cluster_database_instances | 2 | 8 |
cpu_count | 2 | 6 |
cpu_min_count | 2 | 6 |
db_recovery_file_dest_size | 21167764M | 123789329M |
db_writer_processes | 11 | 12 |
dml_locks | 264332 | 264440 |
gcs_server_processes | 4 | 5 |
optimizer_capture_sql_quarantine | TRUE | FALSE |
pdb_lockdown | OLTP | JDCS |
resource_manager_cpu_allocation | 92 | 100 |
sessions | 20 | 300 |
shared_pool_reserved_size | 2925946470 | 4617089843 |
transactions | 66083 | 66110 |
undo_tablespace | UNDOTBS1 | UNDO_8 |
上記以外に名前や接続情報に関する違いがみられます。
初期化パラメータ名 | 異なる点 | 備考 |
---|---|---|
audit_file_dest | /u02/app/oracle/admin/{db_name}/adump | |
connection_brokers | ((TYPE=DEDICATED)(BROKERS=1)),((TYPE=EMON)(BROKERS=1)) | スペースの違い |
control_files | +DATA/FEPP1POD/CONTROLFILE/current.{ID}.{ID},+RECO/FEPP1POD/CONTROLFILE/current.{ID}.{ID} | |
core_dump_dest | /u02/app/oracle/diag/rdbms/{db_name}/{instance_name}/cdump | |
db_name | {db_name} | |
db_unique_name | {db_unique_name} | |
dg_broker_config_file1 | /u02/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1{db_name}.dat | |
dg_broker_config_file2 | /u02/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2{db_name}.dat | |
dispatchers | (PROTOCOL=TCP) (SERVICE={db_name}XDB) | |
instance_name | {instance_name} | |
spfile | DATA/{db_name}/PARAMETERFILE/spfile.{ID}.{ID} |
表領域の構成
表領域はATPとJSONデータベースに違いはありません。基本的にはユーザー用表領域としてDATA、DBFS_DATAが提供されている部分も同じです。
その他の表領域についてはUNDO表領域の構成は違いますが他は同じです。
SQL> SELECT TABLESPACE_NAME, BLOCK_SIZE, BIGFILE, EXTENT_MANAGEMENT, ALLOCATION_TYPE, SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES ORDER BY 1;
TABLESPACE_NAME BLOCK_SIZE BIG EXTENT_MAN ALLOCATIO SEGMEN
------------------------------ ---------- --- ---------- --------- ------
DATA 8192 YES LOCAL SYSTEM AUTO
DBFS_DATA 8192 YES LOCAL SYSTEM AUTO
SAMPLESCHEMA 8192 YES LOCAL SYSTEM AUTO
SYSAUX 8192 YES LOCAL SYSTEM AUTO
SYSTEM 8192 YES LOCAL SYSTEM MANUAL
TEMP 8192 YES LOCAL UNIFORM MANUAL
UNDOTBS1 8192 YES LOCAL SYSTEM MANUAL
UNDO_2 8192 YES LOCAL SYSTEM MANUAL
8行が選択されました。
ASM の構成
ASMディスクグループの構成もATPと同じです。DATAとRECOが用意されています。
NAME ALLOCATION_UNIT_SIZE BLOCK_SIZE TYPE TOTAL_MB
------------------------------ -------------------- ---------- ------ ----------
DATA 4194304 4096 HIGH 269033472
RECO 4194304 4096 HIGH 67239936
JSON用データベースのインフラは基本的にはATP/ADWと同じOracle Databaseを使って実装されており、特殊なチューニングは行われていないように見えます。このためSODAの実装や、利用料金の違いはあってもテクノロジーとしては通常のOracle Databaseと考えてよさそうです。Oracle Database 21cではネイティブなJSON型が提供されていることから、今後JSONデータベースとしての特徴が出てくる可能性はあります。