Je cherche un peu d'aide ou de conseils sur la base de données à utiliser pour un projet. Si vous pouvez soulever des points ou notez des défauts, répondez à toutes les questions ou promouvez l'un ou l'autre type de base de données à cet effet sur le point de sortir, je l'apprécierais vraiment. P>
Quoi qu'il en soit: p>
Nous avons un logiciel qui suit des formulaires. p> li>
Nous avons des utilisateurs qui peuvent avoir de nombreuses propriétés différentes, littéralement Des centaines de paramètres, et je ne suis pas un fan de tables MySQL qui large. je Vraiment comme Mongo pour cela. p> li>
Nous avons différents types de formulaires, chacun peut avoir complètement différent des champs. À l'heure actuelle, nous avons une liste de formulaires avec des données génériques, puis Rejoignez le tableau correspondant pour des données supplémentaires. J'aurais tout ces champs dans un document distinct avec Mongo, et je pourrais facilement Ajouter des champs sans préoccupation. P> Li>
Nous avons des frais, des notes, des histoires sur chaque formulaire. J'aime comment dans mysql ils sont dans une table différente et je peux obtenir l'historique par forme ou par l'utilisateur - comme des notes. p> li>
Notre politique est à peu près conserver toutes les données, même supprimées ou pré-éditées Données ... pour toujours. Devrais-je être inquiet de frapper une limite de taille? Nous parlons probablement de 100 Go à la fin de 2013 p> li>
Combien de requêtes de Mongo par page vont bouger les choses? 20? 100? Aurait Ce changement si j'avais un SSD sur le serveur? (En ce moment, nous avons à propos de 60 MySQL interroge une page. Cela peut être amélioré sur.) P> li>
est-ce une mauvaise idée de mon premier projet de Mongo d'être un peu majeur peu de logiciel? Est-ce quelque chose que je peux apprendre comme je vais? p> li>
J'aime l'insensibilité de la case des noms de colonne MySQL pour rapide et choses sales. p> li>
dans mysql, je brise les choses à différentes tables. Est-ce bien, à Mongo, de mettre des données ensemble qui peuvent être séparés? Exemple: Y a-t-il des problèmes avec une configuration hybride, où les données utilisateur sont Mongo et que les données de formulaire sont dans MySQL? P> LI>
Nous devons exécuter beaucoup de rapports, y a-t-il des limitations à ce sujet à Mongo? Par exemple, aurais-je rencontré des problèmes à la recherche de chaque formulaire des 40 derniers jours avec des frais de plus de 10 $, avec les frais de chaque rangées totalisés, triés par l'âge de l'utilisateur qui l'a rempli? p> li>
redondance de données - sur le nuage Amazon, MySQL a des quantités massives de redondance. Y a-t-il un service pour correspondre à cela avec Mongo? Est-il complexe d'entrer dans la mise en page? p> li>
est mongodb soutenu par tous les fournisseurs de "nuages"? Aws fait beaucoup pour MySQL, mais on dirait que je serais seul pour Mongo P> Li>
ul>
Juste quelques choses sur ma tête - j'apprécie vraiment tout ce que quelqu'un a à dire. p> nom d'utilisateur, email, téléphone, licence1 => [num, isvalid], licence2 => [num, isvalid], notifications => [notification1 ... Notification50000], hachage de mot de passe, sel, réglage1, réglage2 .. .Setting1000, permission1, permission2 ... Permission1000 Code> Bien sûr, je voudrais utiliser le style imbriqué pour organiser, mais est-il préférable de stocker tout cela sous "utilisateur" ou de la rompre aux paramètres, aux licences, Autorisations? Deuxième exemple: Formname, adresse, notes => [Note1 => [Utilisateur, Note, date], NOTE2 => [Utilisateur, Note, date]] Code> P> P> P>
3 Réponses :
Voici quelques informations sur MongoDB dans le nuage: http://www.mongodb.org / Affichage / Documents / Hébergement + Centre P>
Vous pouvez utiliser MongoDB ou MySQL pour ce que vous voulez. La principale chose à prendre conscience est la mise à l'échelle. Dans MySQL, vous échouez verticalement. Vous obtenez une plus grande machine, une meilleure machine. Et espérons que cela fait une différence. Dans Mongodb, vous échelez horizontalement. Vous avez plusieurs machines et Shard . La mise à l'échelle verticalement a une limite. Mais la mise à l'échelle horizontalement ne le fait pas. En termes de réduction des coûts verticalement est facile à comprendre. La mise à l'échelle horizontalement entraîne généralement l'achat d'une grappe de machines, puis lorsque vous souhaitez augmenter supplémentaire, il devient exponentiel. C'est donc quelque chose que vous devez considérer. P>
faire des requêtes statistiques est un inconvénient de MongoDB. Pour quelques raisons. Tout d'abord, il y aura des fonctionnalités de MySQL que vous n'aurez tout simplement pas à MongoDB. Deuxièmement, pour quiconque est plus d'une personne dB et est super familier avec les déclarations SQL, ils peuvent avoir un temps vraiment difficile à se régler à la syntaxe de MongoDB. C'est quelque chose de nouveau à apprendre. Et les gens aiment souvent (et fonctionnent bien avec) ce qu'ils savent. P>
Comme la plupart des autres plates-formes "NOSQL" MongoDB n'emploient pas acide , ce qui lui donne un peu d'une performance boost. Mais cela signifie que cela peut être plus risqué. P>
Il existe des solutions basées sur le cloud. Jetez un coup d'œil à Mongohq et Mongolab . Je me trompe peut-être, mais je ne crois pas qu'ils ont SSD. Ce sont toutes les broches. Mais ping leur soutien. Ils répondent généralement vite. P>
dans mon expérience mongodb va vite. Très vite. MySQL est lent lorsque vous avez de grandes tables, des jointures, etc. et que vous pouvez indexer à MongoDB, comme vous l'attendez. J'ai vu que si vous indexez trop de choses, ou des objets comme des tableaux où il doit indexer chaque élément, il peut être plus taxé par transaction. P>
Je ne vous pousserais pas dans les deux sens. C'est quelque chose qui prend des recherches. Je ne dirais pas que l'utilisation de Mongodb est une mauvaise idée d'un projet aussi vaste, mais il faudrait du temps pour déterminer si cela fonctionne pour votre situation. Comme avec toutes choses. P>
Il existe certaines alternatives, des extensions spécifiquement propriétaires à MySQL qui peuvent vous donner un boost de grande performance (en fonction de votre configuration, du type moyen de transactions, etc.). Celui qui vient à l'esprit est Infobright , mais ceux-ci sont souvent coûteux. P>
Nous avons des utilisateurs qui peuvent avoir de nombreuses propriétés différentes, littéralement Des centaines de paramètres, et je ne suis pas un fan de tables MySQL qui large. je vraiment comme Mongo pour cela. P>
Nous avons différents types de formulaires, chacun peut avoir complètement différents champs. En ce moment, nous avons une liste de formulaires avec générique Données, puis rejoignez la table correspondante pour obtenir des données supplémentaires. J'aurais Tous ces champs dans un document distinct avec Mongo, et je pourrais facilement ajouter des champs sans préoccupation. P>
De votre message, je comprends que votre objectif ultime est de gérer les utilisateurs et les formulaires contenant un schéma varié (aka schéma). Je crois que Mongodb est un bon choix à cet effet. P>
Nous avons des frais, des notes, des histoires sur chaque formulaire. J'aime comment dans mysql ils sont dans une table différente et je peux obtenir l'historique par forme ou par l'utilisateur - idem comme notes. p> BlockQuote>
Aucun problème, vous pouvez utiliser différents documents (ou documents intégrés basés sur la taille de celui-ci - 16 Mo est la taille maximale du DOC) pour gérer cela sans aucun problème. Donc, vous pouvez avoir le schéma comme p>
xxx pré> ou (pour docs intégrés) p>
xxx pré> blockQuote> Notre politique contient à peu près toutes les données, même les données supprimées ou pré-éditées ... pour toujours. > Devrais-je m'inquiéter de frapper une limite de taille? Nous parlons probablement de 100 Go à la fin de> 2013 p> blockQuote>
Vous stockerez autant que les données que vous feriez, il existe déjà Déploiements de production stocker des données sur les téraoctets. P>
Est-ce une mauvaise idée de mon premier projet Mongo d'être un peu majeur de logiciel? Est-ce quelque chose que je peux apprendre comme je vais? P> BlockQuote>
Oui si vous allez utiliser MongoDB sans prototypage de votre modèle d'application. Je recommanderais d'implémenter (prototype) un ensemble minimal de votre application (comme des fonctionnalités telles que celles de MySQL) et d'apprendre les bases et de voir à quel point vous êtes à l'aise. P>
J'aime l'insensibilité de la casse des noms de colonne MySQL pour des choses rapides et sales. P> BlockQuote>
Mongo applique la sensibilité des cas, car c'est une nature de la valeur de la valeur clé de BSON (aussi bien JSON). P>
Dans MySQL, je brise les choses à différentes tables. C'est bien, dans Mongo, pour mettre des données ensemble qui peuvent être séparés? Exemple: nom d'utilisateur, email, téléphone, licence1 => [num, isvalid], p> BlockQuote>
Avantage principal de Mongo sur d'autres données SQL Data Store est, vous pouvez stocker autant d'informations pertinentes dans le même document (dans la taille de 16 Mo). Si vous n'êtes pas sûr de la taille ou de certaines parties des données, vous pouvez également diviser la pièce en une autre. Depuis que vous êtes préoccupé par le nombre de requêtes, cela réduira considérablement le nombre de demandes. P>
Y a-t-il des problèmes avec une configuration hybride, où les données utilisateur sont Mongo et forment des données sont dans MySQL? P> BlockQuote>
Non absolument pas, je suis en train d'exécuter actuellement mongodb avec MySQL (pour les transactions seules). Mais si vous ne manipulez aucune transaction, vous pouvez rester avec MongoDB. P>
Nous devons courir beaucoup de rapports, y a-t-il des limites à ce sujet dans Mongo? Par exemple, aurais-je rencontré des problèmes à la recherche de chaque forme à partir des 40 derniers jours, avec des frais de plus de 10 $, les frais de chaque rangée totalisé, trié par l'âge de l'utilisateur qui l'a rempli? p> BlockQuote>
Non, je ne vois aucune limitation dans cela. En fait, ses requêtes de manutention très rapides avec les index appropriés. Mais il y a certaines choses que vous ne pouvez pas faire avec Mongo comme des jointures normales, à la place, vous pouvez utiliser la carte / réduire pour gérer les données des rapports. P>
est mongodb soutenu par tous les fournisseurs de "nuages"? AWS fait beaucoup pour Mysql, mais on dirait que je serais seul pour Mongo P> BlockQuote>
Mongohq, mongolab sont certains des services d'hébergement de Mongo géré dédiés disponibles. De plus, RedHat OpenShift & VMware CLOWLODRY Fournit les plates-formes d'hébergement pour Mongo, vous pouvez consulter le Centre d'hébergement Mongo pour plus d'informations p>
espère que cela aide p> blockquote>