2009-10-21 7 views
3

Je dois décider quel serveur de base de données utiliser pour mon prochain projet, mais la simple décision d'utiliser MySQL comme presque tous les projets que j'ai faits est plus difficile maintenant, parce que je m'attends à beaucoup d'enregistrements.Quelle base de données utiliser pour le stockage et la manipulation de gros volumes de données?

La base de données va stocker une liste d'utilisateurs, d'autres tables non pertinentes et la dernière, des données collectées par l'utilisateur. Disons, si j'ai 6000 utilisateurs répondant à un quiz sur l'autre. Des calculs simples montrent que de ces utilisateurs, si chacun répond au questionnaire sur tout le monde (et dans mon projet qui est sûr à 99%), je me retrouverai avec 35,99 millions d'enregistrements (ils s'excluront eux-mêmes et dans cette situation particulière l'opération est 6000 * 5999). Malheureusement 6000 est peut-être un petit nombre, le vrai nombre croissant jour après jour.

Que choisir? MySQL et peut-être si les choses vont bien et le projet se développe pour l'étendre dans un cluster? PostgreSQL, MSSQL? Oracle? J'ai lu à propos de chacun d'eux, chacun a ses avantages et ses inconvénients, mais je ne sais toujours pas quoi choisir. L'avantage de MySQL et PostgreSQL est bien sûr le prix de départ de 0 $, ce qui est plutôt bien dans une start-up habituelle autofinancée.

Un avis, des conseils? Si vous avez rencontré cette situation dans votre expérience en tant que développeurs, j'aimerais beaucoup avoir de vos nouvelles. 3500 millions d'enregistrements peuvent être facilement gérés par MS SQL Server (en supposant que la conception de la base de données, les index, etc. sont corrects).

Répondre

1

La plupart des propriétés Web à grande échelle utilisent un magasin de valeurs-clés réparties. Cela dit, 35 millions est grand, mais pas que grand. Avec la plupart des bases de données modernes, vos deux principaux soucis de mise à l'échelle doivent être le débit et ce qui se passe lorsqu'aucune boîte ne peut plus contenir toute votre base de données. Et ces deux problèmes peuvent être résolus dans une certaine mesure pour n'importe quelle base de données que vous choisissez d'utiliser. (Caching, réplication, sharding, etc.)

Utilisez MySQL jusqu'à ce que vous ne pouvez plus. À ce stade, vous devriez rouler dans la pâte de toute façon et vous avez maintenant un problème très souhaitable.

0

Vous pouvez commencer avec l'édition gratuite de SQL Server Express et plus tard, si vous avez besoin, vous pouvez mettre à niveau vers la version complète qui prend en charge le clustering, etc.

SQL Server Express présente certaines limites - CPU simple, 1 Go de mémoire, max Taille de base de données de 4 Go et quelques autres choses. Je ne suis pas sûr de la rapidité avec laquelle ces limitations deviendront un problème, mais vous pouvez toujours passer à la version complète lorsque vous les rencontrez.

+4

Taille de la base de données 4 gig/36 millions de lignes = 119 octets par ligne - y compris les index. –

1

Utilisez MySQL gratuitement et vous en avez l'expérience. En outre, à mon avis, il est plus important de savoir comment vous concevez les tables que la base de données que vous utilisez.

+0

Malheureusement, l'aspect «design» semble avoir été perdu dans de nombreux cas, car le rôle d'un DBA spécialisé a été minimisé avec la commodité des systèmes de base de données. –

0

MySQL (i) & Postgre

  • 0 $ de frais
  • grande communauté
  • de nombreux tutoriels
  • bien documentated

MSSQL

  • Vous pouvez obtenir « l'argent » de MS si vous faites la promotion que vous utilisez MSSQL (informations secrètes de certaines entreprises, je travaillais pour)
  • outils MS fonctionnent très bien
  • outil complet dans C# IDE sur.lib NET vers Windows Server 2003

