1

Une de nos équipes développe une base de données qui sera assez volumineuse (~ 500Go) et qui évoluera à partir de là (je sais que 500 Go peuvent sembler petits à beaucoup, mais ce sera un des plus grandes bases de données dans notre magasin). L'un des problèmes auxquels ils sont confrontés est de sauvegarder et de restaurer la base de données. Fondamentalement, la base de données aura plusieurs tables de «données» et une table utilisée pour stocker des images/documents. Nous devons accomplir ce qui suit:Fenêtre de maintenance et récupération pour une base de données volumineuse

  • Etre capable de sauvegarder rapidement et de restaurer uniquement les tables de données (sans images) sur notre serveur de test à des fins de débogage et de test.
  • En cas de défaillance catastrophique d'une base de données, restaurez les tables de données uniquement pour que la majeure partie de l'application soit opérationnelle dès que possible. Ensuite, restaurez la table des images lorsque cela est possible.
  • Sauvegardez la base de données dans la fenêtre de temps nocturne allouée (quelques heures).

Mes questions sont les suivantes:

  1. Est-il possible d'atteindre les deux premiers objectifs tout en ayant les images stockées dans la même base de données? Si oui, utiliserions-nous des groupes de fichiers, des filestream ou autre chose?
  2. Comment les autres magasins sauvegardent-ils leurs bases de données dans un délai raisonnable tout en maintenant une haute disponibilité? Est-ce que vous répliquez sur un deuxième serveur et sauvegardez à partir de là?
+0

Suspect que ce serait mieux placé sur ServerFault.com - devrait être migré bientôt. –

+0

Même s'il s'agit principalement de la conception de la base de données (groupes de fichiers/filestream)? – NYSystemsAnalyst

+0

Cela peut valoir la peine de poster dans les deux endroits, ici en mettant l'accent sur la conception de base de données, là en mettant l'accent sur le calendrier de sauvegarde/performance. Cependant, ils sont très étroitement liés, et ce n'est pas deux questions différentes. –

Répondre

1

Nous avons traité des problèmes similaires. Nous sommes une entreprise de fabrication d'énergie solaire de 2,5 milliards de dollars et la reprise après sinistre est essentielle pour nous, tout en assurant la sauvegarde de nos bases de données. Notre base de données principale est notre base de données de production de plancher d'usine. Nous avons décidé de dépouiller cette base de données des données absolument essentielles pour maintenir la production, et de déplacer d'autres données dans sa propre base de données. Cela nous a permis une haute disponibilité et des temps de sauvegarde/restauration raisonnables.

Dans votre cas, est-il vraiment nécessaire de stocker des images dans la même base de données que vos autres données? Je ne pense pas que ce soit le cas, et il s'agit simplement de faciliter la résolution de certains problèmes. Je pense que des groupes de fichiers distincts aideraient aussi votre problème. Mais vous pourriez vouloir sérieusement reconsidérer si tout doit être dans une seule base de données.

+0

Qu'en est-il des contraintes de clé étrangère manquantes lorsque les données sont séparées en plusieurs bases de données. Avez-vous senti que les avantages de séparer les données valaient la peine de ne pas avoir de relations entre les données? – NYSystemsAnalyst

+0

@NYSystemsAnalyst - Dépend de ce que vous utilisez FK pour. Si vous les utilisez pour la validation de données, vous pouvez effectuer la même chose en utilisant un déclencheur (ou éventuellement une contrainte de vérification - pas sûr). Si vous avez des FK à des fins de modélisation ORM, cela peut ne pas être une bonne solution. Avez-vous également considéré le partitionnement de base de données? –

+0

Nous avons fait cela à notre base de données volumineuse - bien en terascale le jour 1 et en croissance d'environ 30gb par semaine - puis créé une base de données centrale _SQL qui avait des vues/code qui permettait à l'application de ne pas connaître les bases de données miriad. Vous pouvez également cibler l'état du journal des transactions sur les différentes bases de données/fonctions - nous avons une base de données de chiffre d'affaires élevée sur la simple consignation par exemple – u07ch

Questions connexes