Lorsque 2 x 3 = 2, ou encore une fois sur la virtualisation des données

Bonjour à tous! Avez-vous entendu parler du phénomène Baader-Meinhof ? Il s'agit d'une distorsion cognitive amusante, qui s'est avérée assez intéressante à observer par l'exemple. En 2016, un article de synthèse sur la technologie Delphix a été publié sur Habré. Comme toute bonne théorie que vous consommez en tonnes chaque jour pour être au courant, vous oubliez complètement 80%, sans la mettre en pratique. Cela m'est arrivé aussi - j'ai rapidement oublié ce poste et Delphix, jusqu'à il y a environ un an, grâce à mon service, j'ai rencontré les auteurs du produit et le produit lui-même. Ayant l'opportunité d'étudier le sujet non pas en théorie, mais en pratique, LANIT a plongé dans cette technologie si profondément que dans cet article je voudrais systématiser les connaissances acquises et analyser l'expérience acquise.

Image reproduite avec l'aimable autorisation des résultats de recherche Yandex.

Qu'est-ce que Delphix?


Delphix est un logiciel fonctionnant sur une machine virtuelle avec le SE Solaris, auquel vous devez connecter des systèmes de stockage pour stocker des copies de la base de données afin de fonctionner correctement. Le logiciel est livré sous la forme d'une image prête à l'emploi d'une machine virtuelle (appliance virtuelle). L'image peut être déployée sur VmWare ou dans l'infrastructure cloud AWS / Azure. Pour les tests, en principe, vous pouvez le monter localement sur votre poste de travail.

Si elle est résumée très fortement et très brièvement, Delphix virtualise les données et fournit des bases de données prêtes à l'emploi avec lesquelles vous pouvez travailler. Il prend une copie de la base de données source (appelée dSource) et la place dans son stockage (la partition VM locale, qui est connectée au stockage externe). Grâce à des algorithmes, il réduit le volume de cette copie à 60% (selon les types de données, bien sûr). Ensuite, à partir de la même copie, vous pouvez déployer cette base de données sur d'autres hôtes en quelques minutes. Ces bases de données sont appelées Virtual Database - VDB. Les fichiers de base de données sont montés sur les hôtes cibles via NFS et ne prennent donc pas de place sur eux. Autrement dit, ayant 1 dSource par 500 Go et 5 VDB, l'espace total occupé par ce cas sur le stockage sera d'environ 350 Go (ou plus).

S'agit-il d'un processus de copie unique?


Après l'étape d'initialisation et d'amorçage de la base de données source dans Delphix, le moteur Delphix maintient une synchronisation constante avec cette base de données en fonction de la stratégie que vous choisissez, par exemple, une synchronisation quotidienne ou toutes les heures, ou quelque temps après les transactions.
La vitesse de création de la première copie de la base de données dépend directement de la bande passante réseau entre la base de données source et Delphix, car la sauvegarde est transmise sur le réseau.

Après la liaison à la base de données source, Delphix prend en charge le soi-disant TimeFlow (Time Machine) de la base de données source, une fonctionnalité similaire au contrôle de version. Toute version de la base de données dans cet intervalle de temps peut être connectée à la base de données cible. Pourquoi? Par exemple, pour enquêter sur des incidents.

Figure 1: La possibilité de déployer VDB à tout moment ...

Figure 2: ... soit sur un instantané de base de données créé manuellement

Les VDB sont à un niveau commun, donc ni les utilisateurs ni les administrateurs n'ont besoin de ressources de stockage supplémentaires.

Vous pouvez rapidement connecter n'importe quelle version de ce VDB à la base de données cible. Les VDB sont indépendants les uns des autres et sont en mode lecture-écriture. Les nouvelles modifications apportées à VDB sont écrites dans de nouveaux blocs sur le magasin Delphix.

Vous pouvez créer des VDB basés sur un autre VDB et le mettre à jour ou revenir en arrière si nécessaire.

Comment l'application réagira-t-elle à cela?


Vous pouvez travailler avec ces VDB "comme avec une base de données classique". L'application ne remarquera rien. Il est clair que les fichiers binaires du SGBD doivent déjà être installés sur ces serveurs, car seuls les fichiers de base de données eux-mêmes sont clonés.

