{"id":1795,"date":"2014-12-16T18:06:02","date_gmt":"2014-12-16T18:06:02","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1795"},"modified":"2018-12-10T12:06:21","modified_gmt":"2018-12-10T20:06:21","slug":"stabilizing-couchbase-server-2-dot-0","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/stabilizing-couchbase-server-2-dot-0\/","title":{"rendered":"Estabilizaci\u00f3n de Couchbase Server 2.0"},"content":{"rendered":"<p><em>[This blog was syndicated from https:\/\/damienkatz.net\/]<\/em><\/p>\n<p>Me alegra informaros de que ya estamos en pleno modo de estabilizaci\u00f3n y optimizaci\u00f3n de recursos para Couchbase Server 2.0. Nos ha llevado mucho m\u00e1s tiempo del que hab\u00edamos planeado. Crear una base de datos de documentos distribuida de alto rendimiento, eficiente, fiable y con todas las funciones es un asunto no trivial ;)<\/p>\n<p>Adem\u00e1s de la misma tecnolog\u00eda \"simple, r\u00e1pida y el\u00e1stica\" de memcached y clustering que tenemos en versiones anteriores de Couchbase, hemos a\u00f1adido 3 grandes nuevas caracter\u00edsticas para ampliar dr\u00e1sticamente sus capacidades y casos de uso, as\u00ed como su rendimiento y fiabilidad.<\/p>\n<h4>Couchstore: Almacenamiento de alto rendimiento orientado a la recuperaci\u00f3n<\/h4>\n<p>Uno de los mayores obst\u00e1culos para la versi\u00f3n 2.0 era que el motor de almacenamiento basado en Erlang consum\u00eda demasiados recursos en comparaci\u00f3n con nuestra versi\u00f3n 1.8.x, que utiliza SQLite. Hicimos un mont\u00f3n de trabajo de optimizaci\u00f3n y modificaciones, eliminando todo lo que pod\u00edamos para hacerlo lo m\u00e1s r\u00e1pido y eficiente posible, y en el proceso haciendo que nuestro c\u00f3digo de almacenamiento basado en Erlang fuera varias veces m\u00e1s r\u00e1pido que cuando empezamos, pero el uso de la CPU y los recursos segu\u00eda siendo demasiado alto, y sin muchos n\u00facleos de CPU, no pod\u00edamos conseguir un rendimiento total del sistema donde nuestros clientes existentes lo necesitaban.<\/p>\n<p>Al final, la respuesta fue reescribir el n\u00facleo del motor de almacenamiento y el compactador en C, utilizando un formato bit a bit compatible con nuestro motor de almacenamiento Erlang, de modo que las actualizaciones escritas en un proceso pudieran ser le\u00eddas, indexadas, replicadas e incluso compactadas desde Erlang. Se trata del mismo dise\u00f1o MVCC b\u00e1sico orientado a la recuperaci\u00f3n, por lo que es sencillo escribir en \u00e9l desde un proceso del SO y leerlo desde otro proceso. El formato de almacenamiento es inmune a la corrupci\u00f3n causada por ca\u00eddas del servidor, OOM killers o incluso p\u00e9rdidas de energ\u00eda.<\/p>\n<p>Reescribirlo en C nos permiti\u00f3 superar muchas barreras de optimizaci\u00f3n. Obtenemos f\u00e1cilmente el doble de rendimiento de escritura que con el motor optimizado de Erlang y los motores de SQLite, con menos CPU y una fracci\u00f3n de la sobrecarga de memoria.<\/p>\n<p>No todo se debe a que C sea m\u00e1s r\u00e1pido que Erlang. Una buena parte del aumento de rendimiento se debe a la posibilidad de integrar el motor de persistencia en el proceso. Eso por s\u00ed solo reduce mucho la CPU y la sobrecarga al evitar la transmisi\u00f3n de datos entre procesos y la conversi\u00f3n a estructuras en memoria de Erlang. Pero tambi\u00e9n es C, que proporciona un buen control de bajo nivel y podemos optimizar mucho m\u00e1s f\u00e1cilmente. El coste es m\u00e1s esfuerzo de ingenier\u00eda y c\u00f3digo de bajo nivel, pero las ganancias de rendimiento han demostrado merecer mucho la pena.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/couchbase-node.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6015 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/couchbase-node.png\" alt=\"\" width=\"644\" height=\"561\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/couchbase-node.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/couchbase-node-300x261.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/couchbase-node-20x17.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><img decoding=\"async\" style=\"width: 644px; height: 561px;\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/images\/couchbase-node.png\" alt=\"\" \/>Y ahora tenemos los mismos motores de almacenamiento con actualizaci\u00f3n optimista, capaces de MVCC, orientados a la recuperaci\u00f3n y resistentes a la fragmentaci\u00f3n, tanto en Erlang como en C. Las lecturas no bloquean las escrituras y las escrituras no bloquean las lecturas. Las escrituras tambi\u00e9n ocurren simult\u00e1neamente con la compactaci\u00f3n. Obtener todos los cambios o cambios incrementales a trav\u00e9s de snapshot MVCC y el \u00edndice by_sequence hace que nuestro io de disco sea principalmente lineal para un r\u00e1pido calentamiento, indexaci\u00f3n y reequilibrios de cl\u00faster. Permite la indexaci\u00f3n as\u00edncrona y tambi\u00e9n XDCR.<\/p>\n<h4>B-Superstar: Map\/Reduce incremental con conciencia de cl\u00faster<\/h4>\n<p>Otro punto importante era trasladar todas las caracter\u00edsticas importantes de las vistas incrementales map\/reduce de CouchDB a Couchbase, y combinarlas con la agrupaci\u00f3n en cl\u00fasteres manteniendo la coherencia durante el reequilibrio y la conmutaci\u00f3n por error.<\/p>\n<p>Empezamos utilizando un \u00edndice por partici\u00f3n virtual (vbucket), fusionando los resultados de todos los \u00edndices en el momento de la consulta, pero r\u00e1pidamente desechamos ese dise\u00f1o, ya que simplemente no nos aportar\u00eda el rendimiento ni la escalabilidad que necesit\u00e1bamos. Necesit\u00e1bamos un sistema que soportara escaneos de rangos MVCC, con reducciones r\u00e1pidas basadas en claves multinivel (_sum, _count, _stats y reducciones definidas por el usuario) y que requiriera el menor n\u00famero posible de lecturas de \u00edndices.<\/p>\n<p>Lo que se nos ocurri\u00f3 utiliza el probado modelo de vista basado en CouchDB, el mismo map\/reduce incremental javascript, las mismas reducciones preindexadas y memoizadas almacenadas en nodos btree internos para consultas de rango de bajo coste, pero puede excluir instant\u00e1neamente resultados de particiones inv\u00e1lidas cuando las particiones se reequilibran fuera de un nodo, o se indexan parcialmente en un nuevo nodo.<\/p>\n<p>Incrustamos un \u00edndice de partici\u00f3n de mapa de bits en cada nodo del btree que es el OR recursivo de todas las reducciones de los hijos. Debido a las actualizaciones del \u00edndice tail append, es una escritura lineal actualizar los nodos hoja modificados hasta la ra\u00edz mientras se actualizan todos los mapas de bits. Ahora podemos saber al instante qu\u00e9 sub\u00e1rboles tienen valores emitidos desde un vbucket concreto.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Haga clic en la imagen para ampliarla<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes1_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6016 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes1.png\" alt=\"\" width=\"644\" height=\"207\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes1.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes1-300x96.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes1-20x6.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><a class=\"colorbox\" href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes1_large.png\" rel=\"group1\"><img decoding=\"async\" style=\"width: 644px; height: 207px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes1.png\" alt=\"\" \/><\/a>En estado estacionario tenemos un sistema que funciona casi con la misma eficiencia que nuestros btrees normales (s\u00f3lo el coste adicional de 1 bit por nodo btree multiplicado por el n\u00famero de particiones virtuales).<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Haga clic en la imagen para ampliarla<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes2_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6017 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes2.png\" alt=\"\" width=\"644\" height=\"217\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes2.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes2-300x101.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes2-20x7.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><a class=\"colorbox\" href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes2_large.png\" rel=\"group1\"><img decoding=\"async\" style=\"width: 644px; height: 217px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes2.png\" alt=\"\" \/><\/a>Pero puede excluir particiones de vBucket cambiando una m\u00e1scara de un solo bit, para reequilibrar la coherencia, con un coste temporal de consulta mayor hasta que los \u00edndices se vuelvan a optimizar.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Haga clic en la imagen para ampliarla<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes3_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6018 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes3.png\" alt=\"\" width=\"644\" height=\"217\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes3.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes3-300x101.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes3-20x7.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p>En el peor de los casos, las operaciones O(logN) se convierten en O(N) hasta que se eliminan del \u00edndice los resultados excluidos.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Haga clic en la imagen para ampliarla<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes4_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6019 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes4.png\" alt=\"\" width=\"644\" height=\"207\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes4.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes4-300x96.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes4-20x6.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><a class=\"colorbox\" href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes4_large.png\" rel=\"group1\"><img decoding=\"async\" style=\"width: 644px; height: 207px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes4.png\" alt=\"\" \/><\/a>El \u00edndice vuelve a estar en estado estacionario y las consultas son 0(logN).<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Haga clic en la imagen para ampliarla<\/strong><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes5_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6020 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes5.png\" alt=\"\" width=\"644\" height=\"217\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes5.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes5-300x101.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/SuperstarNodes5-20x7.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><a class=\"colorbox\" href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes5_large.png\" rel=\"group1\"><img decoding=\"async\" style=\"width: 644px; height: 217px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/SuperstarNodes5.png\" alt=\"\" \/><\/a>Lo mejor de todo es que esto tambi\u00e9n funciona a la inversa, por lo que podemos empezar a insertar en el \u00edndice de vistas de un nuevo nodo vBucket a medida que se reequilibra, pero excluir los resultados hasta que el reequilibrio se haya completado. El resultado son \u00edndices de vistas y consultas consistentes tanto durante el estado estacionario como durante la conmutaci\u00f3n por error o el reequilibrio.<\/p>\n<h4>Replicaci\u00f3n entre centros de datos (XDCR)<\/h4>\n<p>Couchbase 2.0 tambi\u00e9n dispondr\u00e1 de replicaci\u00f3n multimaestro consciente del cl\u00faster. Permite que cl\u00fasteres geogr\u00e1ficamente dispersos repliquen los cambios de forma incremental, tolerando fallos transitorios de la red y topolog\u00edas de cl\u00faster independientes.<\/p>\n<p>Si tienes un \u00fanico cl\u00faster y usuarios dispersos geogr\u00e1ficamente, la latencia ralentizar\u00e1 las aplicaciones para los usuarios distantes. Cuanto m\u00e1s lejos y m\u00e1s saltos de red tenga que dar un usuario, m\u00e1s latencia inherente experimentar\u00e1. La mejor manera de reducir la latencia para los usuarios lejanos es acercar los datos al usuario.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/XDCR.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6021 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/XDCR.png\" alt=\"\" width=\"644\" height=\"320\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/XDCR.png 644w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/XDCR-300x149.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/XDCR-20x10.png 20w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><img decoding=\"async\" style=\"width: 644px; height: 320px;\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/images\/XDCR.png\" alt=\"\" \/>Con Couchbase XDCR, puedes tener clusters en m\u00faltiples centros de datos, repartidos por regiones y continentes, reduciendo enormemente la latencia de la aplicaci\u00f3n para los usuarios de esas regiones. Los datos pueden ser actualizados en cualquier cluster, replicando los cambios a clusters remotos ya sea en un horario fijo o continuamente. Los conflictos de edici\u00f3n se resuelven utilizando una regla de \"m\u00e1s editado\", lo que permite que todos los clusters converjan en el mismo valor.<\/p>\n<h4>Cimientos s\u00f3lidos<\/h4>\n<p>Creo que acabamos de empezar. Todav\u00eda hay un mont\u00f3n de detalles y nuevas caracter\u00edsticas en las que no he entrado, estos son s\u00f3lo algunos de los aspectos m\u00e1s destacados. Estoy muy orgulloso y emocionado no s\u00f3lo por lo que tenemos para 2.0, sino por lo que es posible hacer sobre la base r\u00e1pida, fiable y flexible que hemos construido y las futuras caracter\u00edsticas y tecnolog\u00eda que ahora podemos construir f\u00e1cilmente. Veo un futuro muy brillante.<\/p>","protected":false},"excerpt":{"rendered":"<p>[This blog was syndicated from https:\/\/damienkatz.net\/] I&#8217;m glad to report we are now pretty much going into full-on stabilization and resource optimization mode for Couchbase Server 2.0. It\u2019s taken us a lot longer than we planned. Creating a high performance, [&hellip;]<\/p>","protected":false},"author":27,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8986],"class_list":["post-1795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Stabilizing Couchbase Server 2.0 - 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\/stabilizing-couchbase-server-2-dot-0\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stabilizing Couchbase Server 2.0\" \/>\n<meta property=\"og:description\" content=\"[This blog was syndicated from https:\/\/damienkatz.net\/] I&#8217;m glad to report we are now pretty much going into full-on stabilization and resource optimization mode for Couchbase Server 2.0. It\u2019s taken us a lot longer than we planned. Creating a high performance, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/stabilizing-couchbase-server-2-dot-0\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T18:06:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-10T20:06:21+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=\"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, 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=\"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/\"},\"author\":{\"name\":\"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e0219455c7a2977300bcad9a02fb0ef2\"},\"headline\":\"Stabilizing Couchbase Server 2.0\",\"datePublished\":\"2014-12-16T18:06:02+00:00\",\"dateModified\":\"2018-12-10T20:06:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/\"},\"wordCount\":1094,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/\",\"name\":\"Stabilizing Couchbase Server 2.0 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T18:06:02+00:00\",\"dateModified\":\"2018-12-10T20:06:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#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\/stabilizing-couchbase-server-2-dot-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stabilizing Couchbase Server 2.0\"}]},{\"@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\/e0219455c7a2977300bcad9a02fb0ef2\",\"name\":\"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/225d5d7d9157ae1ab738ce6870478666\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g\",\"caption\":\"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase\"},\"description\":\"Damien Katz is a Couchbase founder and CTO. Mr. Katz is the creator of Apache CouchDB and co-founder of CouchOne, which merged with Membase to form Couchbase. He began his developer life working on Lotus Notes for Iris Associates, acquired by IBM.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/damien-katz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Stabilizing Couchbase Server 2.0 - 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\/stabilizing-couchbase-server-2-dot-0\/","og_locale":"es_MX","og_type":"article","og_title":"Stabilizing Couchbase Server 2.0","og_description":"[This blog was syndicated from https:\/\/damienkatz.net\/] I&#8217;m glad to report we are now pretty much going into full-on stabilization and resource optimization mode for Couchbase Server 2.0. It\u2019s taken us a lot longer than we planned. Creating a high performance, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/stabilizing-couchbase-server-2-dot-0\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T18:06:02+00:00","article_modified_time":"2018-12-10T20:06:21+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":"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/"},"author":{"name":"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e0219455c7a2977300bcad9a02fb0ef2"},"headline":"Stabilizing Couchbase Server 2.0","datePublished":"2014-12-16T18:06:02+00:00","dateModified":"2018-12-10T20:06:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/"},"wordCount":1094,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/","url":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/","name":"Stabilizing Couchbase Server 2.0 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T18:06:02+00:00","dateModified":"2018-12-10T20:06:21+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/#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\/stabilizing-couchbase-server-2-dot-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Stabilizing Couchbase Server 2.0"}]},{"@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\/e0219455c7a2977300bcad9a02fb0ef2","name":"Damien Katz, fundador y CTO de Couchbase. Creador de CouchDB, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/225d5d7d9157ae1ab738ce6870478666","url":"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g","caption":"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase"},"description":"Damien Katz es fundador y CTO de Couchbase. El Sr. Katz es el creador de Apache CouchDB y cofundador de CouchOne, que se fusion\u00f3 con Membase para formar Couchbase. Comenz\u00f3 su vida como desarrollador trabajando en Lotus Notes para Iris Associates, adquirida por IBM.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/damien-katz\/"}]}},"authors":[{"term_id":8986,"user_id":27,"is_guest":0,"slug":"damien-katz","display_name":"Damien Katz, Couchbase founder and CTO. Creator of CouchDB, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g","author_category":"","last_name":"Katz","first_name":"Damien","job_title":"","user_url":"","description":"Damien Katz es fundador y CTO de Couchbase. El Sr. Katz es el creador de Apache CouchDB y cofundador de CouchOne, que se fusion\u00f3 con Membase para formar Couchbase. Comenz\u00f3 su vida como desarrollador trabajando en Lotus Notes para Iris Associates, adquirida por IBM."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1795","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1795"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1795\/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=1795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1795"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}