Oracle データベースと PSQL v11 を比較する

Oracle データベースと PSQL v11 を比較する
株式会社エージーテック
2014 年 9 月 30 日
免責事項
株式会社エージーテックは本書の使用を、利用者またはその会社に対して「現状のまま」
でのみ許諾するものです。株式会社エージーテックは、いかなる場合にも本書に記載され
た内容に関するその他の一切の保証を、明示的にも黙示的にも行いません。本書の内容は
予告なく変更される場合があります。
商標
© Copyright 2014 AG-TECH Corp. All rights reserved. 本書の全文、一部に関わりなく複
製、複写、配布をすることは、前もって発行者の書面による同意がない限り禁止します。
Oracle と Java は、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国
における登録商標です。
すべての Pervasive ブランド名および製品名は、Pervasive Software Inc. の米国およびそ
の他の国における登録商標または商標です。また、すべての Actian のブランド名は、
Actian Corporation の米国およびその他の国における登録商標または商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Oracle データベース と PSQL v11 を比較する
最終更新:2014 年 9 月 30 日
2
目次
はじめに
4
Oracle Database と PSQL v11 の速度比較
5
Oracle Database と PSQL v11 の関数比較
8
Oracle Database と PSQL v11 のデータ型比較
11
お客様の声
11
まとめ
12
製品に関するお問い合わせ
12
3
はじめに
多くのシステムで Oracle Database が使われていますが、Oracle Database から
PSQL v11 への移行をご検討いただいているお客様からのお問い合わせも増加してい
ます。
Oracle Database は「コスト面」を除けば、高性能なデータベースと言えます。
今、コスト削減の要求が高まる中、
「コストのかからない」データベースを求めてい
るお客様が増えているように感じています。
本書では、Oracle Database と PSQL v11 の速度・関数・データ型の比較を行いま
した。
この資料が "PSQL を選択していただける願いを込めて" お客様の手助けになれば幸
いです。
4
Oracle Database と PSQL v11 の速度比較
PSQL は、他のデータベースと同じように標準 ANSI SQL を用いてデータベースに対し
アクセスすることができます。
しかし、PSQL は一般の SQL インターフェイスより低レベルのオペレーションでデータ
への直接アクセスが可能なインターフェイス(Btrieve API)が用意されています。
クエリ言語を使用してないため、SQL の解釈の処理が不要な NoSQL インターフェイスに
なります。
このように SQL と NoSQL の両方の利点を同時に使用できることが PSQL の他社製品
にはない強みと言えます。
SQL の解釈の処理がなくてアプリケーションとデータの間の最短コード パスのため、
Btrieve API は PSQL データへの最速で最も低いサーバーリソースのアクセス方法です。
今回のテストでは、Visual Studio 2010 の VB.NET プログラムから PSQL v11 と Oracle
12c の SQL インターフェイス(ADO.NET プロバイダー)の速度をインストール時のデ
フォルト設定のままで比べてみました。参考情報として PSQL v11 の NoSQL インタフェ
ース(Btrieve API)で読み込みおよび更新を行った場合の実行結果も掲載しています。
本書では、次のケースで速度の比較を行っています。
1.条件(血液型 = ‘AB 型’)に該当する約 5,000 件を読み込み、グリッドにデータを表示
2.ランダムに 1 件のデータを読み込み、更新を行う(1,000 件の更新時間)
テスト環境
Windows Server 2008 R2
Visual Studio 2010 VB.NET
Oracle 12c Enterprise Edition(12.1.0.1.0)
PSQL v11 Server64 SP3(Build 11.31.036)
使用データベース
データベースは、55,000 件のデータを使用
レコード長 : 348 バイト(PSQL v11)
323 バイト(Oracle)
※データ型が異なるため、レコード長が異なっています。
5
<Oracle の テーブル生成 SQL 文>
CREATE TABLE "個人情報一覧表"(
"ID" NUMBER(9),
"名前" VARCHAR(30),
"ふりがな" VARCHAR(30),
"アドレス" VARCHAR(80),
"性別" VARCHAR(2),
"年齢" VARCHAR(3),
"誕生日" VARCHAR(10),
"血液型" VARCHAR(4),
"都道府県" VARCHAR(12),
"電話番号" VARCHAR(20),
"携帯" VARCHAR(20),
"住宅" VARCHAR(20),
"備考" VARCHAR(80),
"数" NUMBER(9),
constraint pk_id primary key ("ID"));
CREATE INDEX "key1" ON "個人情報一覧表"("アドレス");
CREATE INDEX "key2" ON "個人情報一覧表"("電話番号");
CREATE INDEX "key3" ON "個人情報一覧表"("血液型");
<PSQL のテーブル生成 SQL 文>
CREATE TABLE "個人情報一覧表"(
"ID" IDENTITY DEFAULT '0',
"名前" VARCHAR(30),
"ふりがな" VARCHAR(30),
"アドレス" VARCHAR(80),
"性別" VARCHAR(2),
"年齢" VARCHAR(3),
"誕生日" VARCHAR(10),
"血液型" VARCHAR(4),
"都道府県" VARCHAR(12),
"電話番号" VARCHAR(20),
"携帯" VARCHAR(20),
"住宅" VARCHAR(20),
"備考" VARCHAR(80),
6
"数" BIGINT,
UNIQUE ("ID"));
CREATE INDEX "key1" ON "個人情報一覧表"("アドレス");
CREATE INDEX "key2" ON "個人情報一覧表"("電話番号");
CREATE INDEX "key3" ON "個人情報一覧表"("血液型");
使用するインターフェイス
Oracle : Oracle Data Provider for .NET
PSQL v11 (SQL) : Pervasive PSQL ADO.NET データ プロバイダー
PSQL v11 (Btrieve API) : Btrieve Classes for .NET
※サンプルプログラム及びデータ(csv ファイル)が次の URL からダウンロードでき
ます。
http://www.agtech.co.jp/AGBP_Online/download/sample.zip
比較結果
約 5,000 件の読み込み
ランダムに読み込み/更新
Oracle
4.0s
41s
PSQL v11(SQL)
2.3s
32s
PSQL v11(Btrieve API)
1.1s
6.7s
※Btrieve API は読み込みのみで計測
7
Oracle Database と PSQL v11 の関数比較
Oracle Database と PSQL v11 で対応している関数を比較しています。
関数
Oracle
PSQL
絶対値
ABS
ABS
逆余弦
ACOS
ACOS
逆正弦
ASIN
ASIN
n の逆正接
ATAN
ATAN
n と m の逆正接
ATAN2
ATN2
最小の整数 >= 値
CEIL
CEILING
余弦
COS
COS
双曲余弦
COSH
COT
指数値
EXP
EXP
最大の整数 <= 値
FLOOR
FLOOR
自然対数
LN
LOG
任意の数を底とする対数
LOG(N)
--
10 を底とする対数
LOG(10)
LOG10
モジュロ(剰余)
MOD
MOD
べき乗
POWER
POWER
乱数
DBMS_RANDOM パッケージ使用
RAND
丸め
ROUND
ROUND
数の符号
SIGN
SIGN
正弦
SIN
SIN
双曲正弦
SINH
--
平方根
SQRT
SQRT
正接
TAN
TAN
双曲正接
TANH
--
切捨て
TRUNC
TRUNCATE
並び中の最大値
GREATEST
--
並び中の最小値
LEAST
--
NULL なら数値を変換
NVL
ISNULL
文字から ASCII
ASCII
ASCII
文字の連結
CONCAT
CONCAT
ASCII から文字
CHR
CHAR
8
関数
Oracle
PSQL
INSTR
LOCATE
文字を小文字に変換
LOWER
LOWER
文字を大文字に変換
UPPER
UPPER
文字列の左側の桁の埋込み
LPAD
先行する空白の除去
LTRIM
LTRIM
後続する空白の除去
RTRIM
RTRIM
文字列中のパターンの開始位置
INSTR
LOCATE
文字列を複数回反する
RPAD
REPLICATE
文字列の音声表現
SOUNDEX
SOUNDEX
反復する空白からなる文字列
RPAD
SPACE
TO_CHAR
CONVERT
部分文字列
SUBSTR
SUBSTRING
文字の置き換え
REPLACE
REPLACE
INITCAP
--
文字列の変換
TRANSLATE
--
文字列の長さ
LENGTH
LENGTH
並び中で長さが最大の文字列
GREATEST
--
並び中で長さが最小の文字列
LEAST
--
文字列が NULL なら変換
NVL
ISNULL
文字列中での文字の開始位置
(左からの)を戻す
数値データから変換された文字
データ
文字列中の各ワードの先頭文字
を大文字にする
日付の加算
日付の減算
(日付列 +/- 値)または
ADD_MONTHS
(日付列 +/- 値)または
MONTHS_BETWEEN
関数を組み合わ
せて対応
DATEADD
DATEADD
現在の日付と時刻
SYSDATE
NOW( )
月の最後の日
LAST_DAY
--
時間帯の変換
NEW_TIME
--
日付以後の最初の平日
NEXT_DAY
--
日付の文字列表現
TO_CHAR
--
日付の整数表現
TO_NUMBER(TO_CHAR))
YEAR、MONTH、
DAY
9
関数
Oracle
PSQL
日付の丸め
ROUND
--
日付の切捨て
TRUNC
--
文字列から日付
TO_DATE
CONVERT
NULL なら日付を変換
NVL
ISNULL
数値から文字
TO_CHAR
CONVERT
文字から数値
TO_NUMBER
CONVERT
日付から文字
TO_CHAR
CONVERT
文字から日付
TO_DATE
CONVERT
16 進から 2 進
HEXTORAW
--
2 進から 16 進
RAWTOHEX
--
平均
AVG
AVG
カウント
COUNT
COUNT
最大値
MAX
MAX
最小値
MIN
MIN
標準偏差
STDDEV
--
合計
SUM
SUM
分散
VARIANCE
--
NULL でない最初の式を戻す
DECODE
--
現在のシーケンス値
CURRVAL
--
次のシーケンス値
NEXTVAL
--
exp1 = exp2 なら、NULL を戻す
DECODE
NULLIF
ユーザーのログイン ID 番号
UID
--
ユーザーのログイン名
USER
USER( )
UID
--
ユーザーのデータベース名
USER
--
現在のユーザー
CURRENT_USER
USER( )
ユーザー環境(監査記録)
USERENV
--
CONNECT BY 句のレベル
LEVEL
--
ユーザーのデータベース ID 番
号
10
Oracle Database と PSQL v11 のデータ型比較
Oracle Database と PSQL v11 がサポートしているデータ型の対応です。
Oracle
PSQL
備考
VARCHAR2
VARCHAR
VARCHAR
VARCHAR
NCHAR
N/A ※1
LONGVARBINARY で代用
NVARCHAR2
N/A ※1
LONGVARBINARY で代用
CLOB
LONGVARCHAR
最大 2GByte
NCLOB
LONGVARBINARY
最大 2GByte
NUMBER(p[,s])
NUMERIC
BINARY_FLOAT
FLOAT
BINARY_DOUBLE
DOUBLE
DATE
TIMESTAMP
TIMESTAMP
TIMESTAMP
BFILE
N/A
RAW
LONGVARBINARY
最大 2GByte
※1 PSQL v12 でサポート予定
お客様の声
Oracle Database から PSQL Vx Server 11 へ移行動作検証を実施されたお客様の声を紹介
します。
・いくつかの非互換はあったが、非互換点と対応方法を明確化して、一括して修正する
ことで容易に対応できた。
・一般的な処理では特に性能差は出なかった。
お客様は、次の非互換点を挙げられています。
① SQL の文法

