2010-02-16 2 views
3

Je dois concevoir une base de données de trafic qui comprend des données de différentes villes (8 villes) 2mb dans une période de 10 min pour chaque ville 24h. Les données entrantes sont les mêmes pour toute la ville. Ma première question est donc de savoir ce qui est le mieux en matière de performance: concevoir une base de données pour toutes les villes avec plusieurs tables (une table pour chaque ville) ou concevoir de nombreuses bases de données (une base de données pour chaque ville)? Ma deuxième question est quel est le meilleur système de gestion de base de données pour ce scénario, MySQL, Postgres, Oracle ou autres?Meilleure solution de base de données pour la gestion d'une énorme quantité de données

+1

Cela sera probablement fermé comme subjectif. Lorsque vous posez ce type de question, qui n'a pas de réponse «correcte», veuillez cocher la case «wiki de la communauté» lorsque vous écrivez la question. (Vous pouvez probablement encore revenir en arrière et faire cela maintenant.) –

+0

une feuille de calcul Excel avec adodb.dll. ;-P –

+0

quel est le budget de votre matériel? combien de temps allez-vous conserver les données? –

Répondre

3

La quantité de données que vous recevez chaque jour est assez importante (~ 5 Go), mais le nombre de lignes insérées est plutôt faible. Par conséquent, vous devez concevoir votre modèle physique pour faciliter l'administration du stockage de base de données et l'interrogation efficace. Disposer d'une base de données séparée par ville n'a de sens que si vous avez un serveur par base de données. Mais vous n'avez pas besoin d'équilibrage de charge, car vous n'avez à gérer que huit insertions toutes les dix minutes. D'un autre côté, cette architecture transformera chaque requête qui compare une ville contre une autre en une requête distribuée. Avoir une table par ville dans la même base de données peut vous donner des avantages de performance si la majorité de vos requêtes sont limitées aux données d'une ville plutôt que de comparer des villes. Mais je ne voudrais pas mettre beaucoup d'argent là-dessus. Même si cela fonctionnait, cela pourrait rendre d'autres types de requêtes plus difficiles. Etant donné que les données sont les mêmes pour toutes les villes, mon option préférée serait une table avec une colonne de différenciation (TOWN_ID). Surtout si j'avais l'argent pour une licence Oracle avec l'option Partitionnement.

0

Différentes bases de données par ville peuvent être difficiles à maintenir, même avec des tables différentes. Cela pourrait être réalisable si vous n'avez jamais à comparer les villes, mais tôt ou tard je parierais devoir comparer les données de différentes villes.

Partitionner des données est la voie à suivre. La base de données Anty qui prend en charge le partitionnement de données telles qu'Oracle ou SQL Server fonctionnerait correctement. Je ne sais pas si Postgre ou Mysql supportent cela, vous devriez demander à quelqu'un de mieux connaître ces bases de données.

Questions connexes