Frage

Ich möchte wissen, welche spezifischen Probleme / Lösungen / Ratschläge / Best Practices [bestrafen mich nicht für das Wort] entstehen, während sie mit großen Datenbanken arbeiten.

Unter großen I-Datenbanken bedeuten, die Tabellen mit Millionen von Zeilen und / oder Datenbanken mit Petabytes von Daten.

Platform orientierte Antworten werden auch groß sein.

War es hilfreich?

Lösung

Einige Ideen

  • Erfahren Sie die Details des spezifischen Datenbank-Engine, wie es funktioniert

  • Wie zur Optimierung von Abfragen (Hinweise, Ausführungspläne)

  • Wie stimmt die Datenbank (nicht nur Indizes, sondern physische Speicherung und Darstellung, OS-Integration).

  • Abfrage "Tricks" wie temporäre Tabellen temporäre Ergebnisse zu speichern, die wiederverwendet werden können,

  • Wie die Notwendigkeit der Denormalisierung zur Leistungsverbesserung

  • bewerten
  • Wie Tools für die Datenbank zu verwenden, Profilieren, um die Engpässe zu identifizieren.

Andere Tipps

Ein paar Ratschläge von einem Produktions DBA (meine Erfahrung ist, MS SQL, aber diese auf andere Plattformen gelten sollen):

  • Wartung wird ein signifikanten Problem (nächtliche Backups, DBCCs, wöchentlich reindex / Optimierung Jobs, etc). Sehr einfach zu beginnen, ein angemessenes jedes Nacht oder am Wochenende Wartungsfenster zu überschreiten. Dies ist nicht nur ein techical Problem, es ist auch ein Unternehmen Frage ( "Was meinst du, es 4 Stunden wird die Datenbank aus der letzten Sicherung wiederherstellen ? ")

  • Entwickler müssen verstehen, dass sie benötigen, anders zu arbeiten. „Du meinst, ich kann nicht einfach DELETE (500m rows) FROM MassiveTable und erwarten, dass es Arbeit?

Ich bin sicher, werde ich mehr denken ...

Mein erster Rat wäre, jemanden einzustellen, der weiß, was sie tun, und nicht darauf verlassen, SO, sonst könnte man in einigen extrem teure Fehler sein. Mein zweite wäre die richtige Plattform, Hardware und Software zu wählen. Die Details werden sehr stark von Anforderungen ab.

empfehlen Ihnen, diese Präsentation zu SQL Antipatterns zu lesen http://www.slideshare.net/billkarwin/sql-antipatterns-strike- zurück

Die Präsentation wird dazu beitragen, (ja, es hat mir sehr geholfen) eine Lösung für die scheinbar festgefahrene Situation finden.

Alle RDBMS können von schlechter Leistung darunter leiden, wenn sie sehr groß werden, vor allem wenn es um komplexe Verknüpfungsbedingungen im Einsatz sind. Datenbank-Schemata müssen für große Mengen an Traffic auf Skala entworfen werden, auch. Die meisten Systeme sind ziemlich gut bei Lasten der Handhabung, aber Sie können auch auf Probleme stoßen, wenn Sie eine Datenbank haben, dass der Bedarf auf mehrere Rechner verteilt werden.

Viele neue Werkzeuge sind Aufspringen mit Datenbank-Skalierbarkeit zu beschäftigen. die speichert eine Menge Daten im Speicher eines der vielversprechendsten ist, Memcached, die für viel schnelleren Zugriff und hilft bei der Synchronisation zwischen mehreren Datenbankservern ermöglicht. Einige der NoSQL-Lösungen, die traditionellen SQL-Systeme mit Architekturen ergänzen, die keine Schemata erzwingen.

Einige Beispiele von NoSQL-Technologien sind Cassandra, CouchDB, Google BigTable, MongoDB. Manche Leute schwören, dass diese Systeme von entscheidender Bedeutung sein wird „um die kommenden Datenexplosion“ bei der Verwaltung.

Es gibt zwei Aspekte eine Datenbank, die wichtiger sind als eine Größe, so weit wie Design und Management geht.

ist die erste Komplexität. Wie viele Benutzer Tabellen gibt es? Wie viele Spalten in diesen Tabellen? Eine Datenbank mit mehreren hundert Benutzertabellen im Schema und über tausend Spalten in diesen Tabellen ist sehr komplex. Eine Datenbank mit einem halben Dutzend Tischen ist nicht sehr komplex, auch wenn es Petabyte Daten enthält.

Die zweite ist Umfang des Datenaustausches. Wenn eine Datenbank zum Austausch von Daten zwischen sechs oder mehr Anwendungen, entwickelt von separaten Programmierteams aufgebaut ist, sollten Sie es gestalten und verwalten ganz anders, als würden Sie eine Datenbank, die in einer einzigen Anwendung eingebettet ist.

Die meisten der Datenbank gestellten Fragen in SO beziehen sich auf einzelne Anwendungsdatenbanken.

Hier sind ein paar Dinge zu lernen, zusätzlich zu dem, was bereits erwähnt wurde.

Erfahren Sie den Unterschied zwischen Tabellenpartition und Tabelle Zersetzung. Manche Menschen zersetzen Tabellen in mehrere Tabellen alle mit den gleichen Spalten, wenn Partitionierung würde sie besser dienen.

Erfahren Sie den wirklichen Unterschied zwischen dem Diagrammmodell von Daten und dem relationalen Modell der Daten. Einige Leute entwerfen Datenbanken als ob Fremdschlüssel waren im Wesentlichen die gleichen wie Zeiger. Was sie am Ende mit einem System, das erfaßt aller Langsamkeit eines relationalen System und alle Unübersichtlichkeit eines Graphen-System.

. (Hinweis: das Diagrammmodell wird oft das hiearachical oder Netzwerk-Modell genannt)

eine echte relationale Datenbank zu entwerfen ist viel subtiler und viel mehr wert, als die Gestaltung von Datenbanken, der vorgibt, relational modelliert werden, aber wirklich modelliert Graph.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top