Hallo allerseits! Haben Sie etwas über das
Baader-Meinhof- Phänomen gehört? Dies ist eine lustige kognitive Verzerrung, die, wie sich herausstellte, anhand eines Beispiels sehr interessant ist. 2016 wurde auf Habré ein Übersichtsartikel über die Delphix-Technologie veröffentlicht. Wie bei jeder guten Theorie, die Sie jeden Tag in Tonnen konsumieren, um Bescheid zu wissen, vergessen Sie 80 Prozent vollständig, ohne sie in die Praxis umzusetzen. Das ist mir auch passiert - ich habe diesen Beitrag und Delphix schnell vergessen, bis ich vor etwa einem Jahr aufgrund meines Service auf die Autoren des Produkts und des Produkts selbst gestoßen bin. LANIT hatte die Möglichkeit, das Thema nicht in der Theorie, sondern in der Praxis zu studieren,
und tauchte so tief in diese Technologie ein, dass ich in diesem Artikel das gewonnene Wissen systematisieren und die gewonnenen Erfahrungen analysieren möchte.
Bild mit freundlicher Genehmigung der Yandex-Suchergebnisse.Was ist Delphix?
Delphix ist eine Software, die auf einer virtuellen Maschine mit Solaris OS ausgeführt wird und an die Speichersysteme angeschlossen werden müssen, damit Kopien der Datenbank gespeichert werden können, damit sie ordnungsgemäß funktionieren. Die Software wird in Form eines vorgefertigten Abbilds einer virtuellen Maschine (virtuelle Appliance) geliefert. Das Image kann in VmWare oder in der AWS / Azure-Cloud-Infrastruktur bereitgestellt werden. Für Tests können Sie es grundsätzlich lokal an Ihrer Workstation auslösen.
Wenn Delphix sehr stark und sehr kurz zusammengefasst wird, virtualisiert es die Daten und stellt vorgefertigte Datenbanken bereit, mit denen Sie arbeiten können. Er nimmt eine Kopie aus der Quellendatenbank (dSource genannt) und legt sie in seinem Speicher ab (der lokalen VM-Partition, die mit dem externen Speicher verbunden ist). Mithilfe von Algorithmen wird das Volumen dieser Kopie auf 60% reduziert (natürlich abhängig von den Datentypen). Aus derselben Kopie können Sie diese Datenbank dann in wenigen Minuten auf anderen Hosts bereitstellen. Solche Datenbanken werden als Virtual Database (VDB) bezeichnet. Datenbankdateien werden über NFS an Zielhosts gemountet und belegen daher keinen Speicherplatz auf diesen. Das heißt, mit 1 dSource pro 500 GB und 5 VDB beträgt der von diesem Fall belegte Gesamtspeicherplatz auf dem Speicher ungefähr 350 GB (oder so).
Ist dies ein einmaliger Kopiervorgang?
Nachdem der Initialisierungs- und Bootstrap-Schritt der Quellendatenbank in Delphix abgeschlossen ist, behält die Delphix-Engine eine konstante Synchronisierung mit dieser Datenbank bei, basierend auf der von Ihnen ausgewählten Richtlinie, z. B. tägliche oder stündliche Synchronisierung oder einige Zeit nach Transaktionen.
Die Geschwindigkeit beim Erstellen der ersten Kopie der Datenbank hängt direkt von der Netzwerkbandbreite zwischen der Quellendatenbank und Delphix ab, da die Sicherung über das Netzwerk übertragen wird.
Nach der Bindung an die Quellendatenbank unterstützt Delphix den sogenannten TimeFlow (Zeitmaschine) der Quellendatenbank, eine der Versionskontrolle ähnliche Funktionalität. Jede Version der Datenbank innerhalb dieses Zeitintervalls kann mit der Zieldatenbank verbunden werden. Warum? Zum Beispiel, um Vorfälle zu untersuchen.
Abbildung 1: Die Möglichkeit, VDB jederzeit bereitzustellen ...Abbildung 2: ... entweder in einem manuell erstellten Datenbank-SnapshotVDBs befinden sich auf einer gemeinsamen Ebene, sodass weder Benutzer noch Administratoren zusätzliche Speicherressourcen benötigen.
Sie können jede Version dieser VDB schnell mit der Zieldatenbank verbinden. VDBs sind unabhängig voneinander und befinden sich im Lese- / Schreibmodus. Neue Änderungen, die an VDB vorgenommen werden, werden in neue Blöcke im Delphix-Speicher geschrieben.
Sie können VDBs basierend auf einer anderen VDB erstellen und aktualisieren oder bei Bedarf ein Rollback durchführen.
Wie wird die Anwendung darauf reagieren?
Sie können mit solchen VDBs „wie mit einer regulären Datenbank“ arbeiten. Die Anwendung wird nichts bemerken. Es ist klar, dass DBMS-Binärdateien bereits auf diesen Servern installiert sein sollten, da nur die Datenbankdateien selbst geklont werden.
Solche VDBs werden hauptsächlich für Funktionstests oder als Sandkästen verwendet. In den meisten Fällen lohnt es sich nicht, die Last auf VDB zu lenken, da die Interpretation der Ergebnisse solcher Lasttests aufgrund der Verbindung der Datenbank über NFS recht problematisch ist. Wenn Sie eine Datenbank in Prom haben, die mit Speicher über NFS funktioniert, können Sie dies wahrscheinlich tun.
Garantiert können Sie auf einen stabilen Betrieb zählen, wenn Sie Oracle (einschließlich solcher mit Unterstützung für mehrere Mandanten und RAC), MS SQL, SAP ASE, IBM DB2, Oracle EBS und SAP HANA verwenden. Solche Konfigurationen werden vom Hersteller unterstützt.
Darüber hinaus können Sie reguläre Dateien virtualisieren (berücksichtigen Sie jede Datenbank, jedoch mit einigen Einschränkungen in der Funktionalität). Als Proof-of-Concept für interne Tests haben wir beispielsweise PostgreSQL-Instanzen eines unserer Projekte virtualisiert. Ich werde nicht sagen, was ein- oder zweimal passiert ist, aber am Ende hat das Schema mit PostgreSQL funktioniert, obwohl der Anbieter PostgreSQL derzeit nicht offiziell unterstützt.
Warum ist dies erforderlich, wenn ähnliche Funktionen in das Speichersystem integriert sind?
Es versteht sich von selbst, dass das Speichersystem lange Zeit über eine Funktionalität für Snapshots und Thin-Provisioning verfügt. Wenn sich jedoch eine produktive Datenbank und Stände auf Speichersystemen verschiedener Anbieter befinden, funktioniert eine solche Lösung nicht. Und das können nicht alle Speichersysteme.
Mit Delphix können Sie Testumgebungen auf technologisch veralteten und veralteten Speichersystemen, die außer Betrieb genommen wurden, recht erfolgreich bereitstellen. Dadurch reduzieren wir die Kosten für die Speicherung von Testdaten erheblich.
Es ist auch möglich, eine physische Kopie der Datenbank aus diesem Snapshot abzurufen, um beispielsweise einen Standby-Modus zu erstellen oder die Datenbank auf ein anderes Speichersystem zu übertragen.
Eine wichtige Komponente ist die Selbstbedienung. Mit der Delphix JetStream-Benutzeroberfläche können auch ungeschulte Entwickler / Tester die Versionen der Datenbanken ihrer Stände selbst zurücksetzen / aktualisieren und Administratoren nicht mehrmals pro Woche abrufen.
Abbildung 3. Mit JetStream zeigt die Abbildung die Brunch-Lebensdauer der Hauptversion von VDB, wobei Snapshots der Version und einige Rückschläge für diese Snapshots erstellt werden.Delphix unterstützt die kontinuierliche Synchronisation von VDB mit einer produktiven Datenbank unter Verwendung von Archiv- / Transaktionsprotokolldateien. Für eine ähnliche Implementierung basierend auf Speicher müssen Sie ... zwanzig Schnappschüsse pro Tag erstellen.
Wie Oracle Enterprise Manager weiß auch das Klonen von Datenbanken
Ja, das kann es, aber nur Oracle DBMS wird darin unterstützt. Daher kann es nicht für den Rest des DBMS verwendet werden.
Die Schlüsselfrage ist, warum es einen Gewinn macht?
Lassen Sie uns zunächst herausfinden, für wen und aufgrund dessen Delphix von Vorteil sein kann. Der Gewinn ist wie folgt:
- Verkürzung des Zeitaufwands für die Genehmigung neuer Stände,
- Reduzierung des genutzten Stauraums für Prüfstände,
- die Fähigkeit, nicht spezialisierte Speichersysteme von verschiedenen Anbietern zu verwenden,
- Verkürzung der Zeit für den Einsatz der Basis am Stand,
- Verkürzung der Zeit für die Aktualisierung der Datenbank an den Ständen.
Nun kurz zu jedem Artikel.
Reduzierung des Zeitaufwands für die Koordination neuer Stände. Ja, in einigen Unternehmen, mit denen wir zusammengearbeitet haben, dauerte die Vereinbarung eines neuen Standes zwei Wochen. Und wenn keine notwendige Menge an Ressourcen vorhanden ist oder die Organisation sehr solide und stark bürokratisiert ist, werden die Begriffe, sagen wir vorsichtig, „ab einem Monat“ genannt.
Reduzierter Stauraum für Prüfstände. Nach Angaben der Hardwareanbieter belaufen sich die Kosten für die Wartung von 1 TB Daten im Speicher auf 800 Euro pro Jahr. Die Zahlen sind ungefähr, aber die Reihenfolge ist. Wenn Sie eine produktive Datenbank mit einer Größe von 2 TB und 3 Prüfständen mit VDB haben, beträgt das vom Delfix belegte Gesamtvolumen etwa 2 TB. Solche Indikatoren werden dadurch erreicht, dass für alle Testdatenbanken nur ein gemeinsamer Dienst erforderlich ist, der im allgemeinen Fall keine wesentlich produktivere Datenbank belegt. Natürlich hängt alles von der Anzahl der Änderungen ab, die an den Testdatenbanken vorgenommen werden. Weitere Änderungen - Speicher „schwellen“ aufgrund der Lagerung von Deltas stärker an. Um dies vorzustellen, können Sie sich ein Diagramm mit Schnappschüssen von virtuellen Maschinen vorstellen.
Die Gesamtzahl der möglichen verbundenen Datenbanken (einschließlich der Quellendatenbank und der Testdatenbanken) zu einer Delphix-Instanz beträgt ungefähr 300.
Verkürzung der Zeit für die Bereitstellung der Basis auf dem Stand. Anstelle vieler Stunden Routinebetrieb, um ein Backup einer bestimmten Version auf einen Ständer zu rollen, müssen Sie 3 Tasten drücken. Für diejenigen, die es gewohnt sind, in der Konsole zu arbeiten oder eine leistungsstarke API zu verwenden, gibt es sowohl CLI als auch API.
Verkürzung der Zeit für die Aktualisierung der Datenbank an den Ständen. Die Delphix-Engine unterstützt die ständige Synchronisation mit der Quellendatenbank (unter Verwendung der Archivprotokolle / Transaktionsprotokolle der Datenbank), und alle Änderungen aus dieser Datenbank können an verbundene VDBs weitergegeben werden.
Wie ist das technisch umgesetzt?
Das Delphix-Dateisystem enthält Datenblöcke (die unterste Ebene im Bild). Delphix erstellt B-Tree-Indizes, die auf diese Datenblöcke verweisen. Darüber hinaus ist der Wurzelblock des Index (der oberste) entscheidend. Dies ist der Zustand des Systems zum Zeitpunkt t0.
Stellen Sie sich nun vor, dass die modifizierten Datenblöcke b 'und c' angekommen sind und das System in den Zustand t1 übergegangen ist.
Delphix schleift keine alten Datenblöcke, sondern erstellt neue Blöcke nebeneinander. Um darauf zugreifen zu können, wird ein neuer Stammindexblock erstellt, der auf die neuen Datenblöcke verweist.
Dank der Indizes verfügt das System über zwei Versionen, von denen jede durch Verbinden mit dem entsprechenden Wurzelblock des Index t0 oder t1 betrieben werden kann.
Wenn das System beispielsweise mit dem Indexblock t1 verbunden ist, sieht es folgendermaßen aus:
Wenn Delphix eine Sicherung aus einer Quellendatenbank erstellt, werden solche Indizes in sich selbst erstellt. Es wendet automatisch inkrementelle Sicherungen auf das Original an, reibt jedoch keine Blöcke, sondern schreibt sie nebeneinander und erstellt neue Stammblöcke des Index.
Daher ist es immer möglich, zu einem bestimmten Zeitpunkt einen Datenbank-Snapshot abzurufen und eine VDB daraus bereitzustellen.
Auf YouTube gibt
es ein Video , das von Jonathan Lewis (dem erstklassigen Optimierungs- / Optimierungs- und Leistungsproblemautor von Oracle, Autor des guten Buches "Kostenbasierte Oracle-Grundlagen" und vielen weiteren nützlichen Büchern) erklärt wird.
Wie viel bequemer ist es als eine benutzerdefinierte Lösung (z. B. Skripte)?
Mit genügend Leuten, Zeit, Geld und Geduld können Sie alles mit Skripten schreiben. Die Kosten für die Unterstützung und viele andere Nuancen hängen jedoch direkt von der Komplexität einer solchen Entscheidung ab. Ein Unternehmen, mit dem wir zusammenarbeiten und befreundet sind, hat die Vor- und Nachteile abgewogen, die Stärken seiner IT-Abteilung bewertet und beschlossen, das Delphix-Analogon unabhängig auf Skripten und ZFS zu schreiben. Wenn Sie eine spezielle Lösung für ein System benötigen, können Sie sich auf Ihre Fähigkeiten verlassen. Ja, das ist schon da, wir selbst lieben es, Skripte zu schreiben ...
Irgendwo oben, was das Maskieren betrifft, was ist das?
Ein zusätzliches Datenmaskierungswerkzeug kann zur Delphix-Kernfunktionalität hinzugefügt werden. Sie können damit persönliche Daten verschlüsseln, z. B. Kreditkartennummern, Namen, Nachnamen usw. Eine sehr beliebte Funktion bei Banken und solchen, die alle Anforderungen von 149- und 152- erfüllen.
In der Regel benötigen Entwickler Daten aus einer produktiven Datenbank, wenn dies geschieht:
- Entwicklung einer neuen Anwendung,
- Unterstützung oder Verbesserung der Anwendung,
- Funktionsprüfung an Prüfständen.
Es ist nicht gut, jemanden direkt mit einer Industriedatenbank zu verbinden, aber Sie müssen irgendwie arbeiten und jedem, der sie benötigt, die industrielle Datenstruktur und das industrielle Datenvolumen die Möglichkeit geben, zu arbeiten. Noch wichtiger ist, mit einem industriellen „Profil“ von Daten. Angesichts der Tatsache, dass produktive Daten häufig vertrauliche Informationen enthalten, einschließlich personenbezogener Daten, ist es normalerweise unmöglich, diese in den Testbereich zu übertragen oder an Entwickler weiterzugeben.
Sie können einen separaten detaillierten Artikel darüber schreiben. Kurz gesagt, die Datenmaskierungsoption verbirgt oder ändert Daten, die nicht außerhalb des kontrollierten Bereichs des Industriekreises verschoben werden können, und ermöglicht es Ihnen, bereits maskierte Daten in Entwicklungs- und Testumgebungen zu übertragen.
Masking Engine (Masking Engine) löscht oder ändert die geschützten Informationen und hinterlässt ein Analogon der Daten, sodass Entwickler und Tester mit ähnlichen Daten arbeiten können. Die Datenmaskierung wird von der Delphix Masking Engine-Komponente implementiert.
Warum nicht IBM Optim / Oracle Masking / Analoga als Maskierung verwenden?
Natürlich gibt es auch andere Lösungen mit ähnlichen Funktionen. Zum Beispiel Oracle Masking, Informatica Masking usw. Wie bei Delphix selbst können Sie außerdem Ihre eigenen Maskierungsskripte schreiben. Ein wesentlicher gemeinsamer Nachteil ist jedoch die Notwendigkeit, eine große Anzahl teurerer Lizenzen / zusätzlicher Software zu erwerben.
- Für Oracle bedeutet dies die Lizenzierung jedes Servers mit Maskierung (dies ist die Lizenzierung von Masking and Database Gateway für Nicht-Oracle-Datenbanken).
- Informatica verfügt über PowerCenter ETL, Designer und Lifecycle Management. Und wenn Sie es an SAP befestigen möchten, müssen Sie es trotzdem bezahlen.
- Skripte - bei Skripten hängt alles von Ihrem Vertrauen in sich selbst und dem Vertrauen Ihrer Führung in Sie ab.
Um den Text nicht zu überladen, werden wir in einem separaten Artikel eine detailliertere Darstellung der Prinzipien der Maskierungsfunktion hinterlassen.
Wenn Sie Beispiele für andere Ihnen bekannte Maskierungswerkzeuge nennen können, die Sie in der Praxis verwendet haben und die das Problem lösen, wäre es großartig, wenn Sie in den Kommentaren ein paar Worte von Ihnen dazu sehen würden.
Ich möchte immer noch mein Maskierungsskript schreiben ...
Es ist möglich, ein selbst geschriebenes zu verwenden, aber man muss verstehen, dass das Ausführen von Skripten in einer Testdatenbank mit einer hohen Wahrscheinlichkeit von beispielsweise 5 TB mit hoher Wahrscheinlichkeit sehr lange dauern wird. Und das Schreiben von Algorithmen und Skripten selbst kann noch länger dauern.
Wenn es notwendig ist, ein neues Problem schnell und garantiert zu lösen und "wie eine Uhr" funktionieren soll, funktioniert die Maskierung "out of the box" für Delphix. Das Skript muss höchstwahrscheinlich für eine neue Aufgabe (Datenstruktur, Datenbanktyp usw.) „fertig“ sein.
Was die Delphix Masking Engine von der Stange kann- Sichere Suche - ersetzt die Originaldaten, z. B. "Vasya" -> "Petya". Bei diesem Algorithmus können Kollisionen auftreten, wenn die ersetzten Daten identisch sind.
- Segmentierte Zuordnung - unterteilt den Wert in mehrere Segmente und ersetzt diese Segmente einzeln. Beispielsweise kann die Nummer NM831026-04 in drei Teile unterteilt werden, von denen die Buchstaben NM nicht maskieren. Der Wert nach der Transformation ist NM390572-50. Dies gilt für das Maskieren von Spaltenwerten, die als Primärschlüssel verwendet werden, oder für eindeutige Spalten.
- Mapping-Algorithmus - Für seine Funktionsweise muss die genaue Übereinstimmung der ursprünglichen und ersetzten Werte angegeben werden. In diesem Fall gibt es keine Kollisionen, weil Der ursprüngliche Wert wird direkt durch den spezifischen Wert ersetzt. Beispielsweise wird der Name "Alexey" immer durch "Nikita" ersetzt.
- Binärer Suchalgorithmus - ersetzt den Clob / Blob-Wert in Spalten usw. Delphix weiß nicht, wie der Wert in Bildern / Texten ersetzt werden soll. Stattdessen können Sie ein Ersatzbild oder einen Ersatztext auswählen.
- Der Tokenisierungsalgorithmus ist eine Art der Datenverschlüsselung, bei der die Eingabedaten in Token konvertiert werden, die ähnliche Attribute (Zeichenfolgenlänge, Digital- oder Textwert) aufweisen, jedoch keine Bedeutung haben. Mithilfe von Algorithmen können Sie diese Daten verschlüsseln / entschlüsseln. Sie können beispielsweise Daten maskieren und an den Produktanbieter senden. Er analysiert sie und markiert die falschen Daten (z. B. falsche Füllung) und sendet sie dann zurück.
- Der Min-Max-Algorithmus ist ein Algorithmus, der alle Werte in einer Spalte mittelt, um die Maximal- und Minimalwerte (z. B. Gehälter) auszublenden.
- Datenbereinigungsalgorithmus - maskiert keine Daten, standardisiert sie jedoch. Sie können beispielsweise Regeln festlegen, nach denen die Werte von Ru, Rus, R in ein einzelnes RU-Format konvertiert werden.
Ok Mir wurde bereits klar, dass wir Delphix brauchen. Lange vorstellen? Wie sieht der Prozess aus?
Die Umsetzung beginnt mit einem Pilotprojekt. Zunächst wird ein Interview mit dem Kunden geführt, und für die vollständige Interaktion benötigen wir nur einen verantwortlichen Techniker (DBA oder Systemadministrator). Wir haben einen speziellen Fragebogen, mit dem Sie die Merkmale der Computerumgebung des Kunden herausfinden können.
Wir benötigen auch Informationen zu Systemen, die möglicherweise für die Virtualisierung in Frage kommen (entweder separate Datenbanken oder ganze SAP / Dynamics-Systeme). Gemeinsam bestimmen wir im Dialogmodus die Testkriterien, Erfolgskriterien und den Zeitpunkt des Pilotprojekts. Während der Kunde die Infrastruktur für den Piloten vorbereitet, erhalten wir vom Anbieter eine Testlizenz.
Unsere Ingenieure kommen zum Kunden, richten die Engine ein und verbinden die Quellendatenbank damit. Abhängig von den internen Regeln des Kunden in Bezug auf Informationssicherheit, welcher Quelle verbunden ist und der Verfügbarkeit seines technischen Teams kann die Erstbereitstellung und Konfiguration nicht von uns, sondern vom eigenen IT-Team des Kunden entweder unter unserer Aufsicht oder gemäß den Anweisungen des Anbieters mit durchgeführt werden unser Rat.
Wenn der Kunde den Wunsch hat, sein Team zu pumpen (und normalerweise besteht ein solcher Wunsch), führen wir Schulungen für Infrastrukturadministratoren und DBA durch. Zu Schulungszwecken stellen wir eine oder mehrere virtuelle Datenbanken mit ihnen bereit und führen alle Skripte aus.
In der Regel dauert der Pilot 2 bis 4 Wochen, wenn die internen Prozesse des Kunden die erforderliche Infrastruktur schnell vorbereiten können. In der Regel ist es während dieser Zeit auf realen Systemen möglich, alle Funktionen der Software zu testen und das Ausmaß der daraus resultierenden Vorteile zu bewerten.
Basierend auf den Testergebnissen wird ein Bericht erstellt, in dem alle Pilotprozesse analysiert, die Zahlen „was-it-come“ angegeben und eine Schlussfolgerung zur Zweckmäßigkeit einer längerfristigen Beziehung gezogen werden. Wenn das Management eine positive Entscheidung trifft, dauert der Prozess des „Übergangs zu Industrieschienen“ mehrere Stunden Während des Pilotierungsprozesses werden die Hauptschwierigkeiten normalerweise überwunden, und die "Amortisation" und die "Wirkung des Projekts" beginnen buchstäblich am nächsten Tag.
Gibt es negative Punkte? Was magst du nicht?
Ehrlich gesagt ist das Produkt nicht billig. Bei Torrents funktioniert dies nicht. Um die Lösung verwenden zu können, müssen Sie dem Anbieter eine jährliche Gebühr zahlen. Lizenzierungsschema - für die Menge der virtualisierten Daten.
Der maximale Nutzen der Verwendung von Delphix wird erzielt, wenn Sie eine große Anzahl von Kopien großer Volumina verschiedener Datenbankquellen erstellen müssen (die Anzahl der Datenbankquellen> = 1), um beispielsweise eine Reihe typischer Stände für Analysten, einen Testdienst oder einen Supportdienst zum Spielen von Fehlern zu erstellen Produktion usw., bei der Sie Kopien entweder einer Kampfbasis mit maskierten Daten oder Kopien einer sehr großen Testbasis benötigen, und zwar schnell und für einen relativ kurzen Zeitraum (Klon erstellt, Problem gelöst, Klon getötet, frisch gemacht und usw.).
Wenn dies Ihr Fall ist, ziehen Sie die Gesamtbetriebskosten in Betracht (wir können Ihnen dabei helfen, es richtig zu machen) und entscheiden Sie, ob es zu Ihnen passt oder nicht. Ansonsten ist es wirklich ein sehr interessantes Box-Tool (das ist wichtig!), Das Aufgaben löst, die aus technischer Sicht durchaus verständlich sind.Und wir haben auch freie Stellen. Abschließend möchten wir eine kleine Umfrage durchführen, um zu verstehen, wie dieses Tool für Sie nützlich sein kann.