Vous pouvez faire plusieurs bases de données dans Rails, chaque modèle peut avoir une connexion séparée si vous voulez, cela fait partie de la fonctionnalité de base, mais cela ne va pas être un moyen très efficace d'échelle. Il est généralement préférable de concentrer les efforts sur l'optimisation de la pile de la base de données en ajustant les paramètres, en cluster, en répliquant ou en appliquant une mise en cache plus rigoureuse dans l'application elle-même.
Le fractionnement des tables à travers les bases de données ne va pas vous coûter beaucoup d'argent. Une approche plus moderne consiste à diviser chaque table en plusieurs instances distinctes, mais pour y parvenir, il faut à la fois une préparation importante et une très bonne compréhension de l'architecture de la base de données. Puisque vous pouvez contrôler la taille de chaque fragment, vous pouvez le mettre à l'échelle sans limitation à cet égard.
Gardez à l'esprit que Rails est livré avec ActiveRecord comme packages relation objet Mapper standard (ORM), mais il y a deux autres prêts à la production qui offrent des caractéristiques différentes: DataMapper et Sequel
Dans mon expérience avec le développement à grande échelle Lorsque vous utilisez une configuration mal configurée, un équipement sous-alimenté ou la structure de votre table n'est pas suffisamment indexée ou dénormalisée. Ceci est commun à toutes les applications supportées par une base de données et n'est pas propre à Rails ou Django, donc votre choix de plateforme n'est vraiment pas pertinent ici. La plupart des gains de performances dans une application Rails proviennent de la normalisation des données, de l'utilisation de Rails.cache
sauvegardée par memcache et du passage de chargements basés sur des modèles vers des requêtes directes si nécessaire pour des raisons de performances. Rails peut évoluer très bien sur une seule instance de base de données avec rien de particulièrement exotique en termes de techniques, juste une application complète des principes d'optimisation de base.