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
© Copyright 2024 Paperzz