Sugerencias de optimización al migrar datos a Sitecore CMS
sitecore6 (2)
Supongo que ya has golpeado esto, pero poner el código dentro de un bloque SecurityDisabler () también puede acelerar las cosas.
Estaría mucho más preocupado por el rendimiento de Sitecore con tanta información ... suponiendo que solo haga la importación una vez, a quién le importa cuánto tiempo lleve ese proceso. ¿Esto va a ser una ocurrencia regular?
Actualmente me enfrento a la tarea de importar alrededor de 200 K de una implementación de CMS personalizada en Sitecore. He creado una página de importación simple que se conecta a una base de datos SQL externa utilizando Entity Framework y he creado todas las plantillas de datos requeridas.
Durante una importación de prueba de aproximadamente 5K elementos, me di cuenta de que necesitaba encontrar una manera de hacer que la importación se ejecutara mucho más rápido, así que me puse a buscar información sobre cómo optimizar Sitecore para este propósito. Llegué a la conclusión de que no hay mucha información específica por ahí, así que me gustaría compartir lo que he encontrado y abrir el piso para que otros contribuyan con otras optimizaciones. Mi objetivo es crear algún tipo de modo de mantenimiento para Sitecore que pueda utilizarse al importar grandes volúmenes de datos.
La información más útil que encontré fue en el blog post de Mark Cassidy http://intothecore.cassidy.dk/2009/04/migrating-data-into-sitecore.html . En la parte inferior de esta publicación, proporciona algunos consejos para cuando está ejecutando una importación.
- Si está migrando grandes cantidades de datos, pruebe y deshabilite tantos controladores de eventos de Sitecore y cualquier otra cosa que pueda obtener.
- Utilice BulkUpdateContext ()
- No olvides tu idioma de destino
- Si puedes, haz que los campos sean compartidos y sin versión. Esto debería ayudar a la velocidad de ejecución de la migración.
Lo primero que noté fuera de esta lista fue la clase BulkUpdateContext ya que nunca había oído hablar de ella. Rápidamente entendí por qué, como una búsqueda en el foro de SND y en la documentación en PDF, no obtuve resultados. ¡Así que imagínese mi sorpresa cuando realmente lo probé y descubrí que mejora la creación / eliminación de elementos al menos diez veces!
Lo siguiente que miré fue el primer punto en el que básicamente sugiere crear una versión de configuración web que solo tenga los elementos esenciales necesarios para realizar la importación. Hasta ahora he eliminado todos los eventos relacionados con la creación, el almacenamiento y la eliminación de elementos y versiones. También he eliminado el motor del historial y las declaraciones de índice del sistema del elemento de la base de datos maestra en la configuración web, así como cualquier evento personalizado, horarios y configuraciones de búsqueda. Espero que haya muchas otras cosas que podría eliminar o desactivar para aumentar el rendimiento. Tuberías? Horarios?
¿Qué consejos de optimización tienes?
Incidentalmente, BulkUpdateContext () es un nombre muy engañoso, ya que realmente mejora la velocidad de creación de elementos, no la velocidad de actualización de elementos. Pero como también señala, mejora enormemente la velocidad de importación :-)
Desde que escribí esa publicación, he agregado algunas cosas nuevas a mis rutinas normales cuando hago importaciones.
- Regularmente reducir sus bases de datos. Tienden a crecer grandes y voluminosos. Para hacer esto; Primero vaya al Panel de control de Sitecore -> Base de datos y seleccione "Limpiar base de datos". Después de esto, haz un ShrinkDB regular en tu servidor SQL
- Deshabilite los índices, especialmente si importa en la base de datos "maestra". Para referencia, consulte http://intothecore.cassidy.dk/2010/09/disabling-lucene-indexes.html
- Sin embargo, trate de no importar a "maestro" ... normalmente encontrará que las importaciones a "web" son mucho más rápidas, principalmente porque esta base de datos no está (de manera predeterminada) conectada al HistoryManager u otros dispositivos
Y si eres realmente aventurero, hay una cosa que podrías probar y que yo estaba considerando probar yo mismo, pero que nunca pude ver. Podrían funcionar, pero no puedo garantizar que lo harán :-)
- Intente eliminar todos los tipos de campo de App_Config / FieldTypes.config. La teoría aquí es que esto esencialmente debería deshabilitar todo el manejo especial del contenido de estos campos de Sitecore (como la actualización de la base de datos de enlaces, etc.). Necesitará activar manualmente una reconstrucción de la base de datos de enlaces cuando termine con la importación, pero ese es un precio relativamente pequeño a pagar
Espero que esto ayude un poco :-)