Oracle

  • fournisseur professionnel et commercial
  • Utilisé par de nombreuses grandes entreprises (j'ai aussi entendu parler de Blizzard (World of Warcraft) en utilisant Oracle)
  • - cher

La décision finale dépend des exigences très particulières de votre projet. Faites-vous une liste rapide de choses qui sont IMPORTANTES pour votre projet (par exemple, des requêtes rapides) et cherchez quels pros de la base de données correspondent le mieux à vos besoins.

Tout est affaire de design. La base de données SQL est une sorte de voiture, il suffit de savoir quel composant doit être placé ici et lequel. Faites un design clair et vous ne rencontrerez aucun problème.

+0

J'utilise PHP, et ne fait généralement pas confiance aux logiciels Microsoft. –

+0

Je ne suis pas un grand fan MS non plus, mais beaucoup de grands projets fonctionnent sur MSSQL - y compris SO –

3

MySQL traitera 35 millions d'enregistrements sans problème. Inquiétude à propos de l'évolutivité lorsque vous y arrivez. Vous pouvez facilement ajouter des disques durs RAID pour sauvegarder vos tables de base de données, et si vous commencez vraiment à grossir, vous obtiendrez un SAN complexe qui criera ... Ne vous inquiétez pas autant du moteur DB que du matériel sous-jacent. nous avec des millions de dossiers.

+0

Roches avec des millions d'enregistrements dans un type d'utilisation web? Je veux dire, lisse, assez rapide et ne pas faire l'utilisateur d'avoir une mauvaise opinion sur le site Web? –

+2

L'ajout d'une couche de mise en cache peut réduire considérablement la charge de la base de données. En fonction de votre rapport lecture/écriture, vous pouvez éviter de toucher la base de données la plupart du temps. –

+0

En outre, vous pouvez mettre à l'échelle les lectures via la réplication. Vous pouvez répliquer toutes les données de votre base de données vers un nombre illimité de bases de données esclaves et répartir la charge de lecture sur toutes les bases de données esclaves. Vous pouvez augmenter le nombre d'esclaves à mesure que votre trafic augmente également. Mon point est, traverser le pont quand vous y arrivez, MySQL est capable de le faire. – Zak

2

Je n'ai eu aucun problème à manipuler des tables aussi grandes que 36 000 000 lignes sur MySQL et Oracle. Assurez-vous d'indexer les colonnes appropriées, d'exécuter EXPLAIN pour vos requêtes et de conserver les principes de conception appropriés.

0

Peut être que vous pouvez tester Firebird

Blog post sur grande base de données Firebird here

licence de MySQL est here (pas AllWays gratuit).

Postgresql et Firebird sont gratuits.

+0

Pourquoi ce post a-t-il reçu un vote négatif? –

+0

@Murali: oui, c'est vrai. Pourquoi ? –

+0

Je l'ai réparé: D.Ce que je n'aime pas à propos de votre message, c'est sa mise en forme, mais +1 pour le lien vers la base de données terabyte. – maaartinus

4

De nos jours, le libre n'est plus quelque chose qui différencie les bases de données. Oracle et SQL Server ont des versions libres, mais les limitations sont les ressources - base de données de 4 Go, RAM & utilisation de l'unité centrale unique. Des millions d'enregistrements ne sont pas une préoccupation - c'est ce type de données que vous utilisez. J'ai vu le commentaire d'OP dire qu'il n'aime pas le logiciel MS - c'est votre prérogative, mais l'utilisation des versions gratuites d'Oracle ou de SQL Server bénéficie d'une transition transparente vers les versions haut de gamme de la base de données respective.

Personnellement, mon choix serait Oracle ou SQL Server en raison de mon humble avis, réels considérations de fonctionnalités telles que le support de requête hiérarchique, l'affacturage/CTE sous-requête, les paquets (bien avant que je reçois d'exécuter des fonctions/procédures), la recherche en texte intégral , support XML, etc.

+0

Heureusement pour moi, l'application elle-même n'est pas sorcière et elle est construite sur Zend Framework. 80% des données d'une rangée seront probablement un petit int (1-20), mais le reste sera malheureusement du texte (je ne chercherai pas à le parcourir, cependant) –

+0

En fait, je dirais que ce n'est pas une prérogative mais c'est une opinion. Bon post. –

+0

@pst: Merci. Je voulais dire "prérogative" que les OP ont le droit de choisir. Il y a un ">" à la fin de votre URL, déblayant le lien btw –

0

Tout d'abord, ne pensez pas à la performance. Prematureoptimization étant la racine de tous les maux et tout ça. Vous pouvez toujours lancer plus de matériel et/ou régler plus tard.

Tous les éléments mentionnés doivent fonctionner correctement s'ils sont correctement réglés/maintenus. Je me concentrerais sur la gérabilité et la familiarité. Bases de données open source IMHO excelle sur la maniabilité (peut-être pas les meilleures interfaces graphiques, mais la CLI a été ma maison depuis longtemps).

Et si la base de données devient le goulot d'étranglement, pourquoi vous limiter à ces choix? Que diriez-vous d'une base de données distribuée à valeur-clé? Ou peut-être sérialiser les données directement sur le disque? Stocker des données en dehors d'un SGBDR, bien que souvent désapprouvé, pourrait être être le chemin correct. Ou utilisez simplement la voie commune de dénormalisation.

Rappelez-vous toujours de ne pas optimiser prématurément.

En ce qui concerne les opinions (puisque vous l'avez spécifiquement demandé), je privilégie les bases de données open source, en particulier PostgreSQL. C'est solide, rapide et très bien présenté. Et même avec des (relativement) grands ensembles de données, il s'est superbement comporté sur du matériel médiocre (un peu d'accord impliqué, bien sûr, mais vous ne pouvez pas passer cette étape, peu importe la base de données que vous choisissez).

+3

Dans la conception de base de données, vous devez penser à la performance à l'avant, les bases de données sont difficiles à corriger quand elles ne sont pas conçues pour la performance. – HLGEM

Questions connexes