2012-06-02 1 views
-2

Je vais avoir une base de données d'une table des utilisateurs avec des uuids, l'âge, le sexe, le revenu familial et 12 de ces domaines. Environ 40 - 50 millions d'entre eux. Je devrais interroger en fonction de la tranche d'âge, la gamme de revenu, etc. et obtenir la liste des uuid. Chaque ligne doit comporter environ 400 caractères si elle est concaténée. Multiplier 400 octets par 50Mil obtient 17 - 18 Go Approx. Il va grandir mais lentement.Meilleur base de données et le matériel à choisir pour ce cas d'utilisation

Ce qui sera le meilleur système de base de données pour contenir ces données et exécuter des requêtes rapides. Mongo ou MySQL? Aussi quel genre de matériel devrait être préférable de garder.

De même, quelqu'un peut dire à l'heure de la requête mySQL ou Mongo prendra basé sur l'expérience. J'ai besoin de concevoir l'architecture de certains autres composants de l'ensemble du système sur cette base.

+0

Je dirais que Mongo, semble inutile en utilisant une base de données relationnelle pour une table –

+0

Je déteste utiliser cette ligne (alerte cliche) mais: "J'ai des index plus gros que ça". De plus, si ce n'est pas le cas, [Stack Overflow n'est pas un moteur de recommandation] (http://meta.stackexchange.com/a/128562/179419). – Ben

+0

question inutile –

Répondre

2

Je ne dirais pas que 40-50 millions d'enregistrements ou 17-18 Go seraient considérés comme "grands". Toute base de données relationnelle devrait être suffisante.

Tout serveur moderne sera suffisant. Windows, Linux - choisissez celui que vous connaissez le mieux. Je dirais que 64 bits sont requis. Ajouter enough RAM et vous serez en mesure de tenir le tout en mémoire. Personne ne peut vous dire l'heure de la requête, car cela dépend de trop de facteurs: le matériel, le schéma, les index, etc. La meilleure chose à faire est de le faire vous-même et de voir.

Je pense que votre plus gros problème sera l'interrogation par plage. Cela ressemble moins à une base de données transactionnelle et plus comme un entrepôt de data mining. Peut-être un schéma en étoile avec des dimensions pour le temps, l'emplacement, le revenu, etc. serait un meilleur ajustement pour ce que vous essayez de faire.

0

Il n'y a aucune raison pour que vous stockiez toutes ces informations dans une seule table, en particulier une avec autant de lignes. Pour un projet de cette taille, je recommande fortement d'apprendre comment fonctionnent les bases de données relationnelles et comment l'indexation fonctionne. La façon dont vous êtes sur le point d'implémenter ceci, sera lente sur n'importe quelle base de données ou matériel que vous lancez dessus. Comme si vous l'aviez conçu comme une base de données relationnelle, avec plusieurs tables séparées pour stocker des choses et utiliser une clé étrangère pour accéder à ces autres tables, vous augmenterez considérablement vos performances.

This is very dry, mais essentiel. Vous devriez vraiment essayer d'en avoir une bonne compréhension. En outre, vous devriez savoir environ indexing. Chaque base de données fait leur légèrement différente, donc comment vous l'implémentez dépend de la base de données que vous choisissez.

Et je veux dire que vous augmenterez considérablement vos performances. J'ai vu et repensé des requêtes mal faites qui duraient entre 15 et 20 minutes, les optimisais grâce à la conception de bases de données relationnelles, aux index et à la conception optimale des requêtes et les réduisais en millisecondes.

+0

La façon dont les données sont transférées à partir de différentes sources, il est difficile de stocker dans plusieurs tables connexes. –

Questions connexes