Ces VDB sont principalement utilisés pour les tests fonctionnels ou comme bacs à sable. Dans la plupart des cas, cela ne vaut pas la peine de piloter la charge sur VDB, car en raison de la connexion de la base de données via NFS, l'interprétation des résultats de ces tests de charge sera assez problématique. Bien que si vous avez une base de données dans Prom fonctionne avec un stockage via NFS, vous pouvez probablement le faire.

Garanti, vous pouvez compter sur un fonctionnement stable si vous utilisez Oracle (y compris ceux avec prise en charge multi-locataire et RAC), MS SQL, SAP ASE, IBM DB2, Oracle EBS, SAP HANA. Ces configurations sont prises en charge par le fournisseur.

De plus, vous pouvez virtualiser des fichiers normaux (pensez à n'importe quelle base de données, mais avec certaines limitations de fonctionnalités). Par exemple, en tant que preuve de concept pour des tests internes, nous avons virtualisé des instances PostgreSQL d'un de nos projets. Je ne dirai pas ce qui s'est passé une ou deux fois, mais au final, le schéma avec PostgreSQL a fonctionné, même si le fournisseur ne prend pas officiellement en charge PostgreSQL pour le moment.

Pourquoi est-ce nécessaire si des fonctionnalités similaires sont intégrées au système de stockage?


Il va sans dire que le système de stockage dispose depuis longtemps d'une fonctionnalité pour les instantanés et l'allocation dynamique. Cependant, si une base de données productive et des stands sont situés sur des systèmes de stockage de différents fournisseurs, une telle solution ne fonctionnera pas. Et tous les systèmes de stockage ne peuvent pas le faire.

Grâce à Delphix, vous pouvez déployer avec succès des environnements de test sur des systèmes de stockage obsolètes et obsolètes sur le plan technologique qui ont été mis hors service. En conséquence, nous réduisons considérablement le coût de stockage des données de test.

Il est également possible d'obtenir une copie physique de la base de données à partir de cet instantané, par exemple, pour créer une réserve ou pour transférer la base de données vers un autre système de stockage.

Un élément important est le libre-service. En utilisant l'interface graphique Delphix JetStream, même les développeurs / testeurs non formés peuvent restaurer / mettre à jour les versions des bases de données de leurs stands par eux-mêmes et ne pas tirer les administrateurs plusieurs fois par semaine.

Figure 3. À l'aide de JetStream, la figure montre la durée de vie du brunch de la version principale de VDB, créant des instantanés de la version et quelques renvois à ces instantanés.

Delphix prend en charge la synchronisation continue de VDB avec une base de données productive à l'aide de fichiers journaux d'archivage / transactionnels. Pour une implémentation similaire basée sur le stockage, vous devrez faire ... vingt instantanés par jour.

Comme Oracle Enterprise Manager sait également cloner des bases de données


Oui, c'est possible, mais seul Oracle DBMS est pris en charge. Par conséquent, il ne peut pas être utilisé pour le reste du SGBD.

La question clé est pourquoi fait-elle un profit?


Tout d'abord, découvrons à qui et en raison de quoi Delphix peut être bénéfique. Le profit est le suivant:

  • rĂ©duction du temps consacrĂ© Ă  l'approbation des nouveaux stands,
  • rĂ©duction de l'espace de stockage utilisĂ© pour les bancs d'essai,
  • la possibilitĂ© d'utiliser des systèmes de stockage non spĂ©cialisĂ©s de diffĂ©rents fournisseurs,
  • rĂ©duction du temps de dĂ©ploiement de la base sur le stand,
  • rĂ©duction du temps de mise Ă  jour de la base de donnĂ©es sur les stands.

Maintenant brièvement pour chaque élément.

Réduction du temps consacré à la coordination des nouveaux stands. Oui, dans certaines des entreprises avec lesquelles nous avons travaillé, accepter de déployer un nouveau stand a pris deux semaines. Et s'il n'y a pas de ressources nécessaires ou si l'organisation est très solide et très bureaucratisée, alors, disons soigneusement, les termes sont appelés «à partir d'un mois».

Espace de stockage réduit pour les bancs d'essai. Selon les fournisseurs de matériel, le coût de maintenance de 1 To de données sur le stockage est de 800 euros par an. Les chiffres sont approximatifs, mais l'ordre l'est. Si vous avez une base de données productive de 2 To et 3 bancs de test avec VDB, le volume total occupé par le delfix sera d'environ 2 To. Ces indicateurs sont atteints du fait que pour toutes les bases de données de test, un seul service commun est requis, ce qui, dans le cas général, n'occupera pas une base de données beaucoup plus productive. Bien sûr, tout dépend du nombre de modifications apportées aux bases de données de test. Plus de changements - les stockages «gonfleront» davantage en raison du stockage des deltas. Pour imaginer cela, vous pouvez imaginer un diagramme avec des instantanés de machines virtuelles.

Le nombre total de bases de données connectées possibles (y compris la base de données source et les bases de données de test) à une instance Delphix est d'environ 300.

Réduction du temps de déploiement de la base sur le stand. Au lieu de plusieurs heures de fonctionnement de routine pour rouler une sauvegarde d'une certaine version sur un support, vous devez appuyer sur 3 boutons. Pour ceux qui ont l'habitude de travailler dans la console ou d'utiliser une API puissante, il y a respectivement CLI et API.

Réduction du temps de mise à jour de la base de données sur les stands. Le moteur Delphix prend en charge une synchronisation constante avec la base de données source (en utilisant les journaux d'archivage / journaux de transactions de la base de données), et toutes les modifications de cette base de données peuvent être propagées aux VDB connectés.

Comment est-ce techniquement mis en œuvre?


Le système de fichiers Delphix contient des blocs de données (le niveau le plus bas de l'image). Delphix crée des index B-tree qui pointent vers ces blocs de données. De plus, le bloc racine de l'index (le plus haut) est déterminant. Il s'agit de l'état du système à l'instant t0.


Imaginez maintenant que les blocs de données modifiés b 'et c' sont arrivés et que le système est passé à l'état t1.

Delphix ne broie pas les anciens blocs de données, mais crée de nouveaux blocs côte à côte. Afin d'y accéder, un nouveau bloc d'index racine est créé qui pointe vers les nouveaux blocs de données.


Grâce aux index, le système a deux versions, chacune pouvant être exploitée en se connectant au bloc racine correspondant de l'index t0 ou t1.

Par exemple, lorsqu'il est connecté au bloc d'index t1, le système ressemble à ceci:


Lorsque Delphix prend une sauvegarde d'une base de données source, il crée de tels index en lui-même. Il applique automatiquement des sauvegardes incrémentielles à l'original, mais ne frotte pas les blocs, mais les écrit côte à côte et crée de nouveaux blocs racine de l'index.

Par conséquent, il est toujours possible d'obtenir un instantané de base de données à un moment précis et de déployer un VDB à partir de celui-ci.

Il y a une vidéo sur YouTube expliquée par Jonathan Lewis (optimisation / optimiseur haut de gamme d'Oracle et problèmes de performance auteur du bon livre sur les principes de base basés sur les coûts d'Oracle et de nombreux autres livres utiles).

Est-ce beaucoup plus pratique qu'une solution personnalisée (scripts, par exemple)?


Avec suffisamment de personnes, de temps, d'argent et de patience, vous pouvez tout écrire avec des scripts. Cependant, le coût de son support et de nombreuses autres nuances dépendra directement de la complexité d'une telle décision. Une entreprise avec laquelle nous travaillons et sommes amis a pesé le pour et le contre, évalué les forces de son service informatique et décidé d'écrire l'analogue Delphix de manière indépendante sur des scripts et ZFS. C’est tout à fait une option, si vous avez besoin d’une solution spécialisée pour un seul système, vous avez confiance en vos capacités. Oui, c'est déjà là, nous aimons nous-mêmes écrire des scripts ...

Quelque part au-dessus, sur le masquage, qu'est-ce que c'est?


Un outil de masquage des données supplémentaire peut être ajouté aux fonctionnalités de base de Delphix. Il vous permettra de crypter des données personnelles, par exemple, les numéros de carte de crédit, les noms, prénoms, etc. Une fonction très populaire parmi les banques et celles qui remplissent toutes les exigences de 149- et 152-.

En règle générale, les développeurs ont besoin des données d'une base de données productive quand cela se produit:

  • dĂ©velopper une nouvelle application,
  • support ou amĂ©lioration de l'application,
  • tests fonctionnels sur bancs de test.

Il n'est pas bon de connecter directement quelqu'un à une base de données industrielle directement, mais vous devez travailler d'une manière ou d'une autre et donner à tous ceux qui en ont besoin la structure de données industrielle et le volume de données industrielles la possibilité de travailler. Plus important encore, avec un «profil» industriel de données. Étant donné que les données productives contiennent souvent des informations confidentielles, y compris des données personnelles, leur transfert vers la zone de test ou leur transmission aux développeurs est généralement une tâche impossible.

Vous pouvez écrire un article détaillé séparé à ce sujet, mais si brièvement, l'option de masquage des données masque ou modifie les données qui ne peuvent pas être déplacées en dehors de la zone contrôlée du circuit industriel et vous permet de transférer des données déjà masquées vers des environnements de développement et de test.

Le moteur de masquage (moteur de masquage) supprime ou modifie les informations protégées et laisse un analogue des données, permettant ainsi aux développeurs et aux testeurs de travailler avec des données similaires. Le masquage des données est implémenté par le composant Delphix Masking Engine.

Pourquoi ne pas utiliser IBM Optim / Oracle Masking / analogues comme masquage?


Bien sûr, il existe d'autres solutions qui ont des fonctionnalités similaires. Par exemple, Oracle Masking, Informatica Masking, etc. De plus, comme dans le cas de Delphix lui-même, vous pouvez écrire vos propres scripts de masquage. Cependant, un inconvénient commun important est la nécessité d'acheter un grand nombre de licences / logiciels supplémentaires plus chers.

  • Pour Oracle, il s'agit de la licence de chaque serveur avec masquage (il s'agit de la licence de Masking and Database Gateway pour les bases de donnĂ©es non Oracle).
  • Informatica dispose de PowerCenter ETL, Designer et Lifecycle Management. Et si vous souhaitez le fixer Ă  SAP, vous devez toujours le payer.
  • Scripts - avec les scripts, tout dĂ©pend de votre foi en vous-mĂŞme et de la confiance en vous de votre leadership.

Afin de ne pas surcharger le texte, nous laisserons une illustration plus détaillée des principes de la fonction de masquage dans un article séparé.

Si vous pouvez donner des exemples d'autres outils de masquage connus que vous avez utilisés dans la pratique et qui résolvent le problème, ce serait formidable de voir quelques mots de vous à leur sujet dans les commentaires.

Je veux toujours écrire mon script de masquage ...


Il est possible d'utiliser un script auto-écrit, mais il faut comprendre qu'avec un degré élevé de probabilité, l'exécution de scripts sur une base de données de test, par exemple 5 To, prendra très longtemps. Et l'écriture des algorithmes et des scripts eux-mêmes peut durer encore plus longtemps.

Lorsqu'il est nécessaire de résoudre rapidement et de manière garantie un nouveau problème et qu'il devrait fonctionner «comme une horloge», le masquage «prêt à l'emploi» pour Delphix fonctionnera. Le script, très probablement, devra être «terminé» pour une nouvelle tâche (structure de données, type de base de données, etc.).

Ce que le moteur de masquage Delphix prĂŞt Ă  l'emploi peut faire
  • Recherche sĂ©curisĂ©e - remplace les donnĂ©es d'origine, par exemple, «Vasya» -> «Petya». Dans cet algorithme, des collisions peuvent se produire lorsque les donnĂ©es remplacĂ©es sont identiques.
  • Mappage segmentĂ© - divise la valeur en plusieurs segments et remplace ces segments individuellement. Par exemple, le nombre NM831026-04 peut ĂŞtre divisĂ© en trois parties, dont les lettres NM ne masquent pas, la valeur après transformation est NM390572-50. Cela est vrai pour le masquage des valeurs de colonne utilisĂ©es comme clĂ© primaire ou pour des colonnes uniques.
  • Algorithme de cartographie - pour son fonctionnement, il est nĂ©cessaire d'indiquer la correspondance exacte des valeurs d'origine et remplacĂ©es. Dans ce cas, il n'y aura pas de collisions, car la valeur d'origine est directement remplacĂ©e par la valeur spĂ©cifique. Par exemple, le nom «Alexey» sera toujours remplacĂ© par «Nikita».
  • Algorithme de recherche binaire - remplace la valeur clob / blob dans les colonnes, etc. Delphix ne sait pas comment remplacer la valeur dans les images / textes, mais Ă  la place vous pouvez choisir une image ou un texte de remplacement.
  • L'algorithme de tokenisation est un type de cryptage des donnĂ©es dans lequel les donnĂ©es d'entrĂ©e sont converties en jetons qui ont des attributs similaires (longueur de chaĂ®ne, valeur numĂ©rique ou texte), mais ils n'ont aucune signification. En utilisant des algorithmes, vous pouvez crypter / dĂ©crypter ces donnĂ©es. Par exemple, vous pouvez masquer les donnĂ©es et les envoyer au fournisseur du produit. Il les analysera et marquera les donnĂ©es incorrectes (par exemple, un remplissage incorrect), puis les renverra.
  • Min Max Algorithm est un algorithme qui fait la moyenne de toutes les valeurs d'une colonne pour masquer les valeurs maximale et minimale (par exemple, les salaires).
  • Algorithme de nettoyage des donnĂ©es - ne masque pas, mais normalise les donnĂ©es. Par exemple, vous pouvez dĂ©finir des règles selon lesquelles les valeurs de Ru, Rus, R sont converties en un seul format RU.

Ok J'ai déjà réalisé que nous avions besoin de Delphix. Introduire depuis longtemps? À quoi ressemble le processus?


La mise en œuvre commence par un projet pilote. Tout d'abord, un entretien est mené avec le client, et ici, pour une interaction complète, nous n'aurons besoin que d'un seul ingénieur responsable (DBA ou administrateur système). Nous avons un questionnaire spécialisé qui permet de connaître les caractéristiques de l'environnement informatique du client.

Nous aurons également besoin d'informations sur les systèmes susceptibles d'être candidats à la virtualisation (bases de données distinctes ou systèmes SAP / Dynamics entiers). Ensemble, nous, en mode dialogue, déterminons les critères de test, les critères de réussite et le timing du projet pilote. De plus, pendant que le client prépare l'infrastructure pour le pilote, nous recevons une licence de test du fournisseur.

Nos ingénieurs se rendent sur le site du client, configurent le moteur et y connectent la base de données source. En fonction des règles internes du client en matière de sécurité des informations, quelle source est connectée et de la disponibilité de son équipe technique, le déploiement et la configuration initiaux peuvent être effectués non par nous, mais par la propre équipe informatique du client, soit sous notre supervision, soit selon les instructions du vendeur nos conseils.

De plus, si le client a le désir de pomper son équipe (et généralement il y en a un), nous organisons une formation pour les administrateurs d'infrastructure et DBA. À des fins de formation, nous déployons une ou plusieurs bases de données virtuelles avec elles et exécutons tous les scripts.

En règle générale, le pilote dure de 2 à 4 semaines, si les processus internes du client peuvent rapidement préparer l'infrastructure nécessaire. En règle générale, pendant ce temps sur des systèmes réels, il est possible de tester toutes les fonctionnalités du logiciel et d'évaluer l'étendue des avantages qui en résultent.

Sur la base des résultats des tests, un rapport est compilé dans lequel tous les processus pilotes sont analysés, les chiffres «était-ce-devenu» sont donnés et une conclusion est donnée sur l'opportunité d'une relation à plus long terme. Si la direction prend une décision positive, le processus de «transition vers les rails industriels» est une affaire de plusieurs heures, au cours du processus de pilotage, les principales difficultés sont généralement surmontées et le «retour sur investissement» et «l'effet du projet» commencent littéralement le lendemain.

Y a-t-il des points négatifs? Qu'est-ce que vous n'aimez pas?


Franchement, le produit n'est pas bon marché. Cela ne fonctionnera pas sur les torrents, et pour utiliser la solution, vous devrez payer une redevance annuelle au vendeur. Système de licence - pour la quantité de données virtualisées.

L'avantage maximal de l'utilisation de Delphix est obtenu lorsque vous devez créer un grand nombre de copies de gros volumes de sources de base de données différentes (le nombre de sources de base de données> = 1), par exemple, pour créer un tas de stands typiques pour les analystes, un service de test, un service de support pour jouer les défauts avec production, etc., où vous avez besoin de copies d'une base de combat avec des données masquées, ou des copies d'une très grande base de test, et rapidement et pendant une période de temps relativement courte (créé un clone, résolu un problème, tué un clone, rendu frais et etc.).

Si tel est votre cas, envisagez le TCO (nous pouvons vous aider à le faire correctement) et décidez si cela vous convient ou non. Sinon, c'est vraiment un outil en boîte très intéressant (c'est important!) Qui résout des tâches assez compréhensibles d'un point de vue technique.


En conclusion, nous aimerions mener une petite enquĂŞte pour comprendre comment cet outil peut vous ĂŞtre utile.

Source: https://habr.com/ru/post/fr416813/


All Articles