Tal vez recuerde mi post sobre mover datos de CouchDB a Couchbase. Si no usas CouchDB sino MongoDB puede que te hayas sentido defraudado. Lo siento. Vamos a arreglar esto. Aquí tienes cómo mover tus datos de MongoDB a Couchbase.

Una de las grandes ventajas de utilizar RxJava es que esta API se está generalizando. Nosotros tomamos esa decisión hace tiempo y nos alegra ver que más gente se suma a ese carro, como ha hecho Mongo recientemente.

El hecho de que compartamos una API de flujo va a facilitar mucho las cosas. Mi objetivo es obtener un Observable de Documento Mongo, mapearlo a documentos de Couchbase y luego escribirlos en Couchbase. Como puedes ver este proceso es realmente fácil de modelar con RxJava. En pseudo código se vería así:

getMongoCollectionStream().fromMongoDocumentToCouchbaseDocuments().writeCBdocToCouchbase()

De nuevo, esto encaja muy bien con RxJava.

MongoDB permite abrir una colección y devolverla como un Observable of Document. Esto es exactamente lo que necesitamos y puede ocurrir en un par de líneas:

Luego tenemos que transformar los documentos que entran en documentos Couchbase. Para ello podemos utilizar fácilmente el operador map de Rx. Cuando escribimos un documento en couchbase necesitamos una clave o un id. En un documento Mongo se almacena en el campo _id usando la abstracción ObjectID. Es generado por Mongo en base a varios criterios. Una vez que obtenemos ese id todo lo que tenemos que hacer es obtener el Doc como una cadena JSON y crear un RawJsonDocument basado en eso y el id.

Después de este map.operation nos queda un observable de couchbase document. El último paso es escribirlo en Couchbase.

He incluido todo este código y lo he hecho configurable en el couchbase-java-importer. Está disponible en Github aquí.

Si no necesitas hacer nada más que importar los documentos JSON de una colección directamente a Couchbase, esto debería ser suficiente. Simplemente descarga el archivo binario y ejecutarlo asegurándose de que el Configuración yml está en tu classpath y contiene la información correcta.

Esta es una forma particular de mover datos de MongoDB a Couchbase. Hay otras. Ambas bases de datos soportan la importación CSV, por ejemplo, y Mongo tiene un exportador CSV. Así que una vez que tengas un archivo CSV puedes usar cbtransfer o couchbase-java-importer para llevar su contenido a Couchbase.

Todos estos ejemplos suponen que no desea realizar ninguna transformación en los datos antes de importarlos. Los pasos de transformación serían muy fáciles de insertar en el importador RxJava. El código es muy sencillo, así que siéntete libre de hacer un fork o enviar pull requests. Por cierto, añadir más importadores a este proyecto puede ser una buena manera de entrar en la comunidad CB :)

Autor

Publicado por Laurent Doguin

Laurent es un metalero empollón que vive en París. Principalmente escribe código en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programación reactiva y otras cosas de moda. También fue Developer Advocate de Clever Cloud y Nuxeo, donde dedicó su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase.

Dejar una respuesta