2010-06-19 24 views
13

Después de haber pasado algún tiempo trabajando en el almacenamiento de datos, he creado los procesos ETL (extraer la carga de transformación) y ELT (extraer la transformación de carga). Parece que ELT es un enfoque más nuevo para poblar los almacenes de datos que pueden aprovechar más fácilmente los recursos de computación del clúster. Me gustaría escuchar lo que otras personas piensan que son las ventajas de ETL y ELT sobre el otro y cuándo debe usar uno u otro.¿Qué es mejor, ETL o ELT?

Respuesta

5

Así que después de haber jugado a fondo con ETL y ELT, he llegado a la conclusión de que debe evitar ELT a toda costa. ETL prepara los datos para su almacén antes de que realmente los cargue. ELT sin embargo carga los datos brutos en el almacén y los transforma en su lugar. Eso es problemático si tiene un almacén de datos ocupado. Si hay una consulta de informes ejecutándose en una tabla que intenta actualizar, su consulta será bloqueada. En consecuencia, es posible que las consultas de informes se mantengan o bloqueen las actualizaciones.

Ahora algunos de ustedes pueden decir que las consultas de informes no necesitan bloquear una actualización y puede establecer su nivel de aislamiento para permitir lecturas sucias. Sin embargo, los ingenieros de software generalmente no ejecutan consultas de informes. Son ejecutados por usuarios comerciales, por lo que no puede confiar en ellos para establecer sus niveles de aislamiento correctamente. Además, no todos los informes pueden tolerar lecturas sucias.

Hay casos donde ELT puede funcionar, sin embargo, al introducirlo en su almacén de datos es peligroso y, en consecuencia, lo recomiendo para su cordura y para su mantenimiento, evitarlo.

+3

No estoy de acuerdo con esto. Creo que hay un lugar para ambos enfoques. Personalmente prefiero ELT si la situación lo permite. La mayoría de los almacenes de datos se cargan todas las noches durante sus ventanas de mantenimiento ... y si se está refiriendo a los almacenes de datos en un entorno de seguimiento del sol, se encontrará con problemas independientemente del enfoque con el que vaya (puede ser necesario obtener un poco creativo). Encuentro que tengo más control con ELT ... por no mencionar su capacidad para retener datos sin procesar con fines de archivo. –

+0

Una cosa más que quería agregar ...Creo que ELT requiere recursos de base de datos/sql más experimentados para mantenerlo ya que la mayor parte del trabajo se lleva a cabo dentro de la base de datos. Esto, de forma indirecta, es una pregunta similar a la pregunta de la aplicación frente a la base de datos ... http://stackoverflow.com/questions/119540/business-logic-database-or-application-layer –

+0

No hay una respuesta correcta ... .. –

4

Uso ambos. Es simplemente una cuestión de conveniencia y funcionalidad. Todo depende del caso. A veces hago TEL, es decir, la transformación se realiza en la base de datos de origen (en un procedimiento o vista almacenados) y luego se extrae y carga directamente.

5

Cuál es mejor es difícil de responder, depende del problema.

Prefiero ETL multi-paso - ECCD (Extraer, Limpiar, Conformar, Entregar) siempre que sea posible. También mantengo archivos csv intermedios después de cada paso de extracción, limpieza y conformidad; toma algo de espacio en disco, pero es bastante útil. Cuando DW tiene que volver a cargarse debido a errores en etl, o cambia el esquema DW, no hay necesidad de consultar los sistemas fuente nuevamente, ya está en archivos planos. También es muy conveniente poder grep, sed y awk a través de archivos planos en el área de ensayo cuando sea necesario. En el caso de que haya varios sistemas fuente que se alimentan en el mismo DW, solo se deben desarrollar (y mantener) los pasos de extracción para cada uno de los sistemas de origen: los pasos de limpieza, conformidad y entrega son todos comunes.

2

Prefiero ELT. Se puede decir que va en contra de la Norma. Requiere un cambio en la mentalidad y el enfoque de diseño contra los métodos tradicionales. Pero utiliza hardware existente y conjuntos de habilidades, reduciendo aún más el costo y el riesgo en el proceso de desarrollo.

Si queremos asegurar la integridad referencial en el enfoque ETL, entonces los datos deben ser descargados del objetivo al servidor ETL (Motor). Pero no necesitamos hacerlo en el enfoque ETL.

Para obtener lo mejor de un enfoque ELT se requiere una mente abierta.