Hola a todos! ¿Has oído algo sobre el fenómeno
Baader-Meinhof ? Esta es una distorsión cognitiva divertida que, como resultó, es bastante interesante de observar con el ejemplo. En 2016, se publicó un
artículo de revisión sobre la tecnología Delphix en Habré. Como cualquier buena teoría que consuma en toneladas todos los días para estar al tanto, olvida por completo el 80 por ciento, sin ponerlo en práctica. También me pasó a mí: me olvidé rápidamente de esa publicación y de Delphix, hasta hace aproximadamente un año, como resultado de mi servicio, me encontré con los autores del producto y el producto en sí. Al tener la oportunidad de estudiar el tema no en teoría, sino en la práctica,
LANIT se sumergió tan profundamente en esta tecnología que en este artículo me gustaría sistematizar el conocimiento adquirido y analizar la experiencia adquirida.
Imagen cortesía de los resultados de búsqueda de Yandex.¿Qué es Delphix?
Delphix es un software que se ejecuta en una máquina virtual con el sistema operativo Solaris, al que debe conectar los sistemas de almacenamiento para almacenar copias de la base de datos para que funcionen correctamente. El software se entrega en forma de una imagen preparada de una máquina virtual (dispositivo virtual). La imagen se puede implementar en VmWare o en la infraestructura de nube de AWS / Azure. Para las pruebas, en principio, puede aumentarlo localmente en su estación de trabajo.
Si se resume muy fuerte y brevemente, Delphix virtualiza los datos y proporciona bases de datos listas para usar con las que puede trabajar. Toma una copia de la base de datos de origen (llamada dSource) y la coloca en su almacenamiento (la partición local de VM, que está conectada al almacenamiento externo). Usando algoritmos, reduce el volumen de esta copia al 60% (dependiendo de los tipos de datos, por supuesto). Luego, desde la misma copia, puede implementar esta base de datos en otros hosts en unos minutos. Dichas bases de datos se denominan Base de datos virtual - VDB. Los archivos de la base de datos se montan en los hosts de destino a través de NFS y, por lo tanto, no ocupan espacio en ellos. Es decir, con 1 dSource por 500 GB y 5 VDB, el espacio total ocupado por este caso en el almacenamiento será de aproximadamente 350 GB (más o menos).
¿Es este el proceso de copia única?
Después de la inicialización y el paso de arranque de la base de datos de origen en Delphix, el motor de Delphix mantiene una sincronización constante con esta base de datos en función de la política que elija, por ejemplo, sincronización diaria o cada hora, o algún tiempo después de las transacciones.
La velocidad de creación de la primera copia de la base de datos depende directamente del ancho de banda de la red entre la base de datos de origen y Delphix, ya que la copia de seguridad se transmite a través de la red.
Después de vincularse a la base de datos de origen, Delphix admite el llamado TimeFlow (máquina del tiempo) de la base de datos de origen, una funcionalidad similar al control de versiones. Cualquier versión de la base de datos dentro de este intervalo de tiempo se puede conectar a la base de datos de destino. Por qué Por ejemplo, para investigar incidentes.
Figura 1: La capacidad de implementar VDB en cualquier momento ...Figura 2: ... en una instantánea de base de datos creada manualmenteLos VDB están en un nivel común, por lo que ni los usuarios ni los administradores requieren recursos de almacenamiento adicionales.
Puede conectar rápidamente cualquier versión de este VDB a la base de datos de destino. Los VDB son independientes entre sí y están en modo de lectura-escritura. Los nuevos cambios que se realizan en VDB se escriben en nuevos bloques en la tienda Delphix.
Puede crear VDB basados en otro VDB y actualizarlo o revertirlo según sea necesario.
¿Cómo reaccionará la aplicación a esto?
Puede trabajar con tales VDB "como con una base de datos normal". La aplicación no notará nada. Está claro que los binarios DBMS ya deberían estar instalados en estos servidores, ya que solo los archivos de la base de datos están clonados.
Dichos VDB se utilizan principalmente para pruebas funcionales o como cajas de arena. En la mayoría de los casos, no vale la pena manejar la carga en VDB, porque debido a la conexión de la base de datos a través de NFS, interpretar los resultados de tales pruebas de carga será bastante problemático. Aunque si tiene una base de datos en Prom funciona con almacenamiento a través de NFS, entonces, probablemente pueda.
Garantizado, puede contar con una operación estable si está utilizando Oracle (incluidos aquellos con soporte para múltiples inquilinos y RAC), MS SQL, SAP ASE, IBM DB2, Oracle EBS, SAP HANA. Dichas configuraciones son compatibles con el proveedor.
Además, puede virtualizar archivos normales (considere cualquier base de datos, pero con algunas limitaciones de funcionalidad). Por ejemplo, como prueba de concepto para pruebas internas, virtualizamos instancias de PostgreSQL de uno de nuestros proyectos. No diré lo que sucedió una o dos veces, pero al final el esquema con PostgreSQL funcionó, a pesar de que el proveedor actualmente no admite oficialmente PostgreSQL.
¿Por qué es esto necesario si se incorpora una funcionalidad similar en el sistema de almacenamiento?
No hace falta decir que el sistema de almacenamiento tiene una funcionalidad para instantáneas y aprovisionamiento delgado durante mucho tiempo. Sin embargo, si una base de datos productiva y soportes se encuentran en sistemas de almacenamiento de diferentes proveedores, entonces tal solución no funcionará. Y no todos los sistemas de almacenamiento pueden hacer esto.
Con Delphix, puede implementar con bastante éxito entornos de prueba en sistemas de almacenamiento obsoletos y tecnológicamente obsoletos que han sido retirados del servicio. Como resultado, reducimos significativamente el costo de almacenar datos de prueba.
También es posible obtener una copia física de la base de datos de esta instantánea, por ejemplo, para crear un modo de espera o transferir la base de datos a otro sistema de almacenamiento.
Un componente importante es el autoservicio. Usando la GUI Delphix JetStream, incluso los desarrolladores / evaluadores no capacitados pueden revertir / actualizar las versiones de las bases de datos de sus stands por su cuenta y no atraer a los administradores varias veces a la semana.
Figura 3. Utilizando JetStream, la figura muestra la vida útil del brunch de la versión principal de VDB, creando instantáneas de la versión y un par de sobornos a estas instantáneas.Delphix admite la sincronización continua de VDB con una base de datos productiva utilizando archivos de registro / transaccionales. Para una implementación similar basada en el almacenamiento, tendrá que hacer ... veinte instantáneas por día.
Al igual que Oracle Enterprise Manager, también sabe cómo clonar bases de datos
Sí, puede, pero solo Oracle DBMS es compatible. Por lo tanto, no se puede usar para el resto del DBMS.
La pregunta clave es ¿por qué genera ganancias?
Primero, descubramos a quién y debido a qué Delphix puede ser beneficioso. El beneficio es el siguiente:
- reducción del tiempo dedicado a la aprobación de nuevos stands,
- reducción del espacio de almacenamiento utilizado para bancos de prueba,
- la capacidad de usar sistemas de almacenamiento no especializados de diferentes proveedores,
- reducción de tiempo para el despliegue de la base en el stand,
- reducción de tiempo para actualizar la base de datos en los stands.
Ahora brevemente para cada artículo.
Reducción del tiempo dedicado a la coordinación de nuevos stands. Sí, en algunas de las compañías con las que trabajamos, aceptar desplegar un nuevo stand tomó dos semanas. Y si no hay una cantidad necesaria de recursos o la organización se encuentra muy sólida y altamente burocratizada, entonces, digamos cuidadosamente, los términos se llaman "de un mes".
Espacio de almacenamiento reducido para bancos de prueba. Según los proveedores de hardware, el costo del servicio de 1 TB de datos en almacenamiento es de 800 euros por año. Los números son aproximados, pero el orden es. Si tiene una base de datos productiva de 2 TB de tamaño y 3 bancos de prueba con VDB, el volumen total ocupado por el delfix será de aproximadamente 2 TB. Tales indicadores se logran debido al hecho de que para todas las bases de datos de prueba solo se requiere un servicio común, que, en el caso general, ocupará una base de datos no mucho más productiva. Por supuesto, todo depende de la cantidad de cambios que se realicen en las bases de datos de prueba. Más cambios: los almacenamientos se “hincharán” más debido al almacenamiento de deltas. Para imaginar esto, puede imaginar un diagrama con instantáneas de máquinas virtuales.
El número total de posibles bases de datos conectadas (incluidas la base de datos de origen y las bases de datos de prueba) a una instancia de Delphix es de aproximadamente 300.
Reduciendo el tiempo para desplegar la base en el stand. En lugar de muchas horas de operación de rutina para rodar una copia de seguridad de una versión determinada en un soporte, debe presionar 3 botones. Para aquellos que están acostumbrados a trabajar en la consola o que usan una API potente, existen CLI y API, respectivamente.
Reducción del tiempo de actualización de la base de datos en los stands. El motor Delphix admite la sincronización constante con la base de datos de origen (utilizando los registros de archivo / registros de transacciones de la base de datos), y todos los cambios de esta base de datos pueden propagarse a VDB conectados.
¿Cómo se implementa esto técnicamente?
El sistema de archivos Delphix contiene bloques de datos (el nivel más bajo en la imagen). Delphix crea índices de árbol B que apuntan a estos bloques de datos. Además, el bloque raíz del índice (el más alto) es decisivo. Este es el estado del sistema en el momento t0.
Ahora imagine que los bloques de datos modificados b 'y c' han llegado y el sistema ha pasado al estado t1.
Delphix no tritura viejos bloques de datos, pero crea nuevos bloques uno al lado del otro. Para acceder a ellos, se crea un nuevo bloque de índice raíz que apunta a los nuevos bloques de datos.
Gracias a los índices, el sistema tiene dos versiones, cada una de las cuales puede operarse conectándose al bloque raíz correspondiente del índice t0 o t1.
Por ejemplo, cuando se conecta al bloque de índice t1, el sistema se verá así:
Cuando Delphix toma una copia de seguridad de una base de datos de origen, crea dichos índices dentro de sí mismo. Aplica automáticamente copias de seguridad incrementales al original, pero no elimina bloques, sino que los escribe uno al lado del otro y crea nuevos bloques raíz del índice.
Por lo tanto, siempre es posible obtener una instantánea de la base de datos en un momento específico e implementar un VDB a partir de ella.
Hay
un video en YouTube que explica Jonathan Lewis (autor de la optimización / optimizador y problemas de rendimiento de primer nivel de Oracle del buen libro de Fundamentos de Oracle basado en costos y muchos libros más útiles).
¿Cuánto más conveniente es que una solución personalizada (scripts, por ejemplo)?
Con suficiente gente, tiempo, dinero y paciencia, puedes escribir cualquier cosa con guiones. Sin embargo, el costo de su soporte y muchos otros matices dependerán directamente de la complejidad de tal decisión. Una compañía con la que trabajamos y somos amigos, sopesó los pros y los contras, evaluó las fortalezas de su departamento de TI y decidió escribir el análogo Delphix de forma independiente en scripts y ZFS. Es una gran opción, si necesita una solución especializada para un sistema, tiene confianza en sus habilidades. Sí, eso ya está allí, a nosotros mismos nos encanta escribir guiones ...
En algún lugar arriba, sobre el enmascaramiento, ¿qué es?
Se puede agregar una herramienta de enmascaramiento de datos adicional a la funcionalidad principal de Delphix. Le permitirá cifrar datos personales, por ejemplo, números de tarjetas de crédito, nombres, apellidos, etc. Una función muy popular entre los bancos y aquellos que cumplen con todos los requisitos de 149- y 152-.
Por lo general, los desarrolladores necesitan datos de una base de datos productiva cuando sucede:
- desarrollando una nueva aplicación,
- soporte o mejora de la aplicación,
- Pruebas funcionales en bancos de pruebas.
No es bueno conectar directamente a nadie a una base de datos industrial directamente, pero debe trabajar de alguna manera y de alguna manera proporcionar a todos los que lo necesitan la estructura de datos industriales y el volumen de datos industriales la oportunidad de trabajar. Más importante aún, con un "perfil" industrial de datos. Dado que los datos productivos a menudo contienen información confidencial, incluidos datos personales, transferirlos al área de prueba o dárselos a los desarrolladores suele ser una tarea imposible.
Puede escribir un artículo detallado por separado sobre esto, pero si es breve, la opción de enmascaramiento de datos oculta o modifica los datos que no se pueden mover fuera del área controlada del circuito industrial y le permite transferir datos ya enmascarados a entornos de desarrollo y prueba.
El motor de enmascaramiento (motor de enmascaramiento) elimina o modifica la información protegida y deja un análogo de los datos, lo que permite a los desarrolladores y evaluadores trabajar con datos similares. El componente Delphix Masking Engine implementa el enmascaramiento de datos.
¿Por qué no utilizar IBM Optim / Oracle Masking / analogos como enmascaramiento?
Por supuesto, hay otras soluciones que tienen una funcionalidad similar. Por ejemplo, Oracle Masking, Informatica Masking, etc. Además, como en el caso de Delphix, puedes escribir tus propios scripts de enmascaramiento. Sin embargo, un inconveniente común importante es la necesidad de comprar una gran cantidad de licencias más costosas / software adicional.
- Para Oracle, esta es la licencia de cada servidor con enmascaramiento (esta es la licencia de Masking and Database Gateway para bases de datos que no son de Oracle).
- Informatica cuenta con PowerCenter ETL, Designer y Lifecycle Management. Y si desea fijarlo a SAP, aún debe pagarlo.
- Guiones: con los guiones, todo depende de su fe en usted mismo y de la confianza en usted de su liderazgo.
Para no sobrecargar el texto, dejaremos una ilustración más detallada de los principios de la función de enmascaramiento en un artículo separado.
Si puede dar ejemplos de otras herramientas de enmascaramiento conocidas por usted que utilizó en la práctica y que resuelven el problema, sería genial ver algunas palabras suyas sobre ellas en los comentarios.
Todavía quiero escribir mi guión de enmascaramiento ...
Es posible usar uno auto-escrito, pero uno debe entender que con un alto grado de probabilidad ejecutar scripts en una base de datos de prueba en la cantidad de, digamos, 5 TB, tomará mucho tiempo. Y la escritura de algoritmos y scripts en sí mismos puede durar aún más.
Cuando sea necesario resolver de manera rápida y segura un nuevo problema y deba funcionar "como un reloj", el enmascaramiento "listo para usar" para Delphix funcionará. Lo más probable es que el script tenga que estar "terminado" para una nueva tarea (estructura de datos, tipo de base de datos, etc.).
Lo que puede hacer el motor de enmascaramiento de Delphix de fábrica- Búsqueda segura : reemplaza los datos originales, por ejemplo, "Vasya" -> "Petya". En este algoritmo, pueden ocurrir colisiones cuando los datos reemplazados son los mismos.
- Asignación segmentada : divide el valor en varios segmentos y reemplaza estos segmentos individualmente. Por ejemplo, el número NM831026-04 se puede dividir en tres partes, de las cuales las letras NM no enmascaran, el valor después de la transformación es NM390572-50. Esto es cierto para enmascarar los valores de columna utilizados como clave principal o para columnas únicas.
- Algoritmo de mapeo : para su funcionamiento, es necesario indicar la correspondencia exacta de los valores originales y reemplazados. En este caso, no habrá colisiones, porque El valor original se reemplaza directamente por el valor específico. Como ejemplo, el nombre "Alexey" siempre será reemplazado por "Nikita".
- Algoritmo de búsqueda binaria : reemplaza el valor clob / blob en columnas, etc. Delphix no sabe cómo reemplazar el valor en imágenes / textos, pero en su lugar puede elegir una imagen o texto de reemplazo.
- El algoritmo de tokenización es un tipo de encriptación de datos en el que los datos de entrada se convierten en tokens que tienen atributos similares (longitud de cadena, valor digital o de texto), pero no tienen ningún significado. Usando algoritmos, puede cifrar / descifrar estos datos. Por ejemplo, puede enmascarar datos y enviarlos al proveedor del producto. Los analizará y marcará los datos que son incorrectos (por ejemplo, relleno incorrecto) y luego los enviará de vuelta.
- El algoritmo Min Max es un algoritmo que promedia todos los valores en una columna para ocultar los valores máximos y mínimos (por ejemplo, salarios).
- Algoritmo de limpieza de datos : no enmascara, pero estandariza los datos. Por ejemplo, puede establecer reglas mediante las cuales los valores de Ru, Rus, R se conviertan a un único formato RU.
Ok Ya me di cuenta de que necesitamos a Delphix. ¿Introducir durante mucho tiempo? ¿Cómo se ve el proceso?
La implementación comienza con un proyecto piloto. Primero, se realiza una entrevista con el cliente, y aquí para una interacción completa solo necesitaremos un ingeniero responsable (DBA o administrador del sistema). Tenemos un cuestionario especializado que ayuda a descubrir las características del entorno informático del cliente.
También necesitaremos información sobre los sistemas que pueden ser candidatos para la virtualización (bases de datos separadas o sistemas completos de SAP / Dynamics). Juntos, en un modo de diálogo, determinamos los criterios de prueba, los criterios de éxito y el momento del proyecto piloto. Además, mientras el cliente está preparando la infraestructura para el piloto, recibimos una licencia de prueba del proveedor.
Nuestros ingenieros visitan el sitio del cliente, configuran el motor y le conectan la base de datos de origen. Dependiendo de las reglas internas del cliente con respecto a la seguridad de la información, qué fuente está conectada y la disponibilidad de su equipo técnico, el despliegue inicial y la configuración pueden ser realizados no por nosotros, sino por el propio equipo de TI del cliente, ya sea bajo nuestra supervisión o de acuerdo con las instrucciones del proveedor con Nuestro consejo.
Además, si el cliente desea bombear a su equipo (y generalmente existe tal deseo), llevamos a cabo capacitación para administradores de infraestructura y DBA. Para fines de capacitación, implementamos una o más bases de datos virtuales con ellos y ejecutamos todos los scripts.
Por lo general, el piloto dura de 2 a 4 semanas, si los procesos internos del cliente pueden preparar rápidamente la infraestructura necesaria. Como regla general, durante este tiempo en sistemas reales es posible probar todas las funcionalidades del software y evaluar el alcance de los beneficios resultantes.
Con base en los resultados de la prueba, se compila un informe en el que se analizan todos los procesos piloto, se dan cifras de "fue-se-convirtió" y se llega a una conclusión sobre la conveniencia de relaciones a más largo plazo. Si la gerencia toma una decisión positiva, el proceso de "transición a rieles industriales" es una cuestión de varias horas, ya que Durante el proceso piloto, las principales dificultades generalmente se superan, y la "recuperación" y el "efecto del proyecto" comienzan literalmente al día siguiente.
¿Hay algún punto negativo? ¿Qué no te gusta?
Francamente, el producto no es barato. No funcionará en torrents, y para usar la solución, deberá pagar una tarifa anual al proveedor. Esquema de licencia: para la cantidad de datos virtualizados.
El beneficio máximo de usar Delphix se logra cuando necesita crear una gran cantidad de copias de grandes volúmenes de diferentes fuentes de base de datos (la cantidad de fuentes de base de datos> = 1), por ejemplo, para crear un conjunto de soportes típicos para analistas, un servicio de prueba, un servicio de soporte para reproducir defectos con producción, etc., donde necesita copias de una base de combate con datos enmascarados, o copias de una base de prueba muy grande, y rápidamente y durante un período de tiempo relativamente corto (creó un clon, resolvió un problema, mató a un clon, lo hizo fresco y etc.)
Si este es su caso, considere TCO (podemos ayudarlo a hacerlo bien) y decida si le conviene o no. De lo contrario, es realmente una herramienta en caja muy interesante (¡esto es importante!) Que resuelve tareas que son bastante comprensibles desde un punto de vista técnico.Y también tenemos vacantes. En conclusión, nos gustaría realizar una pequeña encuesta para comprender cómo esta herramienta puede serle útil.