2010-11-12 6 views
1

Lors de la création d'un produit Saas, la base de données est le plus gros problème en matière de mise à l'échelle. D'après mes recherches, il semble que Django offre une méthode plus intégrée pour partitionner verticalement la base de données.Est-il plus facile de faire évoluer la base de données avec Rails ou Django?

Rails a quelques gemmes que vous pouvez utiliser, mais ce n'est pas quelque chose qui est livré avec le framework Rails et vous êtes vraiment à la merci du développeur qui l'a publié (et peut ne pas le tenir à jour, etc.)

En termes de partitionnement vertical, est-ce que mon observation correcte est que Django est plus robuste dans ce domaine?

Multi-dbs utilisant django: http://docs.djangoproject.com/en/dev/topics/db/multi-db/

Répondre

3

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.

Questions connexes