私は独学のプログラマーであり、スケールするシステムの構築に関しては、研究より常識に基づいた特定の設計パラメーターに常に従ってきました。しかし、私のシステムの1つのコンポーネントが必要でないかもしれないことに気がつきました。単一のデータベースサーバー上の複数のデータベースにわたるユーザーデータの共有
一般的に言えば、ユーザーデータをグループに分けて、特定のmysqlサーバーに割り当てます。ロード・バランサの背後にあるコンテンツ・サーバーがリクエストを受け取ると、リクエストのデータ(ユーザーIDなど)を使用して、DynamoDBに格納されたセントラル・テーブルを問い合せることによって、そのユーザー・データが格納されるデータベースを解決します。
ただし、サーバー内のデータベースにもユーザーデータを割り当てます。同様に、すべてのテーブル構造が同じで、各データベースに250人のユーザーを割り当てます。
ロジックはもともと、各ユーザーが2k個のエントリを持つテーブルは、50万個以上の500kエントリで高速に実行されるというロジックでした。しかし、このようにユーザーデータを分割することはまったく意味がないかもしれません。 インデックスはかなり効率的です。データベースには、実際には基本的に同じ速度でデータにアクセスするための内部ロジックがありますか?私はこれを10年間続けてきましたが、これはまったく必要ではないかもしれないことが分かりました。何かご意見は? 1つのデータベースをすべてのテーブルにまとめることはできますか?それとも、サーバー上の100個のデータベースに分散して、いつものやり方でやり続ける必要がありますか?
dynamoDBの話題は、複数のデータベースサーバー間でユーザーデータを共有するためのものです。 500Kと5,000万は、同じサーバー上の100データベースにわたるデータと、そのサーバー上のすべてのデータが1つのデータベースに格納されているデータです。しかし、あなたの答えは、頭の爪です。同じサーバー上の複数のデータベースにわたるシャーディングが、個々のテーブルサイズを減らすことによっていくらかのプラスの影響をもたらすと言うことに基づいています。お返事をありがとうございます! – user643718