NDB
ストレージエンジンは、分散型のシェアードナッシングアーキテクチャーを使用して実装されます。これにより、多くの点で InnoDB
と動作が異なります。 NDB
の操作に慣れていないユーザーにとっては、NDB の持つ分散型の性質によって、トランザクション、外部キー、テーブルの制限、およびその他の特性に関して予期しない動作が発生する可能性があります。 次の表にそれらを示します。
表 23.2 InnoDB ストレージエンジンと NDB ストレージエンジンの違い
機能 |
InnoDB (MySQL 8.0) |
NDB 8.0 |
---|---|---|
MySQL Server のバージョン | 8.0 | 8.0 |
InnoDB のバージョン |
InnoDB 8.0.29 |
InnoDB 8.0.29 |
NDB Cluster バージョン | N/A |
NDB 8.0.23/8.0.23 |
ストレージの制限 | 64TB | 128TB |
外部キー | はい | はい |
トランザクション | すべての標準タイプ | READ COMMITTED |
MVCC | はい | いいえ |
データ圧縮 | はい | いいえ (NDB チェックポイントおよびバックアップファイルは圧縮できます) |
大規模な行のサポート (> 14K) |
VARBINARY 、VARCHAR 、BLOB 、および TEXT カラムでサポートされます |
BLOB および TEXT カラムでのみサポートされます (これらのタイプを使用して非常に大量のデータを格納すると NDB のパフォーマンスが低下する可能性があります) |
レプリケーションのサポート | MySQL レプリケーションを使用した非同期および準同期レプリケーション (MySQL Group Replication) | NDB Cluster 内の自動同期レプリケーション。MySQL レプリケーションを使用した NDB Cluster 間の非同期レプリケーション (準同期レプリケーションはサポートされていません) |
読み取り操作のスケールアウト | はい (MySQL レプリケーション) | はい (NDB Cluster での自動パーティション分割、NDB Cluster レプリケーション) |
書き込み操作のスケールアウト | アプリケーションレベルのパーティション化 (シャーディング) が必要です | はい (NDB Cluster の自動パーティション分割はアプリケーションに対して透過的です) |
高可用性 (HA) | 組込み (InnoDB クラスタから) | はい (99.999% の稼働時間を実現するように設計されています) |
ノードの障害リカバリとフェイルオーバー | MySQL Group Replication から | Automatic (NDB アーキテクチャーの鍵要素) |
ノードの障害リカバリにかかる時間 | 30 秒以上 | 通常は 1 秒未満 |
リアルタイムのパフォーマンス | いいえ | はい |
インメモリーテーブル | いいえ | はい (一部のデータはオプションでディスクに格納できます。インメモリーとディスクの両方のデータストレージは永続的です) |
ストレージエンジンへの NoSQL アクセス | はい | はい (Memcached、Node.js/JavaScript、Java、JPA、C++、HTTP/REST を含む複数の API) |
同時および並列書き込み | はい | 同時書き込みのために最適化された最大 48 個のライター |
競合の検出および解決 (複数のソース) | はい (MySQL Group Replication) | はい |
ハッシュインデックス | いいえ | はい |
オンラインのノード追加 | MySQL Group Replication を使用した読取り/書込みレプリカ | はい (すべてのノードタイプ) |
オンラインのアップグレード | はい (レプリケーションを使用) | はい |
オンラインのスキーマ変更 | はい (MySQL 8.0 の一部として) | はい |