8
votes

Qu'est-ce qui est trop gros pour une base de données?

J'ai un pote qui dirige une application Web pour les personnes inscrites des voitures à vendre. Il y a quelques milliers de clients qui l'utilisent, et chaque client a des centaines et parfois des milliers de lignes dans la base de données (certains ont été sur 5 ans avec des centaines de voitures qui vendent chaque mois et 10 de rangées par vente (commentaires, messages, etc)). Il a exécuté ce système dans une base de données SQL Server dans une base de données SQL Server sur un serveur physique avec 20 Go ou RAM et quelques processeurs pendant tout le temps, sans aucun problème. Est-ce une sorte de miracle?

Tout comme la plupart des programmeurs, je ne suis pas de DBA et je viens de passer, grâce à Orms, etc. Partout où je regarde, les gens parlent de la nécessité de devancer ou d'obtenir un serveur de base de données séparé pour les gros utilisateurs d'une application Web. Pourquoi est-ce? Est-ce vraiment que l'inefficace d'avoir une grande dB avec beaucoup ou des rangées? Devrais-je prévoir d'utiliser Cassandra ou quelque chose, ou puis-je compter sur l'accroître avec les postgres?


3 commentaires

Trop gros est que lorsque les arbres sont abattus ou de vieux bâtiments démolis pour faire de la place aux serveurs.


Pourquoi la plupart des programmeurs ont-ils besoin de DBAS? Les gens n'apprendent plus de la base de données relationnelle? Quoi qu'il en soit, l'accord avec le frisson et ainsi de suite doit faire des performances de mise à l'échelle lorsque vous avez 10 milliers ou même des millions d'utilisateurs, pas nécessairement la taille de la base de données.


@Bobbyshaftoe - La chose à propos des programmeurs nécessitant des dabas a à voir avec où proviennent les programmeurs. Les programmeurs n'avaient pas l'habitude d'être architectes logiciels ou logiciens. Ils étaient des codeurs de machine et des administrateurs système, ainsi que des dabas; Les informaticiens, si vous voulez. Avec l'attaque de langages de programmation de haut niveau (par exemple, les nouveaux programmeurs ont émergé; ceux qui ne se souciaient pas de binaires, de cartes mères ou de réellement informatiques du tout. Je m'intéresse moi-même, ne venez pas d'un fond de sciences informatiques, mais je n'ai tout simplement pas assez de temps dans la journée pour tout apprendre.


6 Réponses :


3
votes

Vous ne devez avoir aucun problème dans SQL Server, Oracle ou toute base de données relationnelle moderne ou non relationnelle. J'ai administré des bases de données avec 100 millions de millions d'enregistrements et de téraoctets de données.


0 commentaires

2
votes

Dans mon esprit qui n'est rien. Avoir des dizaines de millions de lignes sur plusieurs tables avec la taille de la base de données dépassant 10 Go n'a pas causé de problèmes pour MS SQL Server. Bien sûr, il n'est pas trop rapide avec cette quantité de données, mais sinon cela fonctionne très bien.

et pour répondre à la question, trop gros est si gros que cela cause des problèmes. Et quand il commence à causer des problèmes dépend de la structure de la table et de vos exigences de performance.


0 commentaires

9
votes

Je ne pense personnellement pas ce que vous avez décrit est une grande partie d'une base de données. Le serveur (20 concerts de RAM ?;) semble décent. C'est plus sur l'utilisation et la conception. Si la base de données est indexée et bien conçue, elle peut augmenter beaucoup, beaucoup plus grande sur le matériel actuel.

Avant de faire une sorte de commutateur, je regarderais simplement l'archivage des données inutiles et optimiser les requêtes s'il y a une peur des problèmes de performance.


1 commentaires

Je ne pense pas que ce soit n'importe où près de gros. En termes d'efficacité, décidez d'une mesure ou de mesures et de faire un dimensionnement, cela peut être amusant. Le journal peut avoir besoin de tronquer si elle fonctionnait depuis 5 ans!



2
votes

Les bases de données sont extrêmement efficaces pour stocker et récupérer des données relationnelles (c'est-à-dire structurées et des références à d'autres données) - c'est ce qu'ils sont conçus à faire. Honnêtement, 99% des gens craignent des magasins de grande valeur et de Cassandra et de ne plus avoir aucune idée de ce qu'ils font. Un serveur de base de données est tout à fait bien pour stocker de gros volumes de données, en particulier si vous êtes prêt à mettre un peu de travail dans le réglage correctement.

Cela dit, il y a des cas d'utilisation pour Cassandra et. Al. - Si vous avez surtout des données de clé / de valeur non structurées ou de ne pas nécessiter de cohérence ou que vous souhaitez que la redondance ne soit pas à la redondance.

Sauf si vous êtes un site Web extrêmement populaire, vous pouvez probablement vous procurer simplement avec un serveur de base de données décent - Ne changez pas avant d'avoir déterminé pourquoi vous devez changer. La commutation est fine, assurez-vous simplement de changer de commutation car elle sert mieux vos besoins, et pas parce que c'est la "chose cool de balance Web à faire"


1 commentaires

Je voulais vous demander quand vous avez répondu à cela: Quelles sont certaines des étapes évidentes rudimentaires de réglage d'une DB (en dehors de la réglage de vos requêtes et d'éviter les requêtes étrangères, ce qui est sur tout ce que je sais actuellement comment faire)?



6
votes

La raison pour laquelle les serveurs de la DB Sharding et DB distincts sont qu'à un moment donné, il sera moins cher d'utiliser plusieurs machines moins chères qu'on cherche cher. Le prix du matériel ne fait pas échouer linéairement avec des performances et une fois que vous avez atteint un certain point, ce sera beaucoup moins cher pour obtenir deux fois plus de machines pour obtenir une machine deux fois plus rapide.


1 commentaires

Considération très intéressante - Pouvez-vous donner au moins un exemple très rugueux dans le ratio de tarification-performance? Même un obsolète serait bon, je suis juste intéressé, comment ressemble-t-il dans la pratique?



3
votes

Généralement, vous divisez les composants sur différents serveurs afin que vous puissiez gérer plus facilement le temps, la résilience et la performance plus facilement.

Il est certainement tout à fait possible d'avoir une machine à monstres qui fait tout cela, mais vous aurez peut-être besoin d'une autre machine de monstre au cas où votre carte mère meurt, ou votre datacenter est indisponible.

En divisant un site Web ou une application, parmi les différents serveurs, il est plus facile d'obtenir des machines moins chères, et plus d'entre elles. Ainsi, vous pouvez créer une résilience et ne pas avoir de composants qui ont des exigences similaires sur des affrontements matériels.

Il est également important de penser aux temps de restauration des serveurs et des plans de récupération.
Que se passe-t-il lorsque votre machine meurt, pouvez-vous le remplacer dans l'heure convenue? Pouvez-vous restaurer des sauvegardes à cette époque?

SQL Server ou d'autres bases de données de classe d'entreprise ne doit avoir aucun problème avec les bases de données de 10 Go ou de 100 Go, tant qu'ils ne sont pas trop conçus. (Nous avons quelques machines avec cette capacité / utilisation qui ne luttent pas du tout.).


0 commentaires