sql >> データベース >  >> RDS >> PostgreSQL

N個のpostgresqlシャードでWHEREおよびORDERBYを使用したアプリケーションレベルのJOIN

    通常、データは、サーバー間のJOINSをまったく回避できる方法でシャードで分割されます。この操作は難しく、費用がかかるためです。例が架空のものである場合は、すべてのデータをuser_idフィールドまたはuser_group_idで分割することをお勧めします。

    たとえば、シャードAには、user_id%3 =0、シャードB-user_id%3 =1、シャードC-user_id%3 =2のユーザーからの情報を含むすべてのテーブルが含まれます。したがって、必要なJOINSのほとんどは1つのシャード内にあります。一部の複雑なクロスサーバークエリでは、memcachedやRedisなどの一般的なNO-SQLストレージがあり、すべてのシャードから必要なデータのコピーがあります(もちろん、すべてのテーブルの完全なコピーではありません)。このようなストレージは、必要な数のサーバーに簡単に複製できます。これが高負荷プロジェクトの仕組みです。



    1. MariaDBとDockerのユースケース、パート1

    2. SQLDeveloperでのSQLステートメントの調整

    3. phpグリッドに入力する400のSELECTクエリ

    4. 存在しない場合にスキーマを作成すると、重複キーエラーが発生します