sql >> Database teknologi >  >> RDS >> PostgreSQL

JOIN på applikationsniveau med WHERE og BESTIL AF på N postgresql shards

Normalt opdeles data ved shards på en måde, der gør det muligt overhovedet at undgå JOINS på tværs af servere. Fordi denne operation er svær og dyr. Hvis dit eksempel er hypotetisk, vil jeg anbefale at dividere alle data efter user_id felt eller user_group_id.

For eksempel vil shard A indeholde alle tabeller med information fra brugere, som bruger_id % 3 =0, shard B - hvilket bruger_id % 3 =1, shard C - hvilket bruger_id % 3 =2. Så de fleste nødvendige JOINS vil være inde i et shard. For nogle komplekse cross-server-forespørgsler kan du have fælles NO-SQL-lagring som memcached eller Redis, som vil have kopier af nødvendige data fra alle shards (selvfølgelig er det ikke en fuld kopi af alle tabeller). Sådanne lagerpladser kan nemt replikeres på lige så mange servere, som du har brug for. Sådan fungerer højbelastningsprojekter.



  1. Fejl med en Symfony-forespørgsel:Forventet bogstavelig, fik ''

  2. PHP/mysql:Ranger brugere efter klik

  3. Find ud af ledig plads på tablespace

  4. Sådan ignoreres fejl med psql \copy meta-kommando