Oracle DatabaseとIBM Db2はデータベース選定の際によく比較対象・候補になるリレーショナルデータベースです。

Db2は他のデータベースと比べて何が違うのでしょうか。

本記事では最初にDb2の特徴と機能をOracleと比較しつつ解説し、環境構築やコマンド実行を通して使い方にも着目していきたいと思います。

その後IBMとOracleの比較を行い、両企業にどのような違いがあるのか見てみましょう。

ちなみにAndroidではお菓子のコードネームが付いていましたが、最近のDb2にはガリレオやケプラーなどの天文学者の名前が付いています。


Db2とは

IBM Db2(アイビーエム ディービーツー)は1983年からIBMが販売しているRDBMS(Relational Database Management System)です。

IBM DB2・IBM Database 2・IBM UDBなどの旧称による表記ゆれがありますので、検索の際は注意してください。

またDb2関連製品も数多く開発されており、これらを合わせて「IBM Db2 Family」と呼ぶことがあります。

IBM Db2は基幹系のシステム構築を支える重要な基盤です。

メインフレームを使用した大規模なシステムへ採用されることも多く、設計や運用も大規模向けになっています。


Db2の特徴・機能

ここではIBM Db2の特徴や機能をOracle Databaseとの比較を交えながら紹介していきましょう。


アーキテクチャ

Db2ではDb2インスタンス1に対し、複数のデータベースを作成することができます。

このため個々のデータベースごとに設定を指定でき、より独立したデータベース環境を柔軟に構築することが可能です。

一方Oracleインスタンス1に対しては、1データベースのみ作成することができます。

Oracleでデータベースを増やしたい場合は、インスタンスの数を増加させるためのリソースの追加が必要となるでしょう。

このように用語が同じでも構造的に異なるアーキテクチャがあります。

また同じ単位や構造を別の用語で表現することもあり、両データベースを取り扱う際は気を付けなければならないポイントです。


オプティマイザ

データベースにおけるオプティマイザはSQLを最適化するもので、ルール・ベースとコスト・ベースの2種類に大別されます。

Db2のオプティマイザは最初からコスト・ベースでした。ルール・ベースのオプティマイザはありません。

一方Oracleのオプティマイザは昔ルール・ベースでしたが、今はコスト・ベースになっています。

Db2・Oracleだけでなく一般的にコスト・ベースのオプティマイザが主流になりました。


読み取り一貫性

読み取り一貫性とは変更中のデータが参照されたときに変更前のデータを返し、データの整合性を保つ機能のことです。

Db2は当初更新対象のレコードをロックし更新が終わるまで待つ、いわゆる占有ロックの仕組みでした。

しかしバージョンアップによりOracleが以前より実装していた共有ロックの機能が使えるようになりました。

このようにOracleからDb2に取り込まれた特徴・機能も存在します。


料金

IBM Db2とOracle Databaseをライセンスや運用コストなどを含めて比較してみましょう。

するとIBM Db2はOracle Databaseの約2分の1程度の金額になります。

機能やサービス内容は異なるものの、半分近い金額の違いは無視できないのではないでしょうか。

最新の料金の詳細は公式サイトを参照して下さい。


Db2のセットアップ

実際にIBM Db2に触れて使い方を学びましょう。


ibmcom/db2を起動する

IBM公式のイメージが配布されています。少し試したいという方はこちらを試してみると良いでしょう。

以前は「Db2 Developer-C Edition」という名前でしたが、以下の名前およびURLに移動しているようです。

ibmcom_db2 – Docker Hub

詳細はURL先のページに書かれている最新を参照して下さい。

  1. $ docker run -itd –name mydb2 –privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=password -e DBNAME=testdb ibmcom/db2
  2. e91620551bd23a15d31eb6c048b6c19251f1f03454bd5e3fda6bc41a8f40965
  3. $ docker exec -ti mydb2 bash -c “su – db2inst1”
  4. Last login: Sat Apr 11 19:39:06 UTC 2020 on pts/0

「DB2INST1_PASSWORD」をはじめとする様々な構成オプションが用意されています。

例えば「db2inst1」はデフォルトのDB2インスタンス名です。これは「DB2INSTANCE」で特定の名前を指定することもできます。


パスを通す・変数を設定する

db2コマンドはデータベース設定ディレクトリ配下、DB2インスタンス名ディレクトリ配下のsqllib/binが正しいパスです。

  1. $ which db2
  2. /usr/bin/which: no db2 in (ά)
  3. $ export PATH=$PATH:/database/config/db2inst1/sqllib/bin
  4. $ which db2

DB2INSTANCEにDB2インスタンス名設定して下さい。

  1. $ export DB2INSTANCE=db2inst1


Db2の使い方

ここからは具体的な操作方法を見ていきましょう。


db2を対話モードで起動する

「db2」コマンドで対話モードを起動します。「quit」で終了です。

  1. $ db2
  2. (c) Copyright IBM Corporation 1993,2007
  3. Command Line Processor for DB2 Client 11.5.0.0
  4. (中略)
  5. db2 =>quit


db2の使い方

