sql >> Base de Datos >  >> RDS >> PostgreSQL

A nivel de aplicación JOIN con WHERE y ORDER BY en N fragmentos postgresql

Por lo general, los datos se dividen en fragmentos de una manera que permite evitar JOINS entre servidores. Porque esta operación es difícil y costosa. Si su ejemplo es hipotético, recomendaría dividir todos los datos por el campo user_id o user_group_id.

Por ejemplo, el fragmento A contendrá todas las tablas con información de los usuarios cuyo id_usuario % 3 =0, fragmento B:qué id_usuario % 3 =1, fragmento C:qué id_usuario % 3 =2. Por lo tanto, la mayoría de los JOINS necesarios estarán dentro de un fragmento. Para algunas consultas complejas entre servidores, puede tener un almacenamiento NO-SQL común como Memcached o Redis que tendrá copias de los datos necesarios de todos los fragmentos (por supuesto, no es una copia completa de todas las tablas). Dichos almacenamientos se pueden replicar fácilmente en tantos servidores como necesite. Así es como funcionan los proyectos highload.