Oracle Berkeley DB - ストレージ・レイヤー

Oracle Berkeley DB 11gは、サイズが約1MBの効率的なソフトウェア・ライブラリです。どのようなデータ・ストレージ・ソリューションにも適した基本的なビルディング・ブロックを提供します。 Berkeley DBを既存のソフトウェア・アプリケーションへ組み込むことで、XQueryでアクセス可能なXMLドキュメントとして、Javaオブジェクトの永続グラフとして、またはシンプルなget/put操作やカーソル位置操作でアクセス可能なキー/値ペアのOPAQUE型非構造化データとして、SQLを使用したリレーショナル表に迅速かつ簡単にアプリケーション・データを格納できるようになります。

Oracle Berkeley DBのストレージ・エンジンによって提供される機能については以下で説明します。 構成オプションが用意されており、2つとして同じアプリケーション・シナリオはありません。ご使用のアプリケーションに最適なトレードオフをお客様自身で選択できます。 判断はお客様に委ねられています。

サービス

右矢印 データ・アクセス

Berkeley DBでもっとも一般的に使用されるデータ・アクセスのストレージ・オプションは、B-treeです。 Berkeley DB B-treeは、基本的に、ソートされた順番でキーおよびそのキーに関連する値を格納します。 B-treeの内部ページには、データ・ページを指す、ソートされたキーの一覧が含まれています。そこにデータが格納されます。 Berkeley DB B-treeは、Key/Value APIおよびより高いレベルのすべてのAPI用の基本的なストレージ・メソッドです。 たとえば、XML APIでは、XMLデータにアクセスするXQueryが使用できます。これにより、XMLデータは、アプリケーション定義の索引を自動的に維持するドキュメント・コンテナに格納されます。 このようなドキュメント・コンテナや索引は、実際にはBerkeley DB B-treeであり、基礎データに対して、パフォーマンスが高く、同時実行可能で、信頼性/拡張性が高い索引付きのアクセスが可能です。 さらに、Java Direct Persistence Layer APIを使用しているか、SQL APIを使用しているかにかかわらず、アプリケーション・データはBerkeley DB B-treeに格納されます。 アプリケーションの中にはB-treeが適さないものもあります。 アプリケーションによっては、キュー(FIFOまたはLIFOデータ・アクセスの場合)またはハッシュ表(固有の順序がない大規模なデータセットの場合)の使用を必要とします。 このようなアプリケーションの場合、Berkeley DBでは、Key/Value APIで使用可能な、別のデータ・アクセス・メソッドであるキューおよびハッシュを提供します。

XMLコンテンツはドキュメント・コンテナに格納されています。 Berkeley DBでは、XMLコンテンツ上の任意の索引をサポートしています。また、ドキュメントの必要な部分に効率的にアクセスできるようにXQueryが用意されています。 表、行、索引などのリレーショナル・コンテンツもB-treeです。 Berkeley DBでは、リレーショナル・データ、グラフ・データ、または階層データを格納する際に、これらの索引を使用してBerkeley DBのB-tree内からデータを特定し選択します。

ほとんどのお客様が、B-treeがもっとも効果的で柔軟なアクセス・メソッドであると評価しています。既存のキーの構成を最適化し、それによるパフォーマンスを評価するカスタム比較関数を作成するところから始めることを推奨します。

右矢印 ロック

Oracle Berkeley DBは、高度で詳細な構成が可能なロック・システムを使用してデータへの同時アクセスを管理します。 ロックせずに同時実行のストレージ・システムで一貫性を保つことは不可能です。 同時データ・アクセスまたはトランザクション型のデータ・アクセスが構成されている場合、Berkeley DBでは、すべてのロックが、進行中のさまざまな操作の性質に基づいて自動的に管理されます。 アプリケーション開発者として、ロックは一度構成すると、ほとんどの場合、後は簡単に機能するものです。 ロックを取得し、リリースする独自のプログラムを作成する必要はありません。Berkeley DBがすべて行ってくれます。

マルチバージョン並行性制御(MVCC)は、同時実行性が高く、問題の多いアプリケーションでは特に有用です。 MVCCは、トランザクションに関連するページのスナップショットを保持することによって、リーダーによるライターのブロックを阻止します。 MVCCを使用するアプリケーションは、通常、アカウントに対してキャッシュ・サイズを大きめに構成するか、スナップショットに使用するメモリを増やします。