以下のコマンドでデータベースへ接続を行います。

  1. $ db2 connect to testdb user db2inst1 using password
  2. Database Connection Information
  3. Database server = DB2/LINUXX8664 11.5.0.0
  4. SQL authorization ID = DB2INST1
  5. Local database alias = TESTDB

接続を切る場合は以下のコマンドを実行して下さい。

  1. $ db2 terminate
  2. DB20000I The TERMINATE command completed successfully.


IBM Data Studio

IBM Data StudioはA5:SQL Mk-2・SQL WorkbenchなどのようなSQLクライアントです。

データベースの管理やBig SQLの構文サポートなど、Db2向けの機能もいくつか搭載されています。

無料評価版があるので試したい方はそちらをご利用下さい。ダウンロードにはIBMアカウントが必要です。


使えるコマンド

どんなコマンドが使えるかを見ていきましょう。


データベース一覧を表示する

  1. $ db2 list db directory
  2. $ db2 list active databases

上のコマンドは全てのデータベースを、下のコマンドは起動中のデータベースを一覧として表示するコマンドです。


データベースを作成する

もし他のデータベースに接続したままであれば、接続を切ってから以下のコマンドを実行します。

  1. $ db2 create database testsub using codeset UTF-8 territory JP

データベースの作成にはしばらく時間がかかるでしょう。


テーブルを作成する

db2inst1に接続してから、以下のコマンドを実行して下さい。

  1. $ db2 “CREATE TABLE db2inst1.engineers(
  2. id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
  3. name VARCHAR(100) NOT NULL,
  4. PRIMARY KEY (id)
  5. );”

お馴染みのSQLコマンドの実行例でもあります。


テーブル一覧を表示する

  1. $ db2 list tables

engineersテーブルが一覧に表示されている筈です。


IBMとは

ここからは企業としてのIBMやOracleについて解説していきます。

IBMは米国に本社がある企業です。歴史は古く1911年に創立され現在に至ります。

事業内容の一部を見てみましょう。


クラウド・コンピューティング

近年の事業内容の1つがクラウド・コンピューティングであり、データベースや基幹システムのクラウド化です。

Db2 on CloudもDb2をクラウドサービス化したものであり、他のIBMのサービスと連携が取れるようになっています。


コグニティブ・コンピューティング

IBM Watson(アイビーエム ワトソン)」というAIについては聞いたことがあるでしょう。

自然言語処理や機械学習の領域に特に力を入れています。Db2 FamilyもIBM Watsonから利用可能なクラウドインフラです。


IBMの強み

IBMは起業当初タイムカードや計量器、パンチカードなどを製造・販売していた会社でした。

第二次世界大戦を乗り越え、戦後は電子計算機に始まり商用コンピューターからパーソナルコンピューターへと製品が変わっていきます。

そして今最前線でWatsonが活躍しはじめました。

馬車を作り続けるのではなく、次に時代が必要とする名もない技術を形にして提供しているのです。

IBMの強みはこの技術への姿勢にあるといえるのではないでしょうか。


Oracleとは

Oracleも米国に本社がある企業です。1977年に設立されました。


データベース・ミドルウェア

Oracleといえばデータベースというくらい有名です。実際創業から約20年ほどの間、Oracleはデータベースメインでやってきました。

Oracleのデータベースは高い信頼性とセキュリティを有しています。またあらゆるプラットフォームに対応できるシステムです。

最近では自立型データベース「Oracle Autonomous Database」というAI技術を用いた運用業務の一部を自動で行うものも発表されました。


企業買収(M&A)戦略


Oracleは成長戦略にM&A戦略を取っています。必要なノウハウや様々な材を買収を通じて補強・融合し新たな価値を想像してきました。

こうしてOracleは徐々にオンプレミス型のデータベースの提供だけでなく、データベースのクラウド化を行っています。

加えてデータベースと連携可能な各種サービスの開発です。

今やソフトウェアやアプリケーションなどを数多く提供し、総合的なITベンダーとしてのポジションを確率しています。


Oracleとの違い

IBMとOracleは良きライバルともいえる関係です。

IBM Db2とOracle Databaseのみを見れば互いに不足している部分を補い、どんどんサービス内容の差が縮んているように思われます。

しかしIBMはWatson、OracleはAutonomous Databaseというように、得意領域において更にサービスを発展させようとしているようです。

今後互いの専門分野に特化すれば、より明確な違いが出てくることは間違いないでしょう。

歴史的な経緯からもIBMとOracleの事業の発展のさせ方には違いが見られます。

IBMが独自に新しい技術を発明するのに対し、OracleはM&Aで既存の技術を融合し新しいサービスを生み出すのです。

これらの姿勢やスタンスの違いが、製品にも現れているといえるのではないでしょうか。


おわりに

データベースとしてのDb2やOracleについてはご存知の方も多かったと思います。

データベースに焦点を当てると似たような機能ばかりで差がよく分かりません。

しかし他の提供サービスの傾向や企業としての姿勢をよく調べてみると、IBMとOracleには明確な違いがありました。

企業を知ることで今後何が展開されるか、何がしたいと考えて機能をリリースしているかが読めるようになってきます。

この能力は市場の動向や新しい技術を追っていく上で大事なスキルです。

今回はデータベースのみでしたが、他の企業やコミュニティの歴史や姿勢も是非調べてみると良いかもしれません。