グーグルで検索してみたら、次のことがわかりました。
メモMySQL ドキュメント:
MySQL Cluster は、ノード間でテーブルを自動的にシャード (パーティション) し、低コストの汎用ハードウェア上でデータベースを水平方向に拡張して、SQL からアクセスすることも、NoSQL API 経由で直接アクセスすることもできる、読み取りと書き込みを集中的に行うワークロードに対応できるようにします。
リレーショナル データベースは水平スケーリングできますか? 何らかの形で NoSQL データベースに基づくものになるのでしょうか?
現実世界での例を持っている人はいますか?
このようなデータベースで SQL リクエストやトランザクションなどを管理するにはどうすればよいでしょうか?
ベストアンサー1
可能ですが、メンテナンスに多大な労力がかかります。説明 -
データの垂直スケーリング(SQL データベースの正規化と同義)スペースの冗長性を減らすために、データを列ごとに複数のテーブルに分割することを指します。ユーザーテーブルの例 -
データの水平スケーリング(シャーディングと同義)データの取得にかかる時間を短縮するために、行ごとに複数のテーブルに分割することを指します。ユーザーテーブルの例 -
ここで注目すべき重要な点はご覧のとおり、SQL データベースのテーブルは、関連するデータの複数のテーブルに正規化されています。このようなテーブルのデータを複数のマシンに分割するには、関連する正規化されたデータをそれに応じて分割する必要があり、その結果、メンテナンスの労力が増加します。上記の SQL データベースの例のように、
注文テーブルと1対多の関係にある顧客テーブル
顧客データの一部の行を他のマシンに移動する場合 (シャーディングと呼ばれます)、関連する注文データも同じマシンに移動する必要がありますが、関連するテーブルが複数ある場合は面倒な作業になります。
NOSQL データベースはフラット テーブル構造 (データは正規化された形式ではなく集約された形式で保存される) に従うため、シャーディングすると便利です。