MySQLCluster6用のNDBClusterを実装したいと思います。最小200万レコードの非常に巨大なデータ構造に対して実装したいと思います。
NDBクラスターの実装に制限があるかどうかを知りたいです。たとえば、RAMサイズ、データベースの数、またはNDBクラスターのデータベースのサイズ。
MySQLCluster6用のNDBClusterを実装したいと思います。最小200万レコードの非常に巨大なデータ構造に対して実装したいと思います。
NDBクラスターの実装に制限があるかどうかを知りたいです。たとえば、RAMサイズ、データベースの数、またはNDBクラスターのデータベースのサイズ。
200万のデータベース?私はあなたが「列」を意味したと思います。
とにかく、制限について:覚えておくべき最も重要なことの1つは、NDB/MySQLクラスターが汎用データベースではないということです。最も注目すべきは、結合操作だけでなく、サブクエリと範囲操作(現在から1週間前に作成された注文などのクエリ)も、予想よりもかなり遅くなる可能性があることです。これは、データが複数のノードに分散されていることが一因です。いくつかの改善が行われましたが、Joinのパフォーマンスは依然として非常に期待外れです。
一方、多くの(できれば小さな)同時トランザクション(通常は主キーによる単一行の更新/挿入/削除ルックアップ)を処理する必要があり、すべてのデータをメモリに保持するように設計する場合、それは非常に可能性がありますスケーラブルでパフォーマンスの高いソリューション。
なぜクラスターが必要なのかを自問する必要があります。99,999%の可用性が追加されていることを除いて、現在使用している通常のデータベースが必要な場合は、がっかりする可能性があります。確かに、MySQLクラスターは優れた可用性と稼働時間を提供できますが、アプリのワークロードは、クラスターが適しているものにはあまり適していない可能性があります。さらに、別の高可用性ソリューションを使用して、従来のデータベースの稼働時間を増やすことができる場合があります。
ところで-ここにドキュメントによる制限のリストがあります:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html
しかし、あなたが何をするにしても、クラスターを試してみて、それがあなたにとって良いかどうかを確認してください。MySQLクラスターは「MySQL+59」ではありません。試してみるとわかります。
NDBクラスターには、2種類のストレージオプションがあります。
1.メモリストレージ内。2.ディスクストレージ。
メモリデータストレージおよびバージョン7.4(MYSQL 5.6)以降で導入されたNDBは、ディスクストレージのサポートを開始しました。
現在のバージョン7.5(MySQL 5.7)はディスクストレージをサポートしており、この場合、データはディスクに常駐するため、サイズの制約はなく、制限は使用可能なディスクストレージスペースによって異なります。
ディスクストレージ構成-https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-symlinks.html
NDBクラスターのメモリストレージも非常に成熟しており、管理ノードのconfig.iniファイルでメモリ使用量を定義できます。例-DataMemory=3072M IndexMemory = 384M
平均的なテーブル(列に格納されているデータによって異なります)では、合計dbサイズは1GB未満である必要があり、これは簡単に構成できます。
注-私自身の実装では、テーブルの行数が増えるとNDBのパフォーマンスが低下するため、1つのパフォーマンスの課題に直面しました。高負荷の場合、同時実行性の読み取りは、行の数が増えるにつれて低下します。全表スキャンを行わないように注意し、where句の述語を十分に指定してください。適切なパフォーマンスを得るには、クエリパターンに従ってセカンダリインデックスを適切に定義します。セカンダリインデックスを定義すると、メモリ消費量が再び増加するため、それに応じてクエリパターンとメモリリソースを計画します。