{"id":7075,"date":"2019-06-18T09:05:58","date_gmt":"2019-06-18T16:05:58","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7075"},"modified":"2025-06-13T21:20:29","modified_gmt":"2025-06-14T04:20:29","slug":"introducing-couchbase-go-sdk-2-0-alpha","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-go-sdk-2-0-alpha\/","title":{"rendered":"Presentamos Couchbase Go SDK 2.0 Alpha"},"content":{"rendered":"<p>Me complace anunciar el Couchbase Go SDK 2.0 Alpha. Este nuevo SDK trae una serie de cambios en todos los SDKs de Couchbase que el equipo ha estado creando. Los nuevos SDKs traen una API completamente nueva que es m\u00e1s simple, a prueba de futuro y se integra con los \u00faltimos desarrollos del ecosistema.<\/p>\n<p>La versi\u00f3n 2.0 del SDK Go se alinea con las nuevas caracter\u00edsticas de Couchbase Server que se extienden fuera de la interfaz tradicional Bucket: soporte para Scopes y Collection. Adem\u00e1s, consolida y refina la interfaz, mejorando la conformidad entre SDKs.<\/p>\n<h2>Nuevas caracter\u00edsticas de Couchbase Server: \u00c1mbitos y Colecciones<\/h2>\n<p>En versiones anteriores de Couchbase Server, los buckets se utilizaban como entidades l\u00f3gicas con nombre de usuario que agrupaban elementos. Esto permit\u00eda acceder a ellos, indexarlos, replicarlos y controlar el acceso. Este era realmente el \u00fanico medio de lograr multi-tenancy usando Couchbase Server y ven\u00eda con algunas limitaciones: Los buckets en s\u00ed son bastante intensivos en recursos y un cluster s\u00f3lo puede gestionar eficientemente un n\u00famero finito de buckets. Para las modernas arquitecturas de micro-servicios, o realmente cualquier arquitectura en la que se necesite multi-tenancy, esto supon\u00eda algunos retos a la hora de servir a una gran cantidad de inquilinos. Esto se resolver\u00e1 en una futura versi\u00f3n de Couchbase Server con los conceptos de Scopes y Collections.<\/p>\n<p>Un \u00c1mbito representa una unidad de multitenencia y se construye a partir de Colecciones. Una colecci\u00f3n es un nombre \u00fanico para un grupo de documentos. Dentro de un \u00e1mbito, el nombre de una colecci\u00f3n debe ser \u00fanico, pero el mismo nombre de colecci\u00f3n puede utilizarse en varios \u00e1mbitos. Cada cubo contiene un \u00e1mbito predeterminado con el nombre \"_default\" y un identificador 0 (cero), que a su vez contiene una colecci\u00f3n predeterminada con el nombre \"_default\" y un identificador 0 (cero).<\/p>\n<p>Esto tiene el efecto de trasladar las operaciones clave\/valor que estaban en el contexto de bucket para SDK 1.0 al contexto de colecci\u00f3n para SDK 2.0. Las operaciones entre buckets como Search, Analytics y N1QL se realizan ahora a nivel de cl\u00faster.<\/p>\n<p>Couchbase Server 6.5 soportar\u00e1 Scopes y Collections como parte de \"Developer Preview\", Developer Preview es <em>no<\/em>\u00a0para su uso en producci\u00f3n. Mientras tanto, el SDK 2.0 tambi\u00e9n es compatible con Couchbase 5.0 y superiores utilizando el Scope y la Collection por defecto.<\/p>\n<h2>Aspectos destacados de la API SDK 2.0<\/h2>\n<p>El objetivo de esta alfa es proporcionar la API para usar Couchbase Server con operaciones Key\/Value, N1QL, b\u00fasqueda y consultas anal\u00edticas, as\u00ed como vistas. Contiene las conocidas estructuras l\u00f3gicas Cluster y Bucket, as\u00ed como las nuevas estructuras Scope y Collections. Los aspectos m\u00e1s destacados pueden agruparse en dos secciones. La primera es la nueva API, que se ha renovado en todos los SDK para ofrecer patrones de acceso m\u00e1s sencillos y preparados para el futuro. La segunda son las mejoras espec\u00edficas de Go SDK.<\/p>\n<h3>Mejoras en la API de valores clave<\/h3>\n<p>La API ha sido significativamente adelgazada y reelaborada para que las llamadas a m\u00e9todos individuales sean m\u00e1s f\u00e1ciles de encontrar y m\u00e1s uniformes. Para Go esto significa que ya no necesitamos tener m\u00faltiples llamadas para funciones similares, pero diferentes. Tambi\u00e9n hemos reducido el n\u00famero de par\u00e1metros necesarios en algunas funciones.<\/p>\n<p>Por ejemplo, en SDK 1.0 hab\u00eda firmas de m\u00e9todos como:<\/p>\n<pre class=\"\">func (b *Bucket) Insert(key string, value interface{}, expiry uint32) (Cas, error)\r\nfunc (b *Bucket) InsertDura(key string, value interface{}, expiry uint32, replicateTo, persistTo uint) (Cas, error)\r\nfunc (b *Bucket) Get(key string, valuePtr interface{}) (Cas, error)\r\n<\/pre>\n<p>En SDK 2.0 esto ha cambiado a:<\/p>\n<pre class=\"lang:go decode:true\">func (c *Collection) Insert(key string, val interface{}, opts *InsertOptions) (*MutationResult, error)\r\nfunc (c *Collection) Get(key string, opts *GetOptions) (*GetResult, error)<\/pre>\n<p>Cada m\u00e9todo devuelve un <span class=\"lang:default decode:true crayon-inline\">*Result<\/span> y tiene un par\u00e1metro opcional llamado <span class=\"lang:default decode:true crayon-inline\">*Options<\/span>. Todo lo necesario para que una operaci\u00f3n funcione es un par\u00e1metro y las propiedades opcionales (como el tiempo de espera, los requisitos de durabilidad, el valor cas, etc.) se han trasladado a bloques de opciones. Esto ha dado lugar a un menor n\u00famero de funciones \"sobrecargadas\" y a una API general m\u00e1s sencilla. Los resultados de las operaciones de tipo mutaci\u00f3n contienen elementos como los valores CAS y el token de mutaci\u00f3n. Para las operaciones de tipo Fetch, los resultados contienen formas de obtener su valor y la caducidad del documento (si se solicita).<\/p>\n<p>Los bloques de opciones son structs con el siguiente aspecto<\/p>\n<pre class=\"lang:go decode:true\">type InsertOptions struct {\r\n\tParentSpanContext opentracing.SpanContext\r\n\tTimeout           time.Duration\r\n\tContext           context.Context\r\n\t\/\/ The expiration length in seconds\r\n\tExpiration      uint32\r\n\tPersistTo       uint\r\n\tReplicateTo     uint\r\n\tDurabilityLevel DurabilityLevel\r\n\tEncoder         Encode\r\n}<\/pre>\n<p>Esto proporciona mucha m\u00e1s flexibilidad a nivel de operaciones que la API anterior. Esto significa que antes si quer\u00edas hacer una inserci\u00f3n con <span class=\"lang:default decode:true crayon-inline\">persist to<\/span>\u00a0 conjunto entonces ten\u00edas que hacer <span class=\"lang:default decode:true crayon-inline\">InsertDura(&#8220;key&#8221;, &#8220;value&#8221;, 0, 0, 1)<\/span> , ahora es s\u00f3lo <span class=\"lang:default decode:true crayon-inline\">Insert(&#8220;key&#8221;, &#8220;value&#8221;, &amp;InsertOptions{PersistTo: 1})<\/span>\u00a0.<\/p>\n<p>Ahora tenemos soporte para <span class=\"lang:default decode:true crayon-inline\">context.Context<\/span> para la cancelaci\u00f3n. Lo que esto significa es que puedes usar cosas como tomar el contexto de tu manejador HTTP y suministrarlo directamente a tu operaci\u00f3n gocb, de modo que tengas la misma estructura de cancelaci\u00f3n usada en todo tu manejador de peticiones HTTP. Si no quieres usar <span class=\"lang:default decode:true crayon-inline\">Contexto<\/span> no se preocupe, puede utilizar el bot\u00f3n <span class=\"lang:default decode:true crayon-inline\">Tiempo de espera<\/span>\u00a0 en su lugar.<\/p>\n<h3>Mejoras en la API de consulta<\/h3>\n<p>Las API de consulta, al igual que la API de valor clave, utilizan ahora\u00a0<span class=\"lang:default decode:true crayon-inline\">*Options<\/span> para propiedades de consulta opcionales. Anteriormente, las API ten\u00edan el aspecto siguiente:<\/p>\n<pre class=\"lang:go decode:true\">func (c *Cluster) ExecuteN1qlQuery(q *N1qlQuery, params interface{}) (QueryResults, error)\r\nfunc (c *Cluster) ExecuteAnalyticsQuery(q *AnalyticsQuery, params interface{}) (AnalyticsResults, error)\r\nfunc (c *Cluster) ExecuteSearchQuery(q *SearchQuery) (SearchResults, error)\r\nfunc (b *Bucket) ViewQuery(designDoc string, viewName string, opts *ViewOptions) (*ViewResults, error)<\/pre>\n<p>Ahora parece:<\/p>\n<pre class=\"lang:go decode:true\">func (c *Cluster) Query(statement string, opts *QueryOptions) (*QueryResults, error)\r\nfunc (c *Cluster) AnalyticsQuery(statement string, opts *AnalyticsQueryOptions) (*AnalyticsResults, error)\r\nfunc (c *Cluster) SearchQuery(q SearchQuery, opts *SearchQueryOptions) (*SearchResults, error)\r\nfunc (b *Bucket) ViewQuery(designDoc string, viewName string, opts *ViewOptions) (*ViewResults, error)<\/pre>\n<p>Los bloques de opciones son demasiado grandes para incluirlos aqu\u00ed, pero su aspecto y funcionamiento son similares a los del ejemplo de valor clave anterior. Tambi\u00e9n hemos mejorado la coherencia de la API en todos los servicios de consulta actualizando la forma de acceder a los resultados. Todav\u00eda estamos trabajando en la transcodificaci\u00f3n personalizada de estos resultados. Ahora todos los servicios tambi\u00e9n utilizan streaming para recuperar los resultados, lo que significa que puedes consultar conjuntos de datos enormes sin tener que preocuparte por quedarte sin memoria.<\/p>\n<h3>Mejoras en la gesti\u00f3n de errores<\/h3>\n<p>Anteriormente, expusimos errores centinela (p. ej. <span class=\"lang:default decode:true crayon-inline\">if err == gocb.ErrKeyNotFound<\/span> ) que deb\u00edas comparar si tu operaci\u00f3n devolv\u00eda un error y ten\u00edas tipos de error espec\u00edficos que deb\u00edas manejar. Hemos cambiado esto, ahora exponemos los errores como tipos y tambi\u00e9n proporcionamos funciones de ayuda para categorizar los errores. Ahora puedes hacer <span class=\"lang:default decode:true crayon-inline\">if gocb.IsKeyNotFound(err)<\/span>o escriba el error completo <span class=\"lang:default decode:true crayon-inline\">kvErr := err.(gocb.KeyValueError)<\/span>\u00a0 y accede al contexto subyacente sobre el error si tambi\u00e9n lo necesitas.<\/p>\n<h2>Primeros pasos<\/h2>\n<p>Puedes empezar a utilizar todas estas mejoras haciendo: <span class=\"lang:default decode:true crayon-inline\">go get github.com\/couchbase\/gocb@v2.0.0-alpha.3<\/span><\/p>\n<p>Una vez que tengas el SDK podr\u00e1s conectarte a un cluster, abrir un bucket y usar la colecci\u00f3n por defecto. Por ahora, a menos que uses el modo Developer Preview en Couchbase Server 6.5, solo podr\u00e1s usar la colecci\u00f3n por defecto.<\/p>\n<pre class=\"lang:go decode:true\">cluster, err := gocb.Connect(\"localhost\", gocb.ClusterOptions{Authenticator: gocb.PasswordAuthenticator{\r\n  Username: \"username\",\r\n  Password: \"password\",\r\n}})\r\nif err != nil {\r\n  panic(\"error connecting to cluster:\" + err.Error())\r\n}\r\nbucket := cluster.Bucket(\"bucket-name\", nil)\r\ncollection := bucket.DefaultCollection(nil)\r\n\r\n\/\/ Now you can perform operations:\r\n\r\nupsertResult, err := collection.Upsert(\"somekey\", \"somevalue\", &amp;gocb.UpsertOptions{Timeout: 10*time.Millisecond})\r\nif err != nil {\r\n  panic(err)\r\n}\r\n\r\nfmt.Println(upsertResult.Cas())\r\n\r\ngetResult, err := collection.Get(\"somekey\", nil)\r\nif err != nil {\r\n  panic(err)\r\n}\r\n\r\nvar myValue string\r\nerr = getResult.Content(&amp;myValue)\r\nif err != nil {\r\n  panic(err)\r\n}\r\n\r\nctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)\r\ndefer cancel()\r\nresults, err := cluster.Query(\"SELECT `bucket-name`.* from `bucket-name` LIMIT 10\", &amp;gocb.QueryOptions{\r\n\tContext: ctx,\r\n})\r\nif err != nil {\r\n  panic(err)\r\n}\r\nvar myQueryValue interface{}\r\nfor results.Next(&amp;myQueryValue) {\r\n}\r\n\r\nerr = results.Close() \r\nif err != nil { \r\n  panic(err) \r\n}\r\n<\/pre>\n<p>Observe que la apertura de cubos ya no devuelve un error, aunque sigue siendo el lugar donde se produce la conexi\u00f3n. En su lugar, aplazamos la devoluci\u00f3n de errores hasta la primera operaci\u00f3n. En el futuro podr\u00e1s comprobar la salud de la conexi\u00f3n del cubo antes de realizar operaciones.<\/p>\n<p>Si quiere saber m\u00e1s, eche un vistazo a nuestro nuevo\u00a0<a href=\"https:\/\/docs.couchbase.com\/go-sdk\/2.0\/hello-world\/start-using-sdk.html\" rel=\"nofollow\">documentaci\u00f3n<\/a>\u00a0que tambi\u00e9n est\u00e1 empezando a cuajar.<\/p>\n<p>La API es bastante nueva, y alfa, por lo que todav\u00eda est\u00e1 sujeta a cambios - aunque no deber\u00eda cambiar dr\u00e1sticamente. Apreciar\u00edamos todos los comentarios y reportes de errores para hacer de este el mejor SDK que hayamos entregado. Esta es tu oportunidad para ayudar a dar forma al futuro del SDK de Couchbase Go.<\/p>\n<h2>\u00bfC\u00f3mo se versiona?<\/h2>\n<p>Todos los SDK se suscriben a la especificaci\u00f3n Semantic Versioning 2.0.0 (SemVer) en la que, para cualquier n\u00famero de versi\u00f3n dado <span class=\"lang:default decode:true crayon-inline\">MAYOR.MENOR.PARCHE<\/span>la versi\u00f3n se incrementa cuando:<\/p>\n<p>versi\u00f3n MAJOR cuando realice cambios incompatibles en la API,<\/p>\n<p>versi\u00f3n MINOR cuando se a\u00f1aden funciones de forma compatible con versiones anteriores, y<\/p>\n<p>Versi\u00f3n PATCH cuando realice correcciones de errores compatibles con versiones anteriores.<\/p>\n<p>Adem\u00e1s, para las versiones preliminares y los metadatos de compilaci\u00f3n, a\u00f1adimos extensiones a la especificaci\u00f3n SemVer seg\u00fan lo permita. Por ejemplo, nuestras primeras versiones del SDK 2.0 utilizan la designaci\u00f3n alfa m\u00e1s un incremento para la versi\u00f3n alfa. Por ejemplo, nuestras primeras versiones preliminares de SDK 2.0 utilizaban la siguiente versi\u00f3n compatible con SemVer: <span class=\"lang:default decode:true crayon-inline\">2.0.0-alpha.1<\/span> . La pr\u00f3xima versi\u00f3n preliminar despu\u00e9s de las versiones alfa ser\u00e1 <span class=\"lang:default decode:true crayon-inline\">2.0.0-beta.1<\/span> . Por \u00faltimo, se lanzar\u00e1 una versi\u00f3n GA totalmente compatible <span class=\"lang:default decode:true crayon-inline\">2.0.0<\/span> . En general, se esperan cambios de \u00faltima hora entre las versiones alfa. Los cambios de \u00faltima hora no deber\u00edan producirse (pero en algunos casos pueden ser necesarios) una vez que se publique la versi\u00f3n beta.<\/p>\n<p>&nbsp;<\/p>\n<p>Imagen de portada de Maria Letta en el marco de la\u00a0<a href=\"https:\/\/github.com\/MariaLetta\/free-gophers-pack\/\">paquete de topos gratis.<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>I&#8217;m pleased to announce the Couchbase Go SDK 2.0 Alpha. This new SDK brings in a series of changes across all of the Couchbase SDKs that the team has been putting together. The new SDKs bring a completely new API [&hellip;]<\/p>","protected":false},"author":17480,"featured_media":7091,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1820,2201],"tags":[2364],"ppma_author":[8944],"class_list":["post-7075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-golang","category-tools-sdks","tag-collections"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing Couchbase Go SDK 2.0 Alpha - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Check out the new Couchbase Go SDK Alpha and find out what we&#039;re changing in this latest major release.\" \/>\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\/introducing-couchbase-go-sdk-2-0-alpha\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing Couchbase Go SDK 2.0 Alpha\" \/>\n<meta property=\"og:description\" content=\"Check out the new Couchbase Go SDK Alpha and find out what we&#039;re changing in this latest major release.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-go-sdk-2-0-alpha\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-18T16:05:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:20:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png\" \/>\n\t<meta property=\"og:image:width\" content=\"666\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Charles Dixon, Software Engineer, 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=\"Charles Dixon, Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/\"},\"author\":{\"name\":\"Charles Dixon, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/cd440eed5f00a0f702828c9f3697f6c3\"},\"headline\":\"Introducing Couchbase Go SDK 2.0 Alpha\",\"datePublished\":\"2019-06-18T16:05:58+00:00\",\"dateModified\":\"2025-06-14T04:20:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/\"},\"wordCount\":1251,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png\",\"keywords\":[\"collections\"],\"articleSection\":[\"GoLang\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/\",\"name\":\"Introducing Couchbase Go SDK 2.0 Alpha - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png\",\"datePublished\":\"2019-06-18T16:05:58+00:00\",\"dateModified\":\"2025-06-14T04:20:29+00:00\",\"description\":\"Check out the new Couchbase Go SDK Alpha and find out what we're changing in this latest major release.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png\",\"width\":666,\"height\":512,\"caption\":\"Image by Maria Letta as a part of the\u00a0free gophers pack - https:\/\/github.com\/MariaLetta\/free-gophers-pack\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing Couchbase Go SDK 2.0 Alpha\"}]},{\"@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\/cd440eed5f00a0f702828c9f3697f6c3\",\"name\":\"Charles Dixon, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9cb6d8cbb9125a775db01b9a74258c36\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6359fe0ffc778647ed89c818c1474ac1151dae1fe4bf7315ad38a0ec92cfe9af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6359fe0ffc778647ed89c818c1474ac1151dae1fe4bf7315ad38a0ec92cfe9af?s=96&d=mm&r=g\",\"caption\":\"Charles Dixon, Senior Software Engineer, Couchbase\"},\"description\":\"Charles Dixon is a Senior Software Engineer at Couchbase. He primarily works on the Couchbase Go SDK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/charles-dixon\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introducing Couchbase Go SDK 2.0 Alpha - The Couchbase Blog","description":"Check out the new Couchbase Go SDK Alpha and find out what we're changing in this latest major release.","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\/introducing-couchbase-go-sdk-2-0-alpha\/","og_locale":"es_MX","og_type":"article","og_title":"Introducing Couchbase Go SDK 2.0 Alpha","og_description":"Check out the new Couchbase Go SDK Alpha and find out what we're changing in this latest major release.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-go-sdk-2-0-alpha\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-06-18T16:05:58+00:00","article_modified_time":"2025-06-14T04:20:29+00:00","og_image":[{"width":666,"height":512,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png","type":"image\/png"}],"author":"Charles Dixon, Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Charles Dixon, Software Engineer, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/"},"author":{"name":"Charles Dixon, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/cd440eed5f00a0f702828c9f3697f6c3"},"headline":"Introducing Couchbase Go SDK 2.0 Alpha","datePublished":"2019-06-18T16:05:58+00:00","dateModified":"2025-06-14T04:20:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/"},"wordCount":1251,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png","keywords":["collections"],"articleSection":["GoLang","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/","name":"Introducing Couchbase Go SDK 2.0 Alpha - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png","datePublished":"2019-06-18T16:05:58+00:00","dateModified":"2025-06-14T04:20:29+00:00","description":"Check out the new Couchbase Go SDK Alpha and find out what we're changing in this latest major release.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/go_sdk_200_alpha-e1560873888608.png","width":666,"height":512,"caption":"Image by Maria Letta as a part of the\u00a0free gophers pack - https:\/\/github.com\/MariaLetta\/free-gophers-pack"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-go-sdk-2-0-alpha\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing Couchbase Go SDK 2.0 Alpha"}]},{"@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\/cd440eed5f00a0f702828c9f3697f6c3","name":"Charles Dixon, Ingeniero Superior de Software, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9cb6d8cbb9125a775db01b9a74258c36","url":"https:\/\/secure.gravatar.com\/avatar\/6359fe0ffc778647ed89c818c1474ac1151dae1fe4bf7315ad38a0ec92cfe9af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6359fe0ffc778647ed89c818c1474ac1151dae1fe4bf7315ad38a0ec92cfe9af?s=96&d=mm&r=g","caption":"Charles Dixon, Senior Software Engineer, Couchbase"},"description":"Charles Dixon is a Senior Software Engineer at Couchbase. He primarily works on the Couchbase Go SDK.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/charles-dixon\/"}]}},"authors":[{"term_id":8944,"user_id":17480,"is_guest":0,"slug":"charles-dixon","display_name":"Charles Dixon, Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6359fe0ffc778647ed89c818c1474ac1151dae1fe4bf7315ad38a0ec92cfe9af?s=96&d=mm&r=g","author_category":"","last_name":"Dixon, Software Engineer, Couchbase","first_name":"Charles","job_title":"","user_url":"","description":"Charles Dixon es Ingeniero de Software en Couchbase. Trabaja en el SDK de Couchbase Go."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7075","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\/17480"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=7075"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/7091"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=7075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=7075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=7075"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=7075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}