Así pues, ya hemos echado un vistazo a lo que implica crear una solución Customer 360 en Couchbase. aquí.
Así es, había que pensar mucho.
Lo siento, no hay forma de evitarlo.
Tienes que pensar, no puedes ser una de las masas descerebradas...
Así que, suponiendo que no haya conseguido ahuyentarle con la amenaza del pensamiento, empecemos a profundizar en algunos detalles.
En particular, la primera parte que hay que pensar, conseguir los datos en Couchbase.
Volvamos a ver el diagrama general del sistema.
Si miras a la izquierda, verás una colección de sistemas en una casilla llamada "Fuentes de datos".
CRM
ERP
Mainframe
(¿Mainframe? ¿Todavía tienes un Mainframe por ahí? ¿No podemos cerrar el grifo y dejar que muera de una forma fea y antinatural? ¿No? Ugh...)
Un dato curioso: antes, los Mainframes se refrigeraban por agua.
Sí, cuando los ingenieros se dieron cuenta del calor que iban a alcanzar esas bestias, pensaron: "Oye, parece que hacer correr agua por los motores de nuestros coches evita que se sobrecalienten. ¡Hagamos lo mismo con este bebé!"
Dato curioso #2: en los años 90, la empresa Cray Computer, situada en Minnesota, donde nieva 11 meses y medio al año, decidió trasladarse a un nuevo edificio, pero tuvo problemas para vender su antigua sede.
Al parecer, la casa no tenía calefacción. Simplemente habían distribuido el calor generado por su propio ordenador por toda la casa.
¡Tostado!
Pero divago...
Así que, básicamente, tienes todos estos sistemas, cada uno con su propio modelo de datos, de los que tienes que extraer datos para ingerirlos en Couchbase.
Extracción
Si este fuera mi trabajo, intentaría tomar el camino más sencillo.
No es porque sea perezoso...
Puede que lo sea, depende de tu definición de perezoso...
Pero esa no es la razón por la que tomo el camino fácil.
Llevo tiempo en esto.
Y por lo que he visto, cuanto más sencilla es una solución, más fácil es ponerla en práctica...
Cuanto más fácil sea mantener...
Cuanto menos se rompa...
Y puedo dormir por la noche.
Algo que me gusta bastante.
Así que tal vez fácil no es la descripción correcta...
Más bien simple.
Así que, para mantener las cosas simples, sólo voy a extraer cualquier dato de estos sistemas fuente que necesito, formatearlo en formato JSON, e insertarlo en Couchbase.
¿Qué puede ser más sencillo?
Podría ser tan sencillo como conectar ambos extremos a un flujo Kafka, pasando los datos directamente de la fuente a Couchbase.
Un poco de configuración en cada extremo, ¡y voilà! ¡Ya tengo los datos de mis clientes en mi bucket de Couchbase!
Sólo...
Es todo inconexo e inconexo...
No es exactamente lograr mi objetivo aquí...
¡Maldita sea! Y yo que pensaba que había conseguido pasar sin tener que pensar en esto...
Hmm...
Transformar
OK, así que tengo todos estos datos inconexos de varios sistemas de origen en mi cubo Couchbase, y necesito combinarlos de alguna manera en un modelo de datos que tenga sentido.
Siempre hay algún detalle pegajoso con el que lidiar...
Pero no sé cuándo se actualizarán los documentos existentes en el sistema fuente.
Sólo tengo que contar con que lleguen, como quieran, a horas aleatorias.
¿Cómo puedo...
¡Ya lo tengo! Usaré el sistema Couchbase Eventing para avisarme cuando tenga una actualización...
Examinaré el nuevo documento para ver de qué se trata...
Mira a ver si tengo los otros datos de ese cliente con los que necesito combinarlos...
Y si lo hago, crear un nuevo documento, combinando los datos del cliente.
Algo así como...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
función OnUpdate(doc, meta) { // OK, tengo una actualización, ¿tengo la otra // documentos que necesito combinar con él? si haveOtherDocuments(doc) { // Tengo los demás documentos que necesito para // combinar para crear el nuevo cliente 360 cust360Doc = combinarDocumentosDelCliente(doc); // Guardar el documento combinado en el bucket 360 del cliente tgt[cust360Doc.id] = cust360Doc; } } |
¡Woo-hoo! Muy sencillo, ¿eh?
Por supuesto, esas dos funciones que estoy llamando todavía tienen que ser desarrolladas...
Espero que no sean demasiado peludas...
Carga
Bien, hemos extraído los datos de nuestros sistemas de origen, los hemos transformado en un modelo de datos combinado y los hemos cargado en nuestro bucket Couchbase de destino y...
Espera un momento...
Extraer... Transformar... Cargar...
¿ETL?
¿No es una mala palabra por aquí?
Somos Couchbase
¡Vamos por ahí predicando Analytics sin ETL!
Cualquier cambio en los datos de Couchbase Bucket aparece automáticamente en el servicio Analytics...
...cambio en el cubo de Couchbase...
Nosotros...yo...nosotros...yo...Uhh...
Hmm...
Supongo que eso de "No ETL" sólo se aplica después de introducir los datos en Couchbase...
Sí, no veo forma de evitarlo en este caso.
Pero en este caso, podría ser en tiempo real.
Depende del horario en el que esté ejecutando los extractos de los sistemas de origen.
Si se ejecutan por la noche, como un trabajo por lotes, entonces es sólo su ETL nocturno común y corriente.
Pero si tienes disparadores en tus bases de datos CRM o ERP que ponen las actualizaciones en la cola de Kafka en el momento en que los registros del cliente se actualizan en esos sistemas, entonces es un proceso ETL bastante en tiempo real.
Cada vez más cerca de lo que predicamos por aquí...
Nota: Para los que quieran profundizar en los detalles de la puesta en práctica, tenemos un tutorial muy bueno y detallado en nuestro sitio web. Puede encontrarlo en aquí.
¿Por qué Couchbase?
Vamos, cualquier base de datos sin esquema le permitirá crear un único y enorme documento que contenga todos los datos de sus clientes. ¿Por qué utilizar la nuestra?
Además de la facilidad de usar algo que probablemente ya tienes en tu infraestructura (Kafka) para tomar los datos de tu sistema fuente e insertarlos en un bucket de Couchbase, y luego usar nuestro servicio Eventing para activar alguna funcionalidad en tiempo real para ETL esos datos?
Es decir, siempre puedes pagar mucho dinero para comprar un software ETL mágico que haga parte de ese trabajo pesado por ti...
A continuación, puede conectar una solución de almacenamiento en caché para obtener la velocidad y el rendimiento que necesita...
Y añada un producto de búsqueda de texto completo para que sus usuarios encuentren la información que desean...
A continuación, cree una API REST para que su aplicación móvil pueda acceder a los datos...
Añade otro sistema ETL para extraer los datos y volcarlos en algún sistema analítico de lagos de datos...
Y luego, cuando la máquina de Rube Goldberg que has construido tiene el más mínimo contratiempo, corres a parchear las cosas para que todo siga funcionando...
Y renunciar al hobby de dormir alguna vez...
O bien, puede tomar la ruta simple, y sólo tiene que utilizar Couchbase para todo esto.
Como he dicho antes, prefiero las soluciones sencillas.