Question

Je veux savoir ce que les problèmes spécifiques de / solutions / conseils / meilleures pratiques [ne me punissent pas le mot] se posent tout en travaillant avec des bases de données énormes.

Sous énorme bases de données, je veux dire qui ont des tables avec des millions de lignes et / ou des bases de données avec pétaoctets de données.

réponses axées sur la plate-forme sera grande aussi.

Était-ce utile?

La solution

Quelques idées

  • Découvrez les détails du moteur de base de données spécifique, comment cela fonctionne:

  • Comment optimiser les requêtes (conseils, plans d'exécution)

  • Comment régler la base de données (non seulement des index, mais le stockage physique et de la représentation, l'intégration avec OS).

  • Requête "trucs" comme des tables temporaires pour stocker les résultats temporaires qui peuvent être réutilisés,

  • Comment évaluer la nécessité de dénormalisation pour l'amélioration de la performance

  • Comment utiliser les outils de profilage pour la base de données, afin d'identifier les goulots d'étranglement.

Autres conseils

Quelques morceaux de conseils d'un DBA de production (mon expérience est MS SQL, mais ceux-ci devraient appliquer à d'autres plates-formes):

  • Maintenance devient significative (problème des sauvegardes nocturnes, DBCCs, emplois réindexation / optimisation hebdomadaire, etc.). Très facile de commencer à dépasser une fenêtre de maintenance la nuit ou le week-end raisonnable. Ce n'est pas techical question, est aussi une business question ( "ce que tu veux dire, ça va prendre 4 heures pour restaurer la base de données de la dernière sauvegarde ? ")

  • Les développeurs besoin de comprendre qu'ils peuvent avoir besoin de travailler autrement. « Tu veux dire que je ne peux pas simplement DELETE (500m rows) FROM MassiveTable et attendre au travail?

Je suis sûr que je vais y penser plus ...

Mon premier conseil serait d'embaucher quelqu'un qui sait ce qu'ils font et ne pas compter sur le SO, sinon vous pourriez être dans quelques erreurs extrêmement coûteux. Ma deuxième serait de choisir le matériel et le logiciel droit plate-forme. Les détails dépendra beaucoup des besoins.

vous recommande vivement de lire cette présentation sur SQL Antipatterns http://www.slideshare.net/billkarwin/sql-antipatterns-strike- Retour

L'aide de la volonté de présentation (oui, il m'a beaucoup aidé) trouver une solution à la situation qui semble dans l'impasse.

Toute SGBDR peut souffrir de mauvaises performances si elle obtient très grande, surtout quand jointure complexe conditions sont en cours d'utilisation. les schémas de base de données doivent être conçus à l'échelle de grandes quantités de trafic, aussi. La plupart des systèmes sont assez bons à manipuler des charges, mais vous pouvez également rencontrer des problèmes lorsque vous avez une base de données qui doit être répartie sur plusieurs machines.

Beaucoup de nouveaux outils font leur apparition pour faire face à l'évolutivité de la base de données. L'un des plus prometteurs est Memcached, qui stocke beaucoup de données en mémoire, ce qui permet un accès beaucoup plus rapide et les aides à la synchronisation entre les serveurs de bases de données multiples. Certaines des solutions NoSQL, qui augmentent les systèmes SQL traditionnels avec des architectures qui ne font pas respecter les schémas.

Voici quelques exemples de technologies NoSQL sont Cassandra, CouchDB, Google BigTable, MongoDB. Certaines personnes ne jurent que ces systèmes deviendront cruciales dans la gestion de « l'explosion des données à venir ».

Il y a deux aspects d'une base de données qui sont plus importantes que la taille, dans la mesure où la conception et la gestion va.

La première est la complexité. Combien de tables utilisateur sont là? Combien de colonnes dans ces tableaux? Une base de données avec plusieurs centaines de tables utilisateur dans le schéma et plus d'un millier de colonnes dans ces tables est très complexe. Une base de données avec une demi-douzaine de tables est pas très complexe, même si elle contient pétaoctets de données.

La seconde est la portée du partage des données. Si une base de données est conçu pour partager des données entre six applications ou plus, mis au point par des équipes de programmation distinctes, vous devez concevoir et gérer différemment que vous le feriez une base de données qui est intégrée dans une seule application.

La plupart des questions posées dans la base de données SO concernent les bases de données d'une seule application.

Voici quelques choses à apprendre, en plus de ce qui a déjà été mentionné.

En savoir la différence entre la partition de la table et la décomposition de la table. Certaines personnes se décomposent en plusieurs tables toutes les tables avec les mêmes colonnes, lorsque le partitionnement serait mieux les servir.

En savoir la différence entre le modèle graphique des données et le modèle relationnel de données. Certaines personnes conçoivent des bases de données comme si les clés étrangères étaient essentiellement les mêmes que les pointeurs. Ce qu'ils finissent avec un système qui capte toute la lenteur d'un système relationnel et tout le système d'un intraitables graphique.

. (Note: le modèle de graphique est souvent appelé le modèle hiearachical ou réseau)

La conception d'une véritable base de données relationnelle est beaucoup plus subtile et beaucoup plus intéressant, que de concevoir une base de données qui prétend à modéliser, mais est un graphique relationnellement vraiment modélisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top