Überblick über gängige Datenverarbeitungstechniken, die in verteilten Umgebungen verwendet werden

In diesem Artikel wird ein Überblick über die gängigen Datenverarbeitungstechniken in verteilten Umgebungen zusammen mit einigen wichtigen Punkten und Vorteilen zusammengefasst.

Normalisierung

Denken Sie an die alten Zeiten des RDBMS, in denen wir den assoziativen Satz von Spalten in derselben Tabelle mit Fremdschlüsseln als referentielle Entitäten organisiert haben, hauptsächlich um die Redundanz von Daten in verschiedenen Tabellen zu reduzieren. Zum Beispiel Anstatt die Spalte "employee_name" in die personal_detail-Tabelle und die address_detail-Tabelle des Mitarbeiters zu setzen, haben wir beide nur in personal_details gespeichert, während "emp_id" ein Fremdschlüssel in der address_detail-Tabelle sein kann.

Schlüsselpunkte

  1. Große Tabellen, aufgeteilt in verschiedene Tabellen mit einer Teilmenge von Spalten, um die doppelten und redundanten Spaltenwerte zu reduzieren.
    1. Der Normalisierungsprozess besteht aus verschiedenen Stufen wie 1NF, 2NF, 3NF und Boyce & codd (BCNF).
    2. Verschiedene beteiligte referentielle Entitäten wie Unique_key, Foreign_key, Super_key usw.
    3. Joins werden benötigt, um die Daten aus mehreren Tabellen abzurufen.
    4. Zweck

    5. Zum Entfernen der Datenbankanomalien beim Einfügen, Aktualisieren und Löschen von Operationen in Tabellen aufgrund von Datenredundanz.
    1. Das Suchen, Sortieren und Erstellen von Indizes ist schneller, da Tabellen schmaler sind und mehr Zeilen auf eine Datenseite passen.
      1. Die Indexsuche ist oft schneller, da Indizes tendenziell enger und kürzer sind.
      2. Mehr Flexibilität bei der Optimierung der Abfragen.
      3. Weniger Nullwerte und weniger redundante Daten machen die Datenbank kompakter
      4. Hier ist ein guter Artikel zu diesem Thema: https://beginnersbook.com/2015/05/normalization-in-dbms/

        Partitionierung

        Partitionierung ist ein allgemeiner Begriff, der sich nur auf die Datenbankaufteilung (Sharding) bezieht. Dies kann in vielen Formen erreicht werden, beispielsweise in Spaltenunterteilung oder zeilenweise Unterteilung. Bei der Partitionierung wird die große Datenbank, die Datentabellen und Indizes enthält, in kleinere und praktische Datenbereiche unterteilt, die als Partitionen bezeichnet werden. Die partitionierten Tabellen werden von den Abfragen ohne Änderungen direkt verwendet.

        Sobald die Datenbank partitioniert ist, kann die Datendefinitionssprache problemlos mit den kleineren partitionierten Segmenten arbeiten, anstatt die riesige Datenbank vollständig zu behandeln. Auf diese Weise werden durch die Partitionierung Probleme bei der Verwaltung der großen Datenbanktabellen verringert.

        Zweck

        1. Durch die Partitionierung werden die Abfragefunktionen erweitert. Abfragen können schneller auf die Sammlung relativ kleiner Partitionen reagieren als auf die riesige Datenbank. Daher wird die Funktionalität und der Leistungsgrad verbessert und verbessert.
        1. Parallel können Daten von der Anwendung parallel abgerufen und verarbeitet werden, wodurch sich die Verarbeitungszeit verkürzt.
        1. Die Verwaltung und Verwaltung kleinerer Partitionen ist im Vergleich zu großen Datenbanken relativ einfach.
          1. Natürlich kann eine hohe Verfügbarkeit durch Replizieren der Partitionen erreicht werden.
          2. Scherben

            Datenbank-Sharding ist das Aufteilen der in einer Datenbank / Tabelle vorhandenen Daten in mehrere Datenbanken / Tabellen mit demselben Schema, so dass die Daten in mehrere kleinere Blöcke unterteilt werden, die als Shards bezeichnet werden. Mit anderen Worten: Sharding ist eine Methode zum Aufteilen und Speichern eines einzelnen logischen Datasets in mehreren Datenbanken und häufig auf mehreren Computern.

            Horizontale Scherben

            In einfachen Worten bedeutet das Aufteilen der Tabelle zeilenweise, dass die Verteilung der Tabellenzeilen auf mehrere Datenbanken als horizontales Sharding bezeichnet wird.

            Dies ist eine allgemeine Idee. Deshalb kann Sharding entweder auf Anwendungs- oder Datenbankebene implementiert werden. In vielen Datenbanken ist Sharding ein erstklassiges Konzept, und die Datenbank weiß, wie Daten in einem Satz von Datenbanken, d. H. Einem Cluster, gespeichert und abgerufen werden.

            Heutzutage unterstützen fast alle modernen Datenbanken das Sharding. Cassandra, HBase, MongoDB sind einige der verbreiteten verteilten Datenbanken.

            Schlüsselpunkte

            1. Dasselbe Schema wird in allen Datenbanken repliziert.
            1. Der Sharding-Schlüssel ist wichtig, um nachzuschauen, wo sich die erforderlichen Daten befinden.
            1. In jedem Shard ist ein eindeutiger Datensatz vorhanden.
            1. Sharding löst das Skalierungsproblem auf der horizontalen Achse, indem weitere Datenbanken hinzugefügt werden, um neue Daten aufzunehmen.
            1. Es ist eine günstigere Lösung im Vergleich zur Datenpartitionierung.
            2. Zweck

              Im Allgemeinen wird Scherben empfohlen, sobald eine dieser Bedingungen erfüllt ist.

            3. Der Schreib- / Leseaufwand ist zu hoch, um von einem einzelnen Server verarbeitet zu werden. Viele gleichzeitige Benutzer, die auf eine einzige Datenbank zugreifen.
            4. Der Arbeitsdatensatz bzw. die Arbeitsindizes passen nicht mehr in den Speicher.
            5. Das Dataset ist so groß, dass es auch in einen einzigen Server passt, und die Wartbarkeit ist ein Albtraum.

            Beachten Sie, dass # 1 und # 2 bei weitem der häufigste Grund sind, warum die meisten traditionellen Datenbanken Sharding benötigen.

            Wie?

            Für das Sharding der Daten ist ein Schlüssel erforderlich, der als Sharding-Schlüssel bezeichnet wird, um die Daten aufzulösen. Dieser Shard-Schlüssel ist entweder ein indiziertes Feld oder indizierte zusammengesetzte Felder, die in jedem Dokument in der Sammlung vorhanden sind.

            Es gibt keine allgemeine Regel, um einen Sharding-Schlüssel auszuwählen. Welchen Schlüssel Sie wählen, hängt von Ihrer Anwendung und Ihren Daten ab. Beispielsweise können Sie ID als Shard-Schlüssel in einer Mitarbeiterdatenbank auswählen. Beispielsweise kann es von den häufigen Suchkriterien, die in der gesamten Anwendung verwendet werden, den geografischen Standorten der Datenbanken usw.

            Mit Sharding kann Ihre Anwendung weniger Abfragen machen. Wenn die Anwendung eine Anforderung erhält, weiß die Anwendung, wohin die Anforderung weitergeleitet werden soll, und muss daher weniger Daten durchsuchen, als die gesamte Datenbanktabelle durchzugehen.

            Es verbessert die Gesamtleistung Ihrer Anwendung, verringert die Latenzzeit und ermöglicht Ihnen, sich leichter auf das Skalieren zu konzentrieren.

            Vertikale Scherben

            Vertikales Sharding ist konzeptuell nur eine Form der Datenpartitionierung. Dies kann durch Aufteilen des großen Schemas in verschiedene kleine Schemata und entsprechendes Speichern der verschiedenen Datenblöcke in separaten Maschinen erfolgen. Spaltenweise Spalten teilen, dh Spalten einzelner Geschichten werden auf verschiedene Datenbanken verteilt. Dies geschieht unter Berücksichtigung der Domäne der Geschäftsanwendung. Wir führen eine logische Aufteilung innerhalb der Anwendungsdaten durch und speichern die Daten in verschiedenen Datenbanken.

            Meist wird dies auf Anwendungsebene erreicht. Der Code ist für das Lesen und Schreiben der angegebenen Datenbanken verantwortlich.

            Schlüsselpunkte

            1. Das Schema ist logisch auf verschiedene Datenbanken aufgeteilt.
            1. Meistens geht es um Domänenwissen.
            1. Doppelte Spalten können in jeder Datenbank vorhanden sein. Für ex. Eine Primärschlüsselspalte 'Id' als Fremdschlüssel in einer anderen Datenbank.
            1. Es löst das Skalierungsproblem auf der vertikalen Achse, indem es mehr Platz oder Rechenleistung auf derselben Maschine erhöht, um neue Daten aufzunehmen oder zu berechnen.
            1. Es ist eine kostenintensivere Lösung im Vergleich zum Sharding nach einem bestimmten Level.

            Zweck

            1. Vor allem aus Platz- und Leistungsgründen gemacht. Beispielsweise werden die Rechnungsadresseninformationen eines Kunden in einer separaten Tabelle mit einer CustomerId als Referenz abgelegt, sodass das Design später die Flexibilität hat, diese Informationen für unterschiedliche Sicherheitsbedenken usw. in eine separate Datenbank zu verschieben.
              1. Es gibt einige blobartige Spalten, die echte große Bilder oder Multimedia-Informationen enthalten, die leicht in einer separaten Datenbank gespeichert werden können, die für verschiedene Wartungspläne geplant ist.
              2. Eine bestimmte Art von Daten benötigt eine spezielle Art von Datenbank, wie z. B. Zeitreihen-Datenbanken, um eine effiziente Verarbeitung zu ermöglichen.
              3. Replikation

                Datenreplikation ist der Vorgang, Daten auf mehreren Rechnern aufzubewahren, die sich an verschiedenen Standorten befinden können. Dies ist von Vorteil, um die Leistung und Verfügbarkeit von Daten zu verbessern, insbesondere in einer verteilten Umgebung. Bei diesem Verfahren werden die Daten einfach von einer auf einem Computer vorhandenen Datenbank auf einen anderen Computer kopiert, sodass alle Benutzer dieselben Daten ohne Inkonsistenz sehen können.

                Schlüsselpunkte

              4. Datenreplikation umfasst Duplizität auf Transaktionsebene, sodass die Informationen in einem konsistenten Zustand repliziert werden können und mit der Quellendatenbank synchronisiert werden können.
                1. Die vollständige Replikation ist ein Schema, in dem die gesamte Datenbank an jedem Standort gespeichert wird.
                2. Teilreplikation ist ein Schema, in dem ein häufig verwendetes Fragment der Datenbank repliziert wird und andere nicht repliziert werden.
                3. Zweck

                4. Um die Verfügbarkeit von Daten zu erhöhen.
                1. Um den Durchsatz der Anwendung zu erhöhen.
                1. Um das Risiko von Datenverlust oder Datenverfälschungen zu minimieren.
                  1. Um die Gesamtlatenz zu minimieren, kann die Anwendung schneller reagieren.
                  2. Es ist also ein kleiner Aufwand, um die Übersicht der verschiedenen Datenbankkonzepte auf einer Ebene zusammenzufassen.

                    Schreiben Sie mir wie immer eine Zeile in den Kommentaren, wenn ich einen Fehler gemacht habe oder in jedem Fall hilfreich sein kann! :) Vielen Dank!

                    Für diesen Artikel verwendete Referenzen

                    https://beginnersbook.com/2015/05/normalization-in-dbms/

                    http://analyticscosm.com/horizontal-vs-vertical-partitioning/

                    https://en.wikipedia.org/wiki/Replication_(computing)