Comparison of database features¶
移行の実現可能性を評価するには、次の表を参照して、移行する要素がOracleからEDB Postgres Advanced Serverへの移行でどのように処理されるかを理解してください。
テーブルの凡例¶
表では、次の単語または記号を使用して互換性を示します。
はい/いいえ機能または特性がデータベースでサポートされているかどうかを示します。
✓ —この機能はOracleと互換性のある方法で動作するため、既存のOracleスキル、プログラムコード、またはデータを引き続き使用または移行できます。
テーブルとパーティショニング¶
データベース内の構造の範囲と、これらの構造を編成する際にDBAがどの程度の柔軟性を持っているかは、パフォーマンスだけでなく、メンテナンスやその他の操作要件に影響を与える可能性があります。たとえば、データベースをパーティション化する機能により、パフォーマンスが向上します。データを個別の構造に編成し、インフラストラクチャ全体に分散すると、管理性、可用性、および負荷分散も向上します。マテリアライズドビューを使用すると、DBAは、低速でリソースを大量に消費するランタイムクエリ、複雑な結合、または時間のかかるデータのスキャンを、事前結合、事前ソート、および保存された結果からの単純で高速な読み取りに置き換えることができます。
Oracle Enterprise |
EDB Postgres Advanced Server |
Notes |
|---|---|---|
Temporary tables |
Partial |
Postgresではグローバル一時テーブルはサポートされていません。 |
Views |
Yes |
該当なし |
Materialized views |
Yes |
|
Partitioning |
Yes ✓ |
該当なし |
Partition by range |
Yes ✓ |
該当なし |
Partition by hash |
Yes ✓ |
該当なし |
Partition by list |
Yes ✓ |
該当なし |
Subpartitioning |
Yes ✓ |
該当なし |
Interval partitioning |
Yes ✓ |
該当なし |
Partitioned indexes |
No |
該当なし |
ANSI constraints |
Yes |
該当なし |
Tablespaces |
Yes |
OracleとPostgresでは、テーブル、インデックス、およびその他のデータベースファイルを整理および指定するためにテーブルスペースが使用されます。ただし、Oracleとは異なり、Postgresでは、テーブルスペースは自動生成されたテーブル、インデックス、およびその他のデータベースファイルが保存されるディレクトリです。 |
Index organized tables |
No |
Postgresでは、インデックスでテーブルをクラスター化できるため、事前に並べ替えられた構造からデータを読み取るときに同様のパフォーマンスが向上します。 |
Sequences |
Yes ✓ |
|
データ型¶
データ型は、DBMSがシステムで情報を定義、実装、および使用する方法を提供し、複数のデータ型が使用されている場合にデータベースによってデータが解釈される方法に制約を設定します。 EDB Postgres Advanced ServerはOracleデータ型との強力な互換性があり、拡張性が高いため、一般的になった新しい新しいデータ型とワークロードをすばやくサポートできます。
Data types |
Oracle Enterprise |
EDB Postgres Advanced Server |
|---|---|---|
Type system |
Static + dynamic (through ANYDATA) |
Static integer NUMBER NUMBER ✓, DEC , NUMERIC, SMALLINT (16-bit), INT, BINARY_INTEGER, PLS_INTEGER, INTEGER (32-bit), BIGINT (64 bit) |
Floating point |
BINARY_FLOAT, BINARY_DOUBLE |
BINARY_FLOAT ✓, BINARY_DOUBLE ✓, FLOAT, REAL (32-bit), DOUBLE PRECISION (64-bit) |
Decimal |
NUMBER |
NUMBER ✓, DEC, DECIMAL, NUMERIC |
String |
CHAR, VARCHAR2, CLOB, NCLOB, NVARCHAR2, NCHAR, LONG (deprecated) |
CHAR ✓, VARCHAR ✓, CLOB ✓, NCLOB ✓, NVARCHAR2 ✓, NCHAR, CHARACTER, TEXT, CHAR, VARYING, CHARACTER VARYING, VARCHAR |
Binary |
BLOB, RAW, LONG RAW (deprecated), BFILE |
BLOB ✓, RAW ✓, LONG RAW ✓, BYTEA (no compatible type for BFILE) |
Date/time |
DATE, TIMESTAMP (with/without TIMEZONE), INTERVAL |
DATE ✓ TIMESTAMP (with/without TIMEZONE), INTERVAL ✓, TIME (with/without TIMEZONE) |
Boolean |
Not Available |
BOOLEAN |
ROWID |
ROWID |
ROWID |
XMLTYPE |
XMLTYPE |
XMLTYPE |
Key-value |
Requires NSWLDB which is a separate database program |
Yes, is integrated into the core database |
JSON |
Use VARCHAR2, CLOB, and BLOB with is_json check constraint. |
JSON and fast binary JSONB with 58 JSON operators, functions and relational json converters |
Spatial / Geospatial |
Yes |
Yes |
Other |
IMAGE, AUDIO, VIDEO, DICOM |
ENUM, POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE, CIDR, INET, MACADDR, BIT, UUID, XML, arrays, composites, ranges, custom |
Data domains |
Yes |
Yes |
インデックス¶
サポートされているさまざまなデータ型と、それらのデータ型を使用する新しいワークロードに対して最適なパフォーマンスを提供するには、データベースがさまざまなインデックスもサポートする必要があります。 Postgresはこの点でややユニークです。特に、新しいデータ型に特化したインデックスを簡単に開発できるGiSTインデックスです。
Indexes |
Oracle Enterprise |
EDB Postgres Advanced Server |
Notes |
|---|---|---|---|
B-Tree |
Yes |
Yes |
該当なし |
Hash |
Yes |
Yes |
該当なし |
Expressions |
Yes |
Yes |
該当なし |
Partial |
Yes |
Yes |
該当なし |
Reverse |
Yes |
No |
Postgresでは、機能インデックスを使用してフィールドの順序を逆にすることができます。 |
Bitmap |
Yes |
No |
ユースケースによっては、 BRINインデックスの使用が適している場合があります。 |
Block Range Index |
Yes |
Yes |
該当なし |
GiST <br/> Easy creation of specialized indexes |
No |
Yes |
該当なし |
GIN <br/> Custom inverted indexes |
No |
No |
該当なし |
K-nearest-neighbor |
Yes |
No |
パッケージDMBS_DATA_MININGおよびSpatialオプションを使用してOracleで使用できます。 |
Full-text search |
Yes |
Yes |
該当なし |
Spatial |
Yes |
Yes |
無料のPostGIS拡張機能を使用してPostgresで利用できます。 |
SQL機能¶
EDB Postgres Advanced Serverは、ANSI- SQL:2008標準に厳密に準拠しています。また、トランザクションDDLもあり、テーブルの作成など、 DDLへの大規模な変更でもバックアウトできます。データベースまたは表領域の追加/削除から回復することはできませんが、他のすべてのカタログ操作は元に戻すことができます。この機能は、スキーマのアップグレードなどの複雑な作業を行うときの保護によく使用されます。このような変更をすべてトランザクションブロックに入れると、すべてがアトミックに適用されるか、まったく適用されないようにすることができます。これにより、スキーマ変更の誤字やその他のエラーによってデータベースが破損する可能性が低下します。これは、間違いによりリレーショナルキーが破壊される可能性のある複数の関連テーブルを変更する場合に特に重要です。
SQL capabilities |
Oracle Enterprise |
EDB Postgres Advanced Server |
|---|---|---|
Union |
Yes |
Yes ✓ |
Intersect |
Yes |
Yes ✓ |
Except |
Yes |
Yes ✓ |
Inner Joins |
Yes |
Yes ✓ |
Outer Joins |
Yes |
Yes ✓ |
Inner Selects |
Yes |
Yes ✓ |
Merge Joins |
Yes |
Yes ✓ |
Common Table Expressions |
Yes |
Yes |
Windowing Functions |
Yes |
Yes |
Parallel Query |
Yes |
Yes |
Query Hints |
Yes |
Yes ✓ |
Transactional DDL |
No |
Yes |
Alter Session |
Yes |
Yes |
Dynamic SQL |
Yes |
Yes |
SQL拡張機能¶
Oracleには、Oracleユーザーに人気のSQL拡張機能が多数あります。 SQL言語の標準ではありませんが、DBAと開発者にユーティリティと利便性を提供します。 EDB Postgres Advanced Serverは、EDBの顧客が最も頻繁に求めるものをサポートしています。
Oracle Enterprise extension |
EDB Postgres Advanced Server |
|---|---|
DUAL |
Yes ✓ |
DECODE |
Yes ✓ |
ROWNUM |
Yes ✓ |
SYSDATE |
Yes ✓ |
SYSTIMESTAMP |
Yes ✓ |
NVL, NVL2 |
Yes ✓ |
(+) Syntax for Outer Joins |
Yes ✓ |