+で外部結合が記述できない

|でバーティカルパスが記述できない

日付型のリテラルの表現が異なる

日付関数に違いがある
② 機能
11

255 バイトを超えるキー

テーブル削除時の CASCADE オプション
まとめ
Oracle Database と PSQL v11 では、SQL 文、データ型で非互換な部分がありますが、
他のデータ型で対応が可能です。
チューニングの度合いにもよりますが、中小規模のシステムでは速度の面でも遜色がない
といえます。
PSQL v11 は、管理が簡単でサポートやサービスパック、開発時のサポートも無償で利用
できることから TCO に優れたデータベースです。
長年の実績もあり、低コスト・低リスクのデータベース製品としてご検討いただければ幸
いです。
評価版をご利用いただけますので、下記 WEB ページよりお申し込みの上、ご検証くださ
い。
評価期間中も無償でサポートをご提供します。
http://www.agtech.co.jp/download/trial/pervasive/psqlv11.html
製品に関するお問い合わせ
• 製品情報
– http://www.agtech.co.jp/products/pervasive/psql/v11/
– http://www.agtech.co.jp/products/pervasive/psql/vx11/
– http://www.agtech.co.jp/products/btrieveclasses/
• PSQL 相談窓口 【移行/新規導入】
– http://www.agtech.co.jp/products/consulting/psql11_free.html
• 株式会社エージーテック カスタマーセンター
E-Mail [email protected]
TEL 03-3293-5283 (月~金 10:00-12:00、13:00-17:00 )
FAX 03-3293-5270
12