{"id":1526,"date":"2012-01-23T09:00:00","date_gmt":"2012-01-23T08:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1526"},"modified":"2023-06-28T01:40:12","modified_gmt":"2023-06-28T08:40:12","slug":"client-libraries-couchbase-server","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/","title":{"rendered":"Client Libraries for Couchbase Server"},"content":{"rendered":"<p>Couchbase Server is simple to develop for by it&#8217;s very nature. \u00a0Modeling your data, as many of my colleagues often say, is simply a matter of organizing it like the natural world around you. \u00a0I know that seems like a blindingly straightforward idea, but many a software developer has had to deal with the impedance mismatch when building the software between the users and their data.<\/p>\n<p>When we set out to build Couchbase Server 1.8&#8217;s predecessor, Membase Server, we had a really good handle on how people were doing this with large scale apps already. \u00a0Compatibility with memcached meant you could take an existing app, write a few negative lines of code (that means remove them, not write grumpy code!) and be up and running on Couchbase Server.<\/p>\n<p>The magic for this was by proxying either client or server side with Moxi. \u00a0We already have such high throughput and low latency, that Moxi overhead is not noticeable in most deployments.<\/p>\n<p>We had also developed a couple of clients that knew at their inner-hashing-algorithm-core how to find or store a piece of data. \u00a0The engineers in us said this was the pure way. \u00a0Many of our users agreed, and we&#8217;d often had requests about building smarter, but compatible, client libraries for other platforms. \u00a0If we were to do so we&#8217;d simplify even further by removing the pretty transparent, but still required layer of Moxi.<\/p>\n<p>Starting today, we&#8217;ve made things even simpler and faster where the code meets the wire.<\/p>\n<p>With the new release of Couchbase Server 1.8, we have a set of PHP, Ruby and C client libraries which know all about a cluster and how to work with it. \u00a0We kept to either exactly or almost exactly the same API. \u00a0This makes for simple upgrades to the new client library. \u00a0We didn&#8217;t stop there though, we also invested in modern packaging, software distribution and better documentation for existing Java and .NET users. \u00a0We simplified and streamlined the website with software development in mind as well. \u00a0Please let me know what you think of it.<\/p>\n<p>In his blog, John Zablocki introduces the new <a href=\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-client-library-1-0\/\">.NET SDK<\/a>, while Rags Srinivas covers the updates in both the <a href=\"https:\/\/www.couchbase.com\/blog\/hello-world-couchbase-and-java\/\">Java<\/a> and <a href=\"https:\/\/www.couchbase.com\/blog\/hello-world-couchbase-and-ruby\/\">Ruby<\/a> SDKs. \u00a0Our own Jan Lehnardt also gives a quick rundown on the <a href=\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-php-library-10\/\">PHP SDK<\/a>. \u00a0PHP and Ruby get their smarts from the brand new C (a.k.a. libcouchbase) SDK. \u00a0It&#8217;s new from the ground up, and built for speed and portability.<\/p>\n<p>Just to give one small example of what I mean, here is a sampling operations out of our Ruby client library built atop libcouchbase:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace\">Loops is 5000<br \/>\nSmall value size is: 19 bytes<br \/>\nLarge value size is: 4189 bytes<br \/>\nuser \u00a0 \u00a0 system \u00a0 \u00a0 \u00a0total \u00a0 \u00a0 \u00a0 \u00a0real<br \/>\nset: dalli \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.640000 \u00a0 0.310000 \u00a0 0.950000 ( \u00a02.280556)<br \/>\nset: memcached \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.260000 \u00a0 0.180000 \u00a0 0.440000 ( \u00a01.741302)<br \/>\nset: memcached:buffer \u00a0 \u00a0 \u00a0 \u00a00.070000 \u00a0 0.120000 \u00a0 0.190000 ( \u00a01.242726)<br \/>\nset: couchbase \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.220000 \u00a0 0.270000 \u00a0 0.490000 ( \u00a00.930583)get: dalli \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.660000 \u00a0 0.250000 \u00a0 0.910000 ( \u00a02.348882)<br \/>\nget: memcached \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.240000 \u00a0 0.390000 \u00a0 0.630000 ( \u00a02.859149)<br \/>\nget: memcached:buffer \u00a0 \u00a0 \u00a0 \u00a00.290000 \u00a0 0.310000 \u00a0 0.600000 ( \u00a02.778201)<br \/>\nget: couchbase \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.260000 \u00a0 0.260000 \u00a0 0.520000 ( \u00a00.907956)get-multi: dalli \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.910000 \u00a0 1.150000 \u00a0 2.060000 (200.106302)<br \/>\nget-multi: memcached \u00a0 \u00a0 \u00a0 \u00a0 0.350000 \u00a0 0.720000 \u00a0 1.070000 (200.054008)<br \/>\nget-multi: memcached:buffer \u00a00.350000 \u00a0 0.510000 \u00a0 0.860000 (200.028848)<br \/>\nget-multi: couchbase \u00a0 \u00a0 \u00a0 \u00a0 0.210000 \u00a0 0.140000 \u00a0 0.350000 ( \u00a00.442803)<\/div>\n<\/div>\n<p>That shows execution time in both CPU and wall clock for a fixed workload. \u00a0Lower numbers are better, of course. \u00a0The code for the benchmark is in the ruby client.<\/p>\n<p>I definitely respect the other clients and we still provide perfect compatibility for them through Moxi, but you can easily see that by adding some smarts we&#8217;ve been able to bring throughput up 150-200% (and much, much higher in one particular case). \u00a0It&#8217;s not often you&#8217;ll see that kind of speedup with mature software!<\/p>\n<p>We&#8217;ve seen similar results from the PHP client library. I&#8217;m pretty sure it&#8217;s going to be hot stuff for simplifying deployments and giving extra headroom in performance critical deployments<\/p>\n<p>Please jump straight into the area that interests you, whether it&#8217;s Java, .NET, PHP, Ruby or C. \u00a0There are also a few other experimental clients happening. \u00a0If you have any questions or feedback let us know on the forums.<\/p>\n<p><span style=\"font-family: ff-meta-serif-web-pro-1, ff-meta-serif-web-pro-2, Georgia, 'Times New Roman', Times, serif;font-size: 16px;font-style: normal\">Happy hacking!<\/span><\/p>\n<p>p.s. I am serious about wanting feedback on the new site. Please let me know.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Server is simple to develop for by it&#8217;s very nature. \u00a0Modeling your data, as many of my colleagues often say, is simply a matter of organizing it like the natural world around you. \u00a0I know that seems like a [&hellip;]<\/p>\n","protected":false},"author":2,"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":[8968],"class_list":["post-1526","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.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Client Libraries for Couchbase Server - 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\/client-libraries-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Client Libraries for Couchbase Server\" \/>\n<meta property=\"og:description\" content=\"Couchbase Server is simple to develop for by it&#8217;s very nature. \u00a0Modeling your data, as many of my colleagues often say, is simply a matter of organizing it like the natural world around you. \u00a0I know that seems like a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-01-23T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T08:40:12+00:00\" \/>\n<meta name=\"author\" content=\"The Couchbase Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"The Couchbase Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\"},\"author\":{\"name\":\"The Couchbase Team\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93\"},\"headline\":\"Client Libraries for Couchbase Server\",\"datePublished\":\"2012-01-23T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:40:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\"},\"wordCount\":662,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\",\"name\":\"Client Libraries for Couchbase Server - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2012-01-23T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:40:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#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\/client-libraries-couchbase-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Client Libraries for Couchbase Server\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\/764f4a6771ee19bc7af70b70a326fb93\",\"name\":\"The Couchbase Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"caption\":\"The Couchbase Team\"},\"description\":\"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.\",\"sameAs\":[\"https:\/\/www.couchbase.com\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/jennifer-garcia\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Client Libraries for Couchbase Server - 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\/client-libraries-couchbase-server\/","og_locale":"en_US","og_type":"article","og_title":"Client Libraries for Couchbase Server","og_description":"Couchbase Server is simple to develop for by it&#8217;s very nature. \u00a0Modeling your data, as many of my colleagues often say, is simply a matter of organizing it like the natural world around you. \u00a0I know that seems like a [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/","og_site_name":"The Couchbase Blog","article_published_time":"2012-01-23T08:00:00+00:00","article_modified_time":"2023-06-28T08:40:12+00:00","author":"The Couchbase Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"The Couchbase Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/"},"author":{"name":"The Couchbase Team","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93"},"headline":"Client Libraries for Couchbase Server","datePublished":"2012-01-23T08:00:00+00:00","dateModified":"2023-06-28T08:40:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/"},"wordCount":662,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/","url":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/","name":"Client Libraries for Couchbase Server - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2012-01-23T08:00:00+00:00","dateModified":"2023-06-28T08:40:12+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/client-libraries-couchbase-server\/#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\/client-libraries-couchbase-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Client Libraries for Couchbase Server"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/764f4a6771ee19bc7af70b70a326fb93","name":"The Couchbase Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3","url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","caption":"The Couchbase Team"},"description":"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.","sameAs":["https:\/\/www.couchbase.com"],"url":"https:\/\/www.couchbase.com\/blog\/author\/jennifer-garcia\/"}]}},"authors":[{"term_id":8968,"user_id":2,"is_guest":0,"slug":"jennifer-garcia","display_name":"The Couchbase Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","author_category":"","last_name":"Garcia","first_name":"Jennifer","job_title":"","user_url":"https:\/\/www.couchbase.com","description":"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1526"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1526\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=1526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1526"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}