右矢印 トランザクション、事前書込みロギング、リカバリ

Berkeley DBは、詳細な構成が可能な、フィールド・テストを実施したトランザクションおよびデータベース・リカバリを提供しています。 トランザクションは、原子性、一貫性、独立性、永続性(ACID)の各プロパティを提供します。 事前書込みのトランザクション・ログは、トランザクションによって保護されているすべてのアクション(ファイル・システム操作を含む)に関するUNDO/REDO情報を保持しています。

Berkeley DBを使用すると、アプリケーション・プログラマーは、トランザクション・ベースごとにBerkeley DBのトランザクションの動作を詳細に調整できるようになります。 Berkeley DBは、シリアライズ可能な分離レベル(デフォルト)、読取りがコミットされている分離レベル、読取りがコミットされていない分離レベルをサポートしています。 どのトランザクションに対しても分離レベルを変えられるように選択できます(または、すべてのトランザクションにデフォルトを設定)。 あるトランザクションに実行された読取りが書込みをブロックしないようにするには、スナップショット分離としても知られるマルチバージョン並行性制御(MVCC)を有効化します。

分離のように、アプリケーションの制御下にあるトランザクションの永続性は、トランザクション単位で柔軟に設定できます。 トランザクションがストレージ・メディア、オペレーティング・システム、または単純にアプリケーション・バッファにすべて書き込まれるまで、トランザクションに永続性を与えないよう指定できます。 ストレージ・メディアの場合は、オペレーティング・システムが予期せず停止しても(停電、システム障害など)リカバリが可能です。 オペレーティング・システムの場合は、アプリケーションが終了した後でもデータはオペレーティング・システムのバッファ内にあるため、アプリケーション障害でデータが失われることはありません。 アプリケーション・バッファの場合は、トランザクション・データがログに完全に書き込まれる前にアプリケーション障害またはシステム障害が発生したため、最近のトランザクションがロールバックされる可能性がありますが、それでもデータベースはトランザクションの一貫性を保証します。


ツール

右矢印 Oracle SQL Developer

Oracle SQL Developerは、データベース開発に使用する、無償かつサポート対象のグラフィカル・ツールです。 SQL Developerを使用すると、データベース・オブジェクトの参照、SQL文とSQLスクリプトの実行、スキーマ・オブジェクトの編集およびデバッグを実行できます。 提供されているODBCドライバおよびOracle Database Gateway for ODBC(DG4ODBC)を使用することで、SQLデータベースとしてのOracle Berkeley DB 11gとともにSQL Developerを使用することが可能です。

右矢印 Oracle JDeveloper

Oracle JDeveloperは、無償の統合開発環境で、JavaベースのSOAアプリケーションおよびユーザー・インタフェースの開発を簡素化し、開発ライフ・サイクル全体をサポートします。 JDeveloperは現在、Berkeley DB XMLのサポートも受けられます。 Berkeley DB XMLコンテナの参照、XQuery文の実行、XMLコンテンツの編集を行うことができます。

右矢印 Eclipse

Oracle Berkeley Database 11gは、Eclipse IDEと連携して使用できます。 データベースにJavaオブジェクトを格納するもっとも簡単な方法は、Direct Persistence Layer(DPL)を使用することです。 開発速度を速め、DPL APIを適切に使用するには、Direct Persistence Layer Assistant for Eclipseを使用できます。 このプラグインは、Javaソース・コード内のDPLの注釈の検証を実行します。 Javaソース・コードへの変更を保存するたびに、エバリュエータによって注釈(@Entity@Persistentなど)が分析され、また、IDEによってJavaコンパイル・エラーが報告されるのと同様の方法で、検出可能なエラーや警告が報告されます。 これにより、開発者は開発サイクル内で早期に問題を見つけて、アプリケーションの作成に要する時間を削減できるようになります。

右矢印 SQLiteツール、アドオン、拡張機能

Berkeley DBのSQLサポートは、SQLiteのAPIと互換性があるため、SQLiteで動作するほぼすべてのツール、アドオン、拡張機能、および他のアプリケーション開発ツールは、ツールがBerkeley DBライブラリを使用する限りはBerkeley DBでも機能します。

右矢印 Apache Maven

特にJavaを使用している場合に、再利用を目的として、ついにオブジェクト指向プログラミングが導入されました。 Apache Mavenは、プログラマーに有用なツールで、多数のコンポーネントを組み合わせて単一のソリューションにします。 Oracle Berkeley DB 11gは、Apache Mavenから利用することができるため、複雑なプロジェクトへの統合を容易にします。


プラットフォーム

右矢印 Solaris、Linux、Mac OS/X、BSD

Berkeley DBは、POSIXオペレーティング・システムのインタフェースの標準セットを使用しています。 UNIX系のプラットフォームで有用で、変更の必要はほとんどまたはまったくありません。 Oracle Berkeley DBは、大半のUNIXオペレーティング・システムの標準コンポーネントとして出荷されます。 一般的には、/usr/liblibdb.[so,a]と呼ばれるライブラリがインストールされています。また、/usr/include/db.hにはヘッダー・ファイルがインストールされています。 すでにインストールされているかどうか、システムを確認してください。 大半のUNIXオペレーティング・システムには、自動ソフトウェア・インストーラが用意されており(例:RedHatのRPM、DebianおよびUbuntuシステムのAPT、およびBSD PORTSシステム)、Berkeley DBが自動的にインストールされます。 最新のバージョンをダウンロードし、ソースからライブラリを構築することもできます。 デフォルトのインストール場所は、/usr/local/BerkeleyDB[バージョン]です。 ライブラリを構築すると、どの機能を有効にするかを管理でき、特定のユースケースに対してサービスをカスタマイズすることができます。

右矢印 Microsoft Windows

Microsoft WindowsアプリケーションにOracle Berkeley DB 11gを統合することは簡単です。 ビルトインのBerkeley DBのダイナミック・リンク・ライブラリ(DLL)は、Windowsインストーラ・パッケージに含まれています。 Berkeley DBのソース・コードには、Microsoft Visual Studioを使用したライブラリの構築のためのサポートが含まれています。 Berkeley DBには、.NETランタイムのサポートとC#言語のAPIが含まれています。 そのAPIはすべての共通言語ランタイム(CLR)アプリケーションに利用可能なマネージド・インタフェースです。 C++アプリケーションは、永続Standard Template Library(STL)クラスのサポートが得られます。 Berkeley DBはまた、Microsoft Windows Embedded、Windows CE、Windows Mobileプラットフォームをサポートしており、Windowsアプリケーションが配置される場所には依存しないため、Windowsアプリケーションに理想的なデータベースです。

右矢印 Android、iPhone OS、VxWorks、QNX

Oracle Berkeley DB 11gは、一般消費者向けのモバイル・デバイスに非常に適しています。 一般消費者向けのデバイスのために配置されているアプリケーションは、小型で有用なデータベースが必要です。 Berkeley DBは、このような多くの一般消費者向けのデバイス・プラットフォームをサポートしており、数百万もの携帯電話、モバイル通信インフラストラクチャ、医療監視装置、およびその他の業界固有のモバイル機器向けに配置されています。 これらのデバイスには、機密情報や重要な情報が含まれており、多くの場合バッテリ電源が原因で予期しない時間や都合の悪い時間にデバイスが停止することが考えられます。 このようなモバイル・デバイスには、電源喪失後のデータ整合性、不正アクセスを防ぐデータ暗号化、データ同期、データの圧縮や消費電力の削減のためのフラッシュ・ストレージの最適化という新たな要件が満たされる必要があります。

右矢印 コンパイラ

POSIXライブラリを使用したSun Studio、Intel Pro*C/C++、GNU Compiler Collection(GCC)、Microsoft Visual Studio、Low Level Virtual Machine(LLVM)C-language(Clang)、およびその他多くの標準準拠コンパイラ

右矢印 プラットフォームの移植性

Berkeley DBは、オペレーティング・システム、チップ・セット、コンパイラ間の移植が非常に簡単にできるように設計されています。 この慎重な設計により、Oracle Berkeley DBチームが検証したことがない場合であっても、ターゲット・プラットフォーム環境でほぼ「問題なく動き」ます。 Berkeley DBドキュメントにはポーティング・ガイドが含まれています。別のプラットフォームへのBerkeley DBの移植を希望しているお客様およびパートナーの皆様のお役に立てることができれば大変光栄です。