1 / 19

Migraciones milagrosas

Migraciones milagrosas. Hertzel Armengol | POLYGONIZE. Descripción del Curso. Entender porque rayos, migrar contenido desde otro sistema es generalmente tan complicado. Ver las opciones que Drupal nos tenia. Vista a futuro que nos depara en Drupal 8.

maire
Download Presentation

Migraciones milagrosas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Migraciones milagrosas Hertzel Armengol | POLYGONIZE

  2. Descripción del Curso • Entender porque rayos, migrar contenido desde otro sistema es generalmente tan complicado. • Ver las opciones que Drupal nos tenia. • Vista a futuro que nos depara en Drupal 8

  3. CUAL ES LA IMPORTANCIA DE AUTOMATIZAR LAS MIGRACIONES DE CONTENIDO? • Evitarastronomicos Dolores de cabeza • Evitarperdidas de informacion • Evitarperdida de Ranking de SEO • Mejorartucalidad de vida • Facilreutilizacion de codigo y porendemigraciones • Importargrandescantidades de datossimultaneamente

  4. Pasos para el análisis de una migracion

  5. Investigacion • Que tenemos que tomar en consideración en relación a la estructura de datos original. • Que datos son estrictamente necesarios, podemos hacer migraciones parciales para ir probando incrementalmente. • Diferencias fundamentales entre la plataforma fuente y Drupal • Taxonomias en Drupal, gerarquias, campos • Tipos de contenido independientes, recuerdan la era pre 3.x de wordpress? O joomla? • URLS, imágenes, usuarios, permisos

  6. Programación • Una vez que hemos obtenido la lista de requerimientos, que herramienta podemos utilizar?, en el pasado la gente optaba por muchas soluciones muy diversas • Stored Procedures • Scripts de Drush • Feeds • Services • Drupal ha evolucionado paulatinamente, en el 2009 se creo el modulo “migrate”, cuyo objetivo era simplificar el importar contenido de otras plataformas (drupal incluido)

  7. Programación • Que nos ofrece un modulo como Migrate, que no tengan otros? • API Consistente • Integracion con entidades • Mapeo Automatico de Fields en Bundles • Procesos en batch • Integracion con Drush • Hooks para preprocesar y validar datos • Sabe hacer la mejor torta chilena

  8. Introduccion a Migrate • Pueden descargar el modulo en la siguiente direccionhttps://www.drupal.org/project/migrate • Migrate no depende de ningun otro modulo en Drupal 7 • Nos permite migrar Bases de datos, XML, CSV nativamente • Nos permite migrar archivos directramente

  9. Conceptos Basicos

  10. Conceptos Basicos • La idea de unamigracionestraernoscontenido de otras bases de datos a Drupal, la forma mas facilesagregarunaconecciondentro de Drupal de la cualpodamosdisponerestonospermiteutilizaralgunas de lasfacilidades de Drupal tales como el db_query. Ejemplo en settings.php 'db_adicional' =>array ('default' =>array ('database' => ‘db','username' => 'db_user','password' => ‘db_password','host' => '.\SQLExpress', //localhost, IP, etc'port' => '','driver' => 'sqlsrv', //Puede ser mysql, o sqllite'prefix' => '',),

  11. Concetos basicos • Lo primero es especificar que nuestra conecion secundaria va a ser utiliada en vez. • Seguido podemos utilizar los filtros de db_query sobre nuestro objeto y obtener los datos que se quieren migrar //Obtenemos todos los registros$query = Database::getConnection('default','db_operadores') ->fields('met', array('style', 'details', 'style_parent', 'region', 'hoppiness'))->orderBy('style_parent', 'ASC');

  12. Como se define una migracion • Las migraciones son MODULOS y por ende deben seguir la estructura regular de un modulo • .module • .info • .inc • Las migraciones deben exponer el hook migrate_api() este define las clases que se van a autocargar, asi como el mapeo basico de los archivos. function MI_MODULO_migrate_api() { $api = array('api' => 2, //debe ser por lo menos V2'groups' => array(‘Grupo 1' => array('title' => t('Migraciones del Grupo 1'),'default_format' => 'filtered_html',),),'migrations' => array(‘Grupo 1/Operacion 1' => array('class_name' => 'MigrateOperadoresMigration','group_name' => ‘Grupo 1',) ),);return $api;}

  13. Metodos importantes de Migrate • prepareRow($row)  justo despues de next() raw data • complete($entity, stdClass $row)  justo despues del save • prepare($entity, stdClass $row)  justo antes del save • preImport()  antes de la migracion • postImport()  despues de la migracion

  14. Generando Mapeos • En una migracion un mapeo es la accion de asignar una columna de la Fuente de datos a un field en un Bunde en Drupal, esto nos permite realizer un sin numero de tareas de transformacion de datos en Drupal. Los mapeos se ejecutan en el contructor de la clase de Migracion $this->addFieldMapping('title','Nombre');$this->addFieldMapping('field_numero_de_identificacion','Identificacion');

  15. Generando Mapas Unicos “Source Maps” • Migrate puede llevar un historial de que se ha creado, eliminado y actualizado para ello crea una table intermedia que lleva informacion de mapeo adicional. Durante nuestra migracion es nuestro deber implementar dicho mapeo especificando una columna base en la Fuente de datos para ser usada de referencia, debe ser unica e inmutable puesto que se utilizara para encontrar sus equivalents en Drupal $this->map = new MigrateSQLMap($this->machineName,array('CodigoOperador' => array('type' => 'varchar','length' => 255,'not null' => TRUE,'description' => 'ID operador',) ),MigrateDestinationNode::getKeySchema()

  16. Migrar Archivos! • Una de las cosas mas interesantes que podemos hacer es migrar archivos. Para esto migrate nos da tres clases principalesMigrateFileUriMigrateFileBlobMigrateFileFid • Utilizando dichas clases podemos migrar contenido de forma independiente y adjuntaralo a nuestra entidad.

  17. Migrar Archivos!!! • Ejemplos en codigo.

  18. Listo! • Adicionalmente se puede ejecutar con Drush.

  19. Conclusiones y preguntas • Migrate nos permite realizar complejas migracione de datos facilmente • Migrate tiene un UI que puede complementar nuestro codigo • Migrate se puede ejecutar desde drush

More Related