{"id":2120,"date":"2016-01-13T17:12:16","date_gmt":"2016-01-13T17:12:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2120"},"modified":"2016-01-13T17:12:16","modified_gmt":"2016-01-13T17:12:16","slug":"storing-blobs-in-couchbase-for-content-management","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/storing-blobs-in-couchbase-for-content-management\/","title":{"rendered":"Almacenamiento de Blobs en Couchbase para la gesti\u00f3n de contenidos"},"content":{"rendered":"<p><em style=\"line-height: normal; text-align: left;\">Este blog se public\u00f3 originalmente en el blog personal de Cecile Le Pape. Para ver la entrada original, haga clic en\u00a0<a href=\"https:\/\/cecilelepape.blogspot.fr\/2016\/01\/storing-blobs-in-couchbase-for-content.html\">aqu\u00ed<\/a>.\u00a0<\/em><\/p>\n<p>\u00a0<\/p>\n<p>En mi <a href=\"https:\/\/cecilelepape.blogspot.fr\/2015\/09\/flexible-and-scalable-content.html\">entrada anterior<\/a>En el art\u00edculo de la semana pasada, habl\u00e9 de c\u00f3mo configurar un servicio flexible de gesti\u00f3n de contenidos utilizando Couchbase como repositorio de metadatos, sobre un servidor Apache Chemistry. Los blobs en s\u00ed (pdf, pptx, docx, etc) se almacenan en un sistema de archivos separado o en un almac\u00e9n de blobs. Hoy, me gustar\u00eda mostrar como Couchbase puede ser usado para almacenar los blobs mismos, usando un gestor de chunk personalizado. La idea es almacenar no s\u00f3lo los metadatos de un documento (fecha de creaci\u00f3n, creador, nombre, etc.) sino adem\u00e1s el propio blob.<\/p>\n<p>El objetivo de esta nueva arquitectura es reducir el n\u00famero de sistemas diferentes (y licencias que pagar) y tambi\u00e9n beneficiarse directamente de las funciones de replicaci\u00f3n que ofrece Couchbase.<\/p>\n<p>Primero, recordemos que Couchbase no es un almac\u00e9n de blobs. Es un almac\u00e9n de documentos basado en memoria, con una gesti\u00f3n de cach\u00e9 adhoc ajustada para que la mayor\u00eda de los datos almacenados en Couchbase est\u00e9n en RAM para una consulta r\u00e1pida. Los datos tambi\u00e9n se replican entre nodos (si la replicaci\u00f3n est\u00e1 habilitada) dentro del cluster y opcionalmente fuera del cluster si se usa XDCR. Esta es la raz\u00f3n por la que los datos almacenados en Couchbase no pueden ser mayores de 20 MB. Este es un l\u00edmite duro, y en la vida real 1MB ya es un documento grande para almacenar.<\/p>\n<p>Sabiendo esto, la cuesti\u00f3n es: \u00bfc\u00f3mo puedo almacenar grandes datos binarios en Couchbase? Respuesta sencilla: \u00a1en trozos!<\/p>\n<p>La nueva arquitectura tiene ahora este aspecto:<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/january\/storing-blobs-in-couchbase-for-content-management\/cecileblog1.png\" \/><\/p>\n<p>Ahora hay 2 buckets en Couchbase:<\/p>\n<ol>\n<li><em>cmismeta<\/em> : utilizado para almacenar metadatos<\/li>\n<li><em>cmisstore<\/em> : utilizado para almacenar blobs<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<p>Cuando se crea una carpeta, s\u00f3lo se modifica el bucket cmismeta con una nueva entrada porque, por supuesto, una carpeta no est\u00e1 asociada a ning\u00fan blob. Se trata simplemente de una estructura utilizada por el usuario para organizar los documentos y navegar en el \u00e1rbol de carpetas. Las carpetas son virtuales. El punto de entrada de la estructura es la carpeta ra\u00edz tal y como se describe <a href=\"https:\/\/cecilelepape.blogspot.fr\/2015\/09\/flexible-and-scalable-content.html\">anteriormente<\/a>.<\/p>\n<p>Cuando un documento (por ejemplo un pdf o un pptx) se inserta en una carpeta, ocurren 3 cosas:<\/p>\n<ul>\n<li>Un documento json que contiene todos sus metadatos se inserta en el bucket cmismeta, con una clave \u00fanica. Digamos, por ejemplo, que el documento tiene la clave <span style=\"color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal; text-align: left;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=<\/span>.<\/li>\n<li>Se crea un nuevo documento json con la misma clave en el bucket de cmisstore. Este documento contiene el n\u00famero de chunk, el tama\u00f1o m\u00e1ximo de cada chunk (el mismo para todos los chunk excepto para el \u00faltimo que puede ser m\u00e1s peque\u00f1o) y el tipo mime de la aplicaci\u00f3n.<\/li>\n<li>El blob adjunto al documento se fragmenta en trozos binarios (el tama\u00f1o depende de un par\u00e1metro que puedes establecer en las propiedades del proyecto). Por defecto, un trozo tiene un tama\u00f1o de 500 KB. Cada trozo se almacena en el bucket de cmisstore como un documento binario, con la misma clave \"<span style=\"color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal; text-align: left;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=<\/span>\" como prefijo, y un sufijo \"::partxxx\" donde xxx es el n\u00famero del chunk (0, 1, 2, ...).<\/li>\n<\/ul>\n<p>Por ejemplo, si inserto un pptx llamado CouchbaseOverview.pptx cuyo tama\u00f1o es de 4476932 bytes en Couchbase, obtengo:<\/p>\n<ul>\n<li>En el cubo cmismeta, un documento json llamado\u00a0<span style=\"color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal; text-align: left;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal; text-align: left;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/january\/storing-blobs-in-couchbase-for-content-management\/cecileblog2.png\" \/><\/span><\/p>\n<ul>\n<li>En bucket cmisstore, un documento json tambi\u00e9n llamado<span style=\"color: rgb(51, 51, 51); line-height: 20.8px; text-align: left;\">\u00a0<\/span><span style=\"text-align: left; color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"text-align: left; color: rgb(68, 68, 68); font-family: Menlo; font-size: 11px; line-height: normal;\">\u200b<\/span>\u00a0\u00a0<img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/january\/storing-blobs-in-couchbase-for-content-management\/cecileblog3.png\" \/><\/p>\n<ul>\n<li style=\"padding-top: 0.25em; padding-bottom: 0.25em; margin-bottom: 0.25em; border: none;\">\n<p>9 trozos que contienen datos binarios y se denominan<span style=\"font-family: Menlo; font-size: 11px; line-height: normal;\"><span style=\"font-family: -webkit-standard; font-size: 14px; text-align: center;\">\u00a0<\/span><span style=\"text-align: center;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=::part0,\u00a0<\/span><span style=\"text-align: center;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=::part1, ... ,\u00a0<\/span><span style=\"text-align: center;\">L0NvdWNoYmFzZU92ZXJ2aWV3LnBwdHg=::part8<\/span><\/span><\/p>\n<\/li>\n<\/ul>\n<p style=\"padding-top: 0.25em; padding-bottom: 0.25em; margin-bottom: 0.25em; border: none; text-align: center;\"><span style=\"font-family: Menlo; font-size: 11px; line-height: normal;\"><span style=\"text-align: center;\">\u200b<img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/january\/storing-blobs-in-couchbase-for-content-management\/cecileblog4.png\" \/><\/span><\/span><\/p>\n<p style=\"padding-top: 0.25em; padding-bottom: 0.25em; margin-bottom: 0.25em; border: none;\">\u00a0<\/p>\n<p>El CouchbaseStorageService es la clase que implementa la interfaz StorageService ya utilizada para almacenamiento local o almacenamiento S3 como mostr\u00e9 en <a href=\"https:\/\/cecilelepape.blogspot.fr\/2015\/09\/flexible-and-scalable-content.html\">mi blog anterior<\/a>. La primera diferencia es la reutilizaci\u00f3n de la misma instancia de CouchbaseCluster que la utilizada para el MetadataService, ya que s\u00f3lo se debe instanciar un Couchbase Environnement para ahorrar muchos recursos (RAM, CPU, Red, etc).<\/p>\n<p>Veamos ahora el m\u00e9todo writeContent propiamente dicho:<\/p>\n<p>\u00a0<\/p>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(79, 118, 203); font-family: Monaco; font-size: 11px; line-height: normal;\">\/**<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(79, 118, 203); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0* ContentStream se divide en partes<\/span><br \/>\n<span style=\"color: rgb(79, 118, 203); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0*\/<\/span><br \/>\n<span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">p\u00fablico<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">void<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0escribirContenido(Cadena\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">, ContentStream\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">contentStream<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">)<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">lanza<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0StorageException {<\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(78, 144, 114); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \/\/ contar el n\u00famero de piezas<\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 largo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">contentStream<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.getLength();<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 largo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0\/\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">BUFFER_SIZE<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(78, 144, 114); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \/\/ la \u00faltima parte<\/span>\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 si<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0&#8211;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0*\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">BUFFER_SIZE<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">\u00a0> 0)<\/span><\/span>\u00a0\u00a0<span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">++;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 JsonObject\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">doc<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">\u00a0= JsonObject.empty();<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.put(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"contar\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.put(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"mimetype\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">contentStream<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.getMimeType());<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.put(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"longitud\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(147, 26, 104); line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 largo<\/span><span style=\"line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">longitud total<\/span>\u00a0= 0;\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 int<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">leer<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0= 0;\u00a0<\/span><span style=\"color: rgb(78, 144, 114); font-family: Monaco; font-size: 11px; line-height: normal;\">\/\/ El n\u00famero de bytes a\u00fan no le\u00eddos<\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 byte<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[]\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">byteArray<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">nuevo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">byte<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">BUFFER_SIZE<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">];<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 int<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">offset<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">\u00a0= 0;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 para<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0(<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">int<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0= 0;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">++) {<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pruebe<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">\u00a0{<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 leer<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">contentStream<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.getStream()<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0.read(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">byteArray<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">, 0,\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">BUFFER_SIZE<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span>\u00a0\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span>\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 longitud total<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">leer<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">offset<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">leer<\/span><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">;\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 escribirContenidoParte(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">PARTE_SUFIX<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">byteArray<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">leer<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.put(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">PARTE_SUFIX<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">leer<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">captura<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0(IOException\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">e<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">) {<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0e<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.printStackTrace();<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span>\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 si<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud total<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0!=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">)<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0tirar<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">nuevo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0Excepci\u00f3n de almacenamiento(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"N\u00famero incorrecto de bytes\"<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/span><br \/>\n<span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0JsonDocument\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">jsondoc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0= JsonDocument.create(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">doc<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0cubo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.upsert(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">jsondoc<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(147, 26, 104); line-height: normal;\">\u00a0\u00a0\u00a0\u00a0\u00a0privado<\/span><span style=\"line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">void<\/span><span style=\"line-height: normal;\">\u00a0writeContentPart(Cadena\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">partId<\/span><span style=\"line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">byte<\/span><span style=\"line-height: normal;\">[]\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">bytesArray<\/span><span style=\"line-height: normal;\">,\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">int<\/span><span style=\"line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">longitud<\/span>)\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0lanza<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0StorageException {<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">DocumentoBinario\u00a0<span style=\"color: rgb(126, 80, 79); line-height: normal;\">bDoc<\/span><span style=\"line-height: normal;\">\u00a0= BinaryDocument.create(<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">partId<\/span>,\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0Unpooled.copiedBuffer(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">bytesArray<\/span><span style=\"line-height: normal;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">));<\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\"><span style=\"color: rgb(3, 38, 204); line-height: normal;\">cubo<\/span><span style=\"line-height: normal;\">.upsert(<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">bDoc<\/span><span style=\"line-height: normal;\">);<\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\u00a0<\/div>\n<p>\u00a0<\/p>\n<p>Ahora, \u00bfqu\u00e9 hacer para recuperar el archivo de Couchbase? La idea principal es obtener cada parte, concatenarlas en el mismo orden en que fueron cortadas y enviar el array de bytes al stream. Probablemente hay muchas maneras de hacer esto, yo simplemente implemento una sencilla usando un array de bytes en el que escribo cada byte.<\/p>\n<p>\u00a0<\/p>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">privado<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0InputStream getInputStream(Cadena\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">, StringBuffer\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">mimeType<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">)<\/span><br \/>\n<span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">lanza<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0StorageException {<br \/>\nJsonDocument\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">cubo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.get(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">);<br \/>\nJsonObject\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">json<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">doc<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.content();<br \/>\nEntero\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">json<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.getInt(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"contar\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">);<br \/>\nEntero\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">json<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.getInt(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"longitud\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">);<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0<\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0si<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">nbparts<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">==<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">null<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0||\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">==<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">null<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0||\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">mimeType<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">==<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">null<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">)\u00a0<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0tirar<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">nuevo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0Excepci\u00f3n de almacenamiento(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"Documento inv\u00e1lido\"<\/span><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">);<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0mimeType<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.append(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">json<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.getString(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"mimetype\"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">));<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0byte<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[]\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">byteArray<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">nuevo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">byte<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">longitud<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">];<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(78, 144, 114); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\/\/ para cada parte, leer el contenido en el byteArray<\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0int<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">offset<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">\u00a0= 0;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0Entero\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">partLength<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">null<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(147, 26, 104); line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(147, 26, 104); line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0para<\/span><span style=\"line-height: normal;\">\u00a0(<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">int<\/span><span style=\"line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">i<\/span><span style=\"line-height: normal;\">\u00a0= 0;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">i<\/span><span style=\"line-height: normal;\">\u00a0<\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">nbparts<\/span><span style=\"line-height: normal;\">;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">i<\/span>++) {\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span>\u00a0<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0partLength<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">json<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.getInt(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dataId<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(3, 38, 204); font-family: Monaco; font-size: 11px; line-height: normal;\">PARTE_SUFIX<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">);\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0si<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">partLength<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0==\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">null<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">)\u00a0<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0tirar\u00a0<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">nuevo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0Excepci\u00f3n de almacenamiento(<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\"longitud de la pieza \"<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">+<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">i<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">+<\/span><span style=\"color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; line-height: normal;\">\" es obligatorio\"<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0DocumentoBinario\u00a0<span style=\"color: rgb(126, 80, 79); line-height: normal;\">bDoc<\/span><span style=\"line-height: normal;\">\u00a0=\u00a0<\/span><\/span><\/span><br \/>\n<span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(3, 38, 204); line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cubo<\/span><span style=\"line-height: normal;\">.get(<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">dataId<\/span><span style=\"line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(3, 38, 204); line-height: normal;\">PARTE_SUFIX<\/span><span style=\"line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">i<\/span>,<\/span><\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">DocumentoBinario.<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">clase<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0ByteBuf\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">pieza<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">bDoc<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.content();<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\"><span style=\"color: rgb(147, 26, 104); line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0byte<\/span><span style=\"line-height: normal;\">[]\u00a0<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">dst<\/span><span style=\"line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">nuevo<\/span><span style=\"line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">byte<\/span><span style=\"line-height: normal;\">[<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">partLength<\/span>];\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0pieza<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">.readBytes(<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dst<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">);<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0para<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0(<\/span><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">int<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">k<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0= 0;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">k<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">partLength<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">;\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">k<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">++) {<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0byteArray<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">k<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">offset<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">] =\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">dst<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">[<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">k<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">];<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0offset<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0+=\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">partLength<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">;<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0pieza<\/span><span style=\"font-family: Monaco;\"><span style=\"font-size: 11px;\">.release();<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0InputStream\u00a0<span style=\"color: rgb(126, 80, 79); line-height: normal;\">flujo<\/span><span style=\"line-height: normal;\">\u00a0=\u00a0<\/span><span style=\"color: rgb(147, 26, 104); line-height: normal;\">nuevo<\/span><span style=\"line-height: normal;\">\u00a0ByteArrayInputStream(<\/span><span style=\"color: rgb(126, 80, 79); line-height: normal;\">byteArray<\/span>);\u00a0<span style=\"white-space: pre;\"> <\/span>\u00a0<\/span><\/span>\u00a0<span style=\"white-space: pre;\"> <\/span><span style=\"white-space: pre;\"> <\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"color: rgb(147, 26, 104); font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0devolver<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">\u00a0<\/span><span style=\"color: rgb(126, 80, 79); font-family: Monaco; font-size: 11px; line-height: normal;\">flujo<\/span><span style=\"font-family: Monaco; font-size: 11px; line-height: normal;\">;<\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\"><span style=\"font-size: 11px;\"><span style=\"font-family: Monaco;\">}<\/span><\/span><\/div>\n<div style=\"color: rgb(68, 68, 68); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-align: start; font-size: 14px;\">\u00a0<\/div>\n<p>Finalmente veamos que ocurre en la herramienta workbench proporcionada por Apache Chemistry ? Puedo ver el documento en la carpeta ra\u00edz y si hago doble clic sobre \u00e9l, el contenido se transmite desde Couchbase y se muestra en el visor asociado (aqu\u00ed powerpoint) basado en el tipo mime.\u00a0<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/january\/storing-blobs-in-couchbase-for-content-management\/cecileblog5.png\" \/><\/p>\n<p style=\"text-align: center;\"><em>Workbench y documento abierto en powerpoint tras doble click\u00a0<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>This blog was originally posted on Cecile Le Pape&apos;s personal blog. To see to original blog post, click\u00a0here.\u00a0 \u00a0 In my previous post, I talked about how to setup a flexible content management service using Couchbase as the metadata repository, [&hellip;]<\/p>","protected":false},"author":68,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815],"tags":[],"ppma_author":[9040],"class_list":["post-2120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Storing Blobs in Couchbase for Content Management - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/storing-blobs-in-couchbase-for-content-management\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Storing Blobs in Couchbase for Content Management\" \/>\n<meta property=\"og:description\" content=\"This blog was originally posted on Cecile Le Pape&amp;apos;s personal blog. To see to original blog post, click\u00a0here.\u00a0 \u00a0 In my previous post, I talked about how to setup a flexible content management service using Couchbase as the metadata repository, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/storing-blobs-in-couchbase-for-content-management\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-13T17:12:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cecile Le Pape, Solutions Architect, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cecile Le Pape, Solutions Architect, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/\"},\"author\":{\"name\":\"Cecile Le Pape, Solutions Architect, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/28d00738232281d64e4a632c5acc69b1\"},\"headline\":\"Storing Blobs in Couchbase for Content Management\",\"datePublished\":\"2016-01-13T17:12:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/\"},\"wordCount\":717,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/\",\"name\":\"Storing Blobs in Couchbase for Content Management - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-13T17:12:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Storing Blobs in Couchbase for Content Management\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/28d00738232281d64e4a632c5acc69b1\",\"name\":\"Cecile Le Pape, Solutions Architect, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/97438b032f142721b48bf7eae0f50bcd\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6c0a378c3c8e07dce943defd33929845a490ea466c6fddbb9ee24a71bdc8aa6c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6c0a378c3c8e07dce943defd33929845a490ea466c6fddbb9ee24a71bdc8aa6c?s=96&d=mm&r=g\",\"caption\":\"Cecile Le Pape, Solutions Architect, Couchbase\"},\"description\":\"After 10 years at University of Paris 6 (France) where she worked in the database team on replication, consistency, XML, p2p, syndication and mobile projects, Cecile decided to move on and start a new life experience in industry. Cecile joined the architect team of a small company called Oceane Consulting to develop document management projects. She is now a Solutions Architect at Couchbase and very happy to be involved both on the technical field and sales.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/cecile-le-pape\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Storing Blobs in Couchbase for Content Management - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/storing-blobs-in-couchbase-for-content-management\/","og_locale":"es_MX","og_type":"article","og_title":"Storing Blobs in Couchbase for Content Management","og_description":"This blog was originally posted on Cecile Le Pape&apos;s personal blog. To see to original blog post, click\u00a0here.\u00a0 \u00a0 In my previous post, I talked about how to setup a flexible content management service using Couchbase as the metadata repository, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/storing-blobs-in-couchbase-for-content-management\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-01-13T17:12:16+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Cecile Le Pape, Solutions Architect, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Cecile Le Pape, Solutions Architect, Couchbase","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/"},"author":{"name":"Cecile Le Pape, Solutions Architect, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/28d00738232281d64e4a632c5acc69b1"},"headline":"Storing Blobs in Couchbase for Content Management","datePublished":"2016-01-13T17:12:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/"},"wordCount":717,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/","url":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/","name":"Storing Blobs in Couchbase for Content Management - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-13T17:12:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/storing-blobs-in-couchbase-for-content-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Storing Blobs in Couchbase for Content Management"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/28d00738232281d64e4a632c5acc69b1","name":"Cecile Le Pape, Arquitecta de soluciones, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/97438b032f142721b48bf7eae0f50bcd","url":"https:\/\/secure.gravatar.com\/avatar\/6c0a378c3c8e07dce943defd33929845a490ea466c6fddbb9ee24a71bdc8aa6c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6c0a378c3c8e07dce943defd33929845a490ea466c6fddbb9ee24a71bdc8aa6c?s=96&d=mm&r=g","caption":"Cecile Le Pape, Solutions Architect, Couchbase"},"description":"Tras 10 a\u00f1os en la Universidad de Par\u00eds 6 (Francia), donde trabaj\u00f3 en el equipo de bases de datos en proyectos de replicaci\u00f3n, coherencia, XML, p2p, sindicaci\u00f3n y telefon\u00eda m\u00f3vil, Cecile decidi\u00f3 cambiar de aires e iniciar una nueva experiencia vital en la industria. Cecile se uni\u00f3 al equipo de arquitectos de una peque\u00f1a empresa llamada Oceane Consulting para desarrollar proyectos de gesti\u00f3n documental. Ahora es Arquitecta de Soluciones en Couchbase y est\u00e1 muy contenta de participar tanto en el campo t\u00e9cnico como en el de ventas.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/cecile-le-pape\/"}]}},"authors":[{"term_id":9040,"user_id":68,"is_guest":0,"slug":"cecile-le-pape","display_name":"Cecile Le Pape, Solutions Architect, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6c0a378c3c8e07dce943defd33929845a490ea466c6fddbb9ee24a71bdc8aa6c?s=96&d=mm&r=g","author_category":"","last_name":"Le Pape","first_name":"Cecile","job_title":"","user_url":"","description":"Tras 10 a\u00f1os en la Universidad de Par\u00eds 6 (Francia), donde trabaj\u00f3 en el equipo de bases de datos en proyectos de replicaci\u00f3n, coherencia, XML, p2p, sindicaci\u00f3n y telefon\u00eda m\u00f3vil, Cecile decidi\u00f3 cambiar de aires e iniciar una nueva experiencia vital en la industria. Cecile se uni\u00f3 al equipo de arquitectos de una peque\u00f1a empresa llamada Oceane Consulting para desarrollar proyectos de gesti\u00f3n documental. Ahora es Arquitecta de Soluciones en Couchbase y est\u00e1 muy contenta de participar tanto en el campo t\u00e9cnico como en el de ventas."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2120"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2120\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2120"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}