組み込みデータベースシステムとは、アプリケーションソフトウェアと密接に統合され、スタンドアロンシステムとして提供されるのではなく、アプリケーション内に組み込まれるデータベース管理システム(DBMS)のことです。 [ 1 ]これは、以下を含む幅広い技術カテゴリです。
「組み込み」という用語は、組み込み機器での使用を指す場合にも使われることがあります(上記の定義とは異なります)。しかし、組み込みデータベースシステムのごく一部だけが、通信スイッチや家電製品などのリアルタイム組み込みシステムで使用されています。[ 2 ](組み込み機器で使用できる小型データベースについては、モバイルデータベースを参照してください。)
主要な組み込みデータベース製品には、アルファベット順に以下のものが含まれます。
Advantage Database Server (ADS) は、Sybase 社が開発した組み込みデータベース管理システムです。インデックス付きシーケンシャルアクセス方式 (ISAM) とリレーショナルデータアクセスの両方に対応し、Windows、Linux、Netware など複数のプラットフォームと互換性があります。ロイヤリティフリーのローカルファイルサーバーデータベースとして、またはフル機能のクライアントサーバーシステムとして利用可能です。ADS は拡張性に優れ、管理は不要です。また、.NET Framework (.NET)、Object Pascal ( Delphi )、Visual FoxPro (FoxPro) などのさまざまな統合開発環境 (IDE) に加え、 PHP、Visual Basic (VB)、Visual Objects (VO)、Vulcan、Clipper、Perl、Java 、xHarbourなどのプログラミング言語にも対応しています。
Apache Derbyは、Javaで完全に記述された組み込み型SQLデータベースエンジンです。完全なトランザクション処理に対応し、マルチユーザーアクセスをサポートしており、Apacheライセンスの下で利用可能です。Derbyは現在も活発にメンテナンスされています。また、OracleのJava SE Development Kit(JDK)の一部として、Java DBという名称で配布されています。
Empress Embedded Database は、1979 年に設立された非公開企業である Empress Software, Inc. によって開発されました。これはリレーショナルデータベース管理システムであり、医療システム、ネットワークルーター、原子力発電所の監視システム、衛星管理システムなど、さまざまなアプリケーションに組み込まれています。Empress は、ACID準拠のSQLデータベースエンジンであり、C、C++、Java、JDBC、ODBC、SQL、ADO.NET、およびカーネルレベルのAPI用の API を備えています。これらの API を使用して開発されたアプリケーションは、スタンドアロンモードまたはクライアント/サーバーモードで実行できます。Empress Embedded Database は、Linux、Unix、Microsoft Windows、およびリアルタイムオペレーティングシステムで動作します。
拡張ストレージエンジン(ESE)は、マイクロソフトが開発したISAMデータストレージ技術です。Microsoft Exchange ServerおよびActive Directoryの中核コンポーネントとして機能し、アプリケーションがインデックスアクセスとシーケンシャルアクセスを使用してデータを保存および取得できるようにします。ESEは、Windows VistaのWindowsメールとデスクトップ検索でも、それぞれインデックスとプロパティ情報の保存に使用されています。
McObject LLC がインメモリ組み込みデータベースとしてリリースしたeXtremeDB は、リアルタイム組み込みシステム向けに特別に設計されました。最初の製品には、後に耐障害性アプリケーション向けの eXtremeDB High Availability (HA) が加わりました。eXtremeDB ファミリーには現在、64 ビット版とトランザクション ロギング版、そしてインメモリとオンディスクのデータ ストレージを組み合わせたハイブリッド版の eXtremeDB Fusion が含まれています。2008 年に McObject は、オペレーティングシステムのカーネル内で動作するように設計された組み込み DBMS である eXtremeDB Kernel Mode を発表しました。[ 3 ]
eXtremeDBは、世界中のリアルタイムシステムや組み込みシステムで使用されています。McObjectは、 Java、 Java ME、.NET、.NET Compact Framework、Silverlightに対応したオープンソースのオブジェクト指向組み込みデータベースであるPerstも提供しています。
Firebird Embedded は、リレーショナル データベース エンジンであり、InterBase のオープンソース フォークです。ACID準拠で、トリガーとストアド プロシージャをサポートし、Linux、macOS、Windows で利用可能です。Firebirdの Classic および SuperServer バージョンと同じ機能を備えています。Firebird 2.5 以降では、2 つ以上のスレッドまたはアプリケーションが同時に同じデータベースにアクセスできます。Firebird Embedded は、データベースにアクセスするシングル スレッド クライアントのローカル サーバーとして機能します。たとえば、各ユーザーが別々のスレッドで実行されるため、2 人のユーザーが競合することなく同時に同じデータベースにアクセスできるため、ASP.NET Web アプリケーションが正しく動作します。Firebird Embedded は、標準の Firebird API エントリ ポイントをエクスポートします。SQLite や Access データベースとは異なり、Firebird Embedded データベースは変更なしで完全な Firebird サーバーに移行でき、Linux および macOS で実行され、ASP.NET Mono を完全にサポートするマルチ プラットフォームです。
Firebirdはアプリケーションプロセス内で動作することはできますが、静的リンクできないため、真の意味での組み込みソフトウェアとは言えません。
H2はJavaで記述されたオープンソースのデータベースエンジンです。組み込みモードとサーバーモードの両方をサポートし、クラスタリングにも対応しています。また、Google App Engine環境内で動作可能です。AESまたはXTEAによる暗号化データベースファイルをサポートしています。
H2の開発は2004年5月に開始され、2005年12月14日に初めて公開されました。H2はデュアルライセンスであり、Mozilla Public License(MPL)の修正版、または未修正のEclipse Public License(EPL)1.0のいずれかで利用可能です。
HailDBは、InnoDBストレージエンジンのスタンドアロンかつ組み込み可能な形式です。InnoDBと同じコードベースに基づいているため、高いパフォーマンスとスケーラビリティ、マルチバージョン同時実行制御(MVCC)、行レベルロック、デッドロック検出、フォールトトレランス、自動クラッシュリカバリなど、多くの共通機能を備えています。
HailDBはMySQLとは独立した組み込みエンジンであるため、ネットワーク機能やオブジェクトレベルの権限管理といったサーバーコンポーネントは含まれていません。MySQLサーバーのオーバーヘッドを排除することで、フットプリントが比較的小さく、高いパフォーマンスと並行処理能力を必要とするアプリケーションへの組み込みに最適です。
多くの組み込みデータベースシステムと同様に、HailDBはSQLではなくISAMライクなC APIを介してアクセスされるように設計されていますが、限定的なSQLバリアントもサポートされています。
このプロジェクトは2015年以降、メンテナンスされていません。
HSQLDBは、 BSDライセンスに類似したライセンスを持つオープンソースのリレーショナルデータベース管理システムであり、組み込みアプリケーションと同じJava仮想マシン内で動作します。インメモリおよびディスクベースのさまざまなテーブルモード、Unicode、およびSQL:2016をサポートしています。
InfinityDBは、ソート済みの階層型キーバリューストアです。暗号化版とクライアント/サーバー版が用意されています。トランザクションサポート、データ圧縮機能を備え、単一ファイルで動作するため、導入が容易で管理も最小限に抑えられます。
APIには、ItemSpaceインターフェース、ConcurrentNavigableMapビュー、およびJSONのサポートが含まれます。RemoteItemSpaceコンポーネントは、埋め込みAPI呼び出しを他のデータベースインスタンスにリダイレクトできます。クライアント/サーバー版には、軽量サーブレットサーバー、Webベースの管理ツールとデータベース閲覧ツール、およびPython用のRESTサポートが含まれています。
Informix Dynamic Server (IDS) は、低フットプリント、プログラマビリティ、自律機能などの機能と、高可用性や柔軟なレプリケーションなどのエンタープライズ データベース機能を組み合わせた、エンタープライズ クラスの組み込み型データベース サーバーです。[ 4 ] IDS は、IP 電話通話処理システム、POS アプリケーション、金融取引処理システムなどの組み込みシナリオで使用されます。
InterBaseは、クロスプラットフォーム対応のUnicode対応SQLデータベースであり、ターンキーアプリケーションに組み込むことができます。対称型マルチプロセッシング(SMP)、ディスク上のAES-256暗号化、SQL-92準拠、およびACID特性をサポートしており、Windows、macOS、Linux、Solaris、iOS、およびAndroidプラットフォームで利用可能です。
InterBaseは、中小規模から大規模の企業環境まで幅広く利用されており、マルチユーザー環境やモバイルアプリケーション開発をサポートしています。InterBase Lightはモバイルデバイス向けに設計された無料版で、モバイルアプリケーションに適しています。組織は、変更管理やセキュリティなどの機能に対する要件が高まるにつれて、有料版にアップグレードできます。InterBaseは、防衛、航空宇宙、石油・ガス、製造業など、幅広い業界で採用されています。
Kùzuは、Cypherクエリ言語をサポートする組み込み可能なグラフデータベース管理システムです。大規模グラフの管理とクエリをサポートするために、既存の最先端のストレージ、インデックス作成、クエリ処理技術[ 5 ]を幅広く実装しています。
Kùzu は、バイナリ結合や最悪ケース最適結合などの結合アルゴリズム[ 6 ]、因子分解[ 7 ]、列指向ストレージ層でのベクトル化されたクエリ実行[ 7 ] 、および最新のデータベースシステムで一般的な圧縮と並列化技術を組み合わせることで、そのパフォーマンスを実現しています。Kùzu は、カナダのオンタリオ州ウォータールーに拠点を置くスタートアップ企業 Kùzu Inc. によって開発および保守されており、 MIT ライセンスの下でオープンソースソフトウェアとして利用可能です。
LevelDBは、 GoogleがBigtableストレージ設計をコンパクトに実装した、順序付きキーバリューストアです。C++のネイティブAPIを備えたライブラリとして提供されています。また、ほとんどの機能に対応する公式のC言語ラッパーが含まれており、 Python、PHP、Go、Node.js、Objective Cなどの言語向けにはサードパーティ製のラッパーも利用可能です。
GoogleはLevelDBをNew BSDライセンスの下で配布しています。
Lightning Memory-Mapped Database (LMDB) は、OpenLDAPプロジェクト向けに開発されたメモリマップド型のキーバリューデータベースです。C 言語で記述されており、API はBerkeley DB API をモデルにしていますが、簡略化されています。ライブラリはコンパクトで、通常、x86 オブジェクトコードとして 40 KB 未満にコンパイルされます。
LMDBは、マルチバージョン同時実行制御(MVCC)を備えたB+ツリー、シングルレベルストア、コピーオンライトを実装し、デッドロックのない完全なACIDトランザクションを提供します。高レベルの読み取り同時実行に最適化されており、読み取り側はロックを必要とせず、読み取り側は書き込み側をブロックせず、書き込み側も読み取り側をブロックしないため、複数のスレッドとCPUにわたって読み取りパフォーマンスが線形にスケーリングします。C ++、Erlang、Python用のサードパーティ製ラッパーが利用可能です。LMDBはOpenLDAPパブリックライセンスの下で配布されています。2013年現在、OpenLDAPプロジェクトはLMDBを推奨し、Berkeley DBの使用を非推奨としています。
Mimer SQLは、独自のRDBMS(リレーショナルデータベースサーバー)です。組み込み型でメンテナンス不要のバージョンも提供されており、モジュール設計による省スペース設計、SQL標準への完全対応、Windows、Linux、車載用Linux、Android、QNX、INTEGRITYなどのプラットフォームへの移植といった特長を備えています。
MonetDB/eは、オープンソースのMonetDB SQLカラムストアエンジンの組み込みバージョンです。C、C++、Java(JDBC)、Pythonに対応しており、MPL 2.0に基づくMonetDBライセンスの下で配布されています。前身であるMonetDBLite(R、Python、Java対応)は既にメンテナンスが終了しており、MonetDB/eに置き換えられています。
組み込みMySQLサーバーライブラリは、クライアントプロセスのコンテキスト内で実行されるリンク可能なライブラリとして、標準MySQLサーバーのほとんどの機能を提供します。[ 8 ]初期化後、クライアントは、別のMySQLサーバーと通信する場合と同じC API呼び出しを使用できますが、通信オーバーヘッドが低く、別のデータベースプロセスは必要ありません。
NexusDBは、現在オープンソースとなっているFlashFilerデータベースの後継となる商用データベースです。どちらのデータベースもDelphiアプリケーションに組み込むことができ、完全なデータベース機能を備えたスタンドアロン実行ファイルを作成できます。
ObjectDBは、Java用のオブジェクトデータベースであり、クライアント/サーバーモードと組み込み(プロセス内)モードのどちらでも使用できます。
Oracleの組み込みデータベースはBerkeley DBで、OracleはSleepycat Softwareからこれを買収しました。Berkeley DBはもともとカリフォルニア大学で開発されました。高速なオープンソースの組み込みデータベースであり、LinuxやBSD Unixオペレーティングシステム、Apache Webサーバー、OpenOffice生産性スイートなど、いくつかの有名なオープンソース製品で使用されています。近年、一部のプロジェクトでは、主要なシナリオでのパフォーマンスの向上や、よりシンプルな「少ないほど良い」設計、そしてBerkeley DBのライセンス変更などを理由に、Lightning Memory-Mapped Database(LMDB)の使用に切り替えています。
RocksDBはFacebookがLevelDBのフォークとして作成したものです。特にソリッドステートドライブ(SSD)でのパフォーマンスに重点を置いており、トランザクション、バックアップ、スナップショット、ブルームフィルタ、カラムファミリー、有効期限、カスタムマージ演算子、より調整可能な圧縮、統計情報の収集[ 9 ] 、地理空間インデックスなど、さまざまな機能を追加しています。ArangoDB 、Ceph、CockroachDB、MyRocks、Rocksandra、TiKV、YugabyteDBなど、他のいくつかのデータベースのストレージエンジンとして使用されています。
solid DBは、オンディスク/インメモリ型のハイブリッドリレーショナルデータベースであり、通信機器、ネットワークソフトウェア、その他類似のアプリケーションにおける組み込みシステムデータベースとして広く利用されています。インメモリ技術により、毎秒数万件のトランザクション処理能力とマイクロ秒単位の応答時間を実現しています。高可用性オプションでは、データの同期コピーを2つ保持します。システム障害が発生した場合でも、アプリケーションはデータ損失なく1秒未満でsolidDBへのアクセスを復旧できます。
SQLite は、自己完結型でサーバーレス、設定不要、トランザクション対応の SQL データベース エンジンを提供するソフトウェア ライブラリです。世界で最も広く利用されている SQL データベース エンジンです。ソース コードは主に C 言語で記述されており、パブリック ドメインです。SQLite には、ネイティブ C ライブラリと、データベースを管理するためのシンプルなコマンドライン クライアントの両方が含まれています。Android 、FreeBSD、iOS、macOS、Windows 10など、いくつかのオペレーティングシステムに搭載されており、 Chromiumウェブ ブラウザとその派生ブラウザでも使用されています。[ 10 ]
SQL Server Compact は、Microsoft が提供する組み込みデータベースで、マルチプロセス接続、T-SQL、バックエンド データベースとの同期のための ADO.NET Sync Services、SQL Server とのマージ レプリケーション、LINQ to SQL、LINQ to Entities、ADO.NET などのプログラミング API といった機能を備えています。この製品は、デスクトップとモバイルの両方の Windows プラットフォームで動作します。長期間にわたり、本番環境でソフトウェアとして使用されています。[注 1 ] SQL Server Compact は、何度かブランド名が変更され、SQL CE、SQL Server CE、SQL Server Mobile、SQL Mobile など、さまざまな名前で知られています。