2011-01-04 5 views
2

Je suis actuellement en train de tester les eaux avec des mongoïdes et j'ai déjà commencé dans un magasin de commerce électronique. Maintenant, bien sûr, mongoid n'a pas de transactions, donc je voudrais idéalement utiliser mongoid pour la plupart de l'application, y compris l'authentification, l'autorisation, l'information produit, etc.Comment utiliser une application rdbms et mongodb dans les rails?

Cependant, l'absence de transactions nécessite un retour à un rdbms. Le rdbms serait utilisé uniquement pour enregistrer les transactions financières. Est-ce possible dans les rails et est-ce que quelqu'un l'a fait? J'ai une expérience limitée avec les rails en général mais j'imagine avoir la partie sécurisée montée comme un moteur et les URL délimitées sous secure.myapp.com ou myapp.com/secure/ et l'utilisateur sera redirigé vers le ssl pendant que rack prend soin de choses comme des sessions partagées.

Est-ce que cela fonctionnerait? Ou est-ce que quelqu'un a trouvé une meilleure façon de mettre en œuvre cela?

Répondre

1

Il est possible de mélanger mongoDB et un RDMS traditionnel, mais vous devrez peut-être effectuer un codage supplémentaire de votre part si vous voulez que les objets ActiveRecord communiquent avec les objets MongoDB, car les ORM sont différents. Gardez à l'esprit que s'il est vrai que MongoDB ne supporte pas les transactions sur plusieurs documents, il supporte les mises à jour atomiques 'transactionnelles' - ce qui signifie que si toutes les données que vous mettez à jour sont contenues dans un seul document, vous ne devez pas vous inquiéter à propos des transactions. MongoDB prend également en charge les mises à jour sécurisées, ce qui vous permet de vérifier que les données ont été écrites sur n serveurs de réplique différents et qu'elles ont été conservées sur le disque. En ce qui concerne les sessions partagées entre HTTPS et HTTP, vous n'avez pas à vous soucier de cela. Vous définirez votre magasin de sessions comme MongoDB, MySQL, Memcached ou, ma recommandation, Cookies. Tant que vous définissez votre domaine en tant que '.monapp.com', les cookies seront partagés entre tous les sous-domaines de votre application, quel que soit le protocole.

+0

thx, j'ai fait un effort folle pour les amener à mixer. (dieu merci pour le branchement de git) Hélas, pendant que les choses semblaient fonctionner, les tâches de rake sont maintenant ratées, provoquant rake db: drop pour ne laisser tomber que les tables sql. Je vais garder votre conseil en tête et revenir à tout faire en conservant toutes les données transactionnelles dans un doc. merci pour l'aide – cultofmetatron

+0

Content de pouvoir vous aider. Il est généralement préférable de trouver un système de base de données qui correspond à vos besoins et de s'y tenir. Si votre projet s'intègre plus facilement dans un schéma relationnel, alors restez fidèle à MySQL :) –

0

Bien que je ne puisse pas commenter directement l'aspect des rails de la question, MongoDB prend en charge les mises à jour transactionnelles, tout comme la réponse de la première affiche. Il est probablement plus simple d'implémenter tout votre système dans Mongo ou dans un SGBDR. La vraie question est quelle est la motivation derrière l'utilisation de mongo ici? Qu'espérez-vous tirer d'un modèle de base de données de documents? Voulez-vous juste ripper des objets RoR directement sur mongo? Juste une suggestion, (de manière abstraite) mais vous pouvez simplement définir vos objets à l'avance, et représenter cette définition dans votre SGBDR. Cela vous fera probablement gagner beaucoup de temps si vous n'avez pas une motivation claire pour utiliser Mongo. Mongo est une technologie géniale, mais il est préférable de trier des données et des données de catalogage, plutôt que des structures de données strictes (pas forcément incapables de le faire, mais avec une base de documents, vous avez beaucoup plus de flexibilité avec le contenu de chaque objet dans votre db).

Bonne chance!

Questions connexes