{"id":333,"date":"2015-12-16T19:29:35","date_gmt":"2015-12-16T19:29:35","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/"},"modified":"2015-12-16T19:29:35","modified_gmt":"2015-12-16T19:29:35","slug":"leveraging-the-power-of-couchbase-in-classic-asp-applications","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/","title":{"rendered":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications"},"content":{"rendered":"<p><strong>Note: this is a guest post by Vojta Jakubec of <a href=\"https:\/\/www.concur.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Concur Technologies<\/a>, a travel management expense company that provides travel and expense management services to businesses.<\/strong><\/p>\n\n\n\n<p>At Concur, we have experience building software as a service for over 15 years. With 93 million airline passengers booking through our Travel &amp; Expense product in the last year, we are leading the business travel market. To put this in perspective, any commercial airplane world-wide would have on average over 3 passengers who booked the ticket through our software.<\/p>\n\n\n\n<p>However running a successful SaaS product for over a decade has some drawbacks as well. We found ourselves in a situation where we had to extend the lifespan of our front end UI well beyond the original expectations. A significant part of it is still in classic ASP, which was the go-to Microsoft tech stack before .NET came around. In order to keep up with our customer demands, we have taken several technical steps to modernize the environment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Data caching in classic ASP<\/h2>\n\n\n\n<p>One of the initiatives we have taken was to introduce data caching in the ASP layer. Each call between UI and midtier takes several milliseconds. The problem is that the classic ASP rendering engine does not offer any way to parallelize these calls, so the total page execution time keeps adding up. In some cases it could reach up to several hundred milliseconds. For this reason, we need to keep the time to obtain mid-tier data to a minimum.<\/p>\n\n\n\n<p>Our solution was to host a data cache in Couchbase. Instead of making an expensive 30ms call to the mid-tier, the UI can obtain the same data in less than 1ms from the cache in Couchbase. The mid-tier call is only necessary when the is no cached data.<\/p>\n\n\n\n<p>To minimize data access time, we had to access the Couchbase data natively from classic ASP. Routing through an additional service layer would only increase latency and hinder our caching efforts. For this reason we created an <a href=\"https:\/\/github.com\/concur\/couchbase-interop\" target=\"_blank\" rel=\"noopener noreferrer\">open source COM wrapper <\/a>around the .NET SDK for Couchbase. It allows any application capable of working with COM objects to natively work with Couchbase servers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">COM SDK Deployment<\/h2>\n\n\n\n<p>The simplest deployment scenario is to copy the Couchbase COM SDK files onto your server and register the COM classes with the <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/tzat5yw6%28v=vs.110%29.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Regasm<\/a> tool. You can get the binaries from the latest <a href=\"https:\/\/github.com\/concur\/couchbase-interop\/releases\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub release<\/a> or build the project yourself. The Regasm tool is a part of the .NET Framework installation and should already be present on your server.<\/p>\n\n\n\n<p>At this point the Couchbase COM SDK should be available to your applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">COM SDK Configuration<\/h2>\n\n\n\n<p>Mapping the .NET configuration classes onto COM objects would mean significant long term effort to keep the two in sync. Luckily the .NET SDK gave us the option to use external configuration files. In practice it\u2019s just like working with App.Config or Web.config files in any .NET application. For more details please refer to <a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/ref\/client-settings.html\" target=\"_blank\" rel=\"noopener noreferrer\">.NET SDK documentation<\/a>.<\/p>\n\n\n\n<p>Example of configuring the COM SDK in ASP code:<\/p>\n\n\n\n<p>The above example will open a configuration file from the specified path, look up the configuration section named \u201caspCacheConfigSection\u201d and configure the underlying .NET SDK with it. This is a one-time operation that can be done in global.asa on application start.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optimizing resource use<\/h2>\n\n\n\n<p>In ASP, users typically create and destroy COM objects quite rapidly. By detaching the lifespan of the underlying .NET SDK objects from their COM object wrappers, we were able to optimize for this use case without negatively impacting resource use or performance. All COM SDK bucket objects representing one Couchbase bucket actually use a singleton .NET SDK bucket object underneath.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example of simple ASP caching<\/h2>\n\n\n\n<p>The following example assumes you already configured the SDK to connect to a Couchbase cluster which has a bucket called \u201cdefault\u201d on it.<\/p>\n\n\n\n<p>We always start by creating a factory class, from which we request an object that allows us to work with a named bucket (\u201cdefault\u201d in this example). Using the Get operation, we either find and immediately use the cached data, or we issue a mid-tier request and store the result in Couchbase. Note that the Upsert operation to store data takes an additional parameter specifying the expiration, in this case 60 seconds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>With this simple COM wrapper around the Couchbase .NET SDK, we gain all the power Couchbase can offer natively in classic ASP applications. This allowed us to easily scale our ASP UI with just a few code tweaks. Creation of the COM SDK also led to several contributions to improve the .NET SDK and push the limits of how it can be used.<\/p>","protected":false},"excerpt":{"rendered":"<p>Note: this is a guest post by Vojta Jakubec of Concur Technologies, a travel management expense company that provides travel and expense management services to businesses. At Concur, we have experience building software as a service for over 15 years. With 93 million airline passengers booking through our Travel &amp; Expense product in the last [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[33,127,64],"tags":[128],"ppma_author":[32],"class_list":["post-333","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-application-design","category-tools-sdks","tag-asp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications - 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\/ko\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications\" \/>\n<meta property=\"og:description\" content=\"Note: this is a guest post by Vojta Jakubec of Concur Technologies, a travel management expense company that provides travel and expense management services to businesses. At Concur, we have experience building software as a service for over 15 years. With 93 million airline passengers booking through our Travel &amp; Expense product in the last [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-16T19:29:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications\",\"datePublished\":\"2015-12-16T19:29:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/\"},\"wordCount\":783,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"asp\"],\"articleSection\":[\".NET\",\"Application Design\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/\",\"name\":\"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-12-16T19:29:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/leveraging-the-power-of-couchbase-in-classic-asp-applications\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications\"}]},{\"@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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/jeffrysmorris\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ko\\\/author\\\/jeff-morris\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications - 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\/ko\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/","og_locale":"ko_KR","og_type":"article","og_title":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications","og_description":"Note: this is a guest post by Vojta Jakubec of Concur Technologies, a travel management expense company that provides travel and expense management services to businesses. At Concur, we have experience building software as a service for over 15 years. With 93 million airline passengers booking through our Travel &amp; Expense product in the last [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-12-16T19:29:35+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications","datePublished":"2015-12-16T19:29:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/"},"wordCount":783,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","keywords":["asp"],"articleSection":[".NET","Application Design","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/","url":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/","name":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2015-12-16T19:29:35+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/leveraging-the-power-of-couchbase-in-classic-asp-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Guest post from Concur: Leveraging the power of Couchbase in classic ASP applications"}]},{"@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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, Senior Software Engineer, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/jeff-morris\/"}]}},"acf":[],"authors":[{"term_id":32,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=333"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/333\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=333"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}