データベースアダプター
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB は、アプリケーションが特定のデータベース製品に縛られることなく、さまざまなデータベース間で ACID トランザクションを実行できるデータベース非依存の抽象化レイヤーを提供します。これを実現するために、ScalarDB は統合されたデータモデルを各サポートされているデータベースのネイティブ構成に変換するデータベースアダプターを使用します。
このドキュメントでは、各アダプターが ScalarDB の論理データモデル (名前空間、テーブル、パーティションキー、クラスタリングキー、カラム) を基盤となるデータベースにどのようにマッピングし、各アダプターにどのような制限が適用されるかを説明します。
Consensus Commit をトランザクションプロトコルとして使用する場合、ScalarDB は基盤となるデータベースの各テーブルにメタデータカラムを追加します。これらのカラムは、アダプターではなくトランザクションプロトコルによって管理されます。詳細については、Consensus Commit を参照してください。
ScalarDB の論理データモデルについては、データモデリングを参照してください。サポートされているデータベースのバージョンについては、要件を参照してください。各データベースの設定ガイダンスについては、データベース設定を参照してください。
JDBC アダプター
JDBC アダプターは、JDBC 接続を通じてリレーショナルデータベースをサポートします。以下のデータベースがサポートされています: MySQL、MariaDB、TiDB、PostgreSQL、YugabyteDB、AlloyDB、Amazon Aurora (MySQL 互換および PostgreSQL 互換)、Oracle Database、SQL Server、IBM Db2、SQLite です。
MariaDB、TiDB、Amazon Aurora MySQL 互換エデ ィションは、MySQL と同じマッピングに従います。YugabyteDB、AlloyDB、Amazon Aurora PostgreSQL 互換エディションは、PostgreSQL と同じマッピングに従います。
名前空間とテーブルのマッピング
ScalarDB 名前空間がネイティブデータベース構成にどのようにマッピングされるかは、RDBMS によって異なります。以下の表は、サポートされている各データベースのマッピングを要約しています。
| RDBMS | ScalarDB 名前空間のマッピング先 | 備考 |
|---|---|---|
| MySQL、MariaDB、TiDB | データベース | MySQL では、データベースとスキーマは同義語です。 |
| PostgreSQL、YugabyteDB、AlloyDB | スキーマ | 接続されたデータベース内に作成されます。 |
| Oracle Database | スキーマ (ユーザー) | Oracle では、ユーザーを作成すると同時に同じ名前のスキーマが自動的に作成されます。ScalarDB は各名前空間に対して専用のユーザーを作成し、テーブルは対応するスキーマに格納されます。 |
| SQL Server | スキーマ | 接続されたデータベース内に作成されます。 |
| IBM Db2 | スキーマ | 接続されたデータベース内に作成されます。 |
| SQLite | テーブル名プレフィックス | SQLite は単一ファイルデータベースであるため、名前空間は $ セパレーターを使用してテ ーブル名にプレフィックスとして付加されます (例: my_namespace$my_table)。 |
ScalarDB テーブル名は、データベーステーブル名に直接マッピングされます (SQLite は上記で説明したプレフィックス形式を使用する例外)。
SQLite の場合、ScalarDB がセパレーターとして $ 文字を使用するため、名前空間名およびテーブル名には $ 文字を含めることはできません。
キーとインデックスのマッピング
ScalarDB パーティションキーカラムとクラスタリングキーカラムを合わせて、基盤となるデータベーステーブルのプライマリキーを形成します。ScalarDB セカンダリインデックスは、標準的なデータベースインデックスとして作成されます。