{"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\/ko\/stabilizing-couchbase-server-2-dot-0\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 2.0 \uc548\uc815\ud654\ud558\uae30"},"content":{"rendered":"<p><em>[This blog was syndicated from https:\/\/damienkatz.net\/]<\/em><\/p>\n<p>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, efficient, reliable, full-featured distributed document database is a non-trivial matter ;)<\/p>\n<p>In addition to the same \u201csimple, fast, elastic\u201d memcached and clustering technology we have in previous versions of Couchbase, we&#8217;ve added 3 big new features to dramatically extend it\u2019s capabilities and use cases, as well as its performance and reliability.<\/p>\n<h4>Couchstore: High Throughput, Recovery Oriented Storage<\/h4>\n<p>One of the biggest obstacles for 2.0 was the Erlang-based storage engine was too resource heavy compared to our 1.8.x release, which uses SQLite. We did a ton of optimization work and modifications, stripping out everything we could to make it as a fast and efficient as possible, and in the process making our Erlang-based storage code several times faster than when we started, but the CPU and resource usage was still too high, and without lots of CPU cores, we couldn\u2019t get total system performance where our existing customers needed it.<\/p>\n<p>In the end, the answer was to rewrite the core storage engine and compactor in C, using a format bit for bit compatible with our Erlang storage engine, so that updates written in one process could be read, indexed, replicated, and even compacted from Erlang. It\u2019s the same basic tail-append, recovery oriented MVCC design, so it\u2019s simple to write to it from one OS process and read it from another process. The storage format is immune to corruption caused by server crashes, OOM killers or even power loss.<\/p>\n<p>Rewriting it in C let us break through many optimization barriers. We are easily getting 2x the write throughput over the optimized Erlang engine and SQLite engines, with less CPU and a fraction of the memory overhead.<\/p>\n<p>Not all of this is due to C being faster than Erlang. A good chunk of the performance boost is just being able to embed the persistence engine in-process. That alone cut out a lot of CPU and overhead by avoiding transmitting data across processes and converting to Erlang in-memory structures. But also it\u2019s C, which provides good low level control and we can optimize much more easily. The cost is more engineering effort and low-level code, but the performance gains have proven very much worth it.<\/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=\"\" \/>And so now we\u2019ve got the same optimistically updating, MVCC capable, recovery oriented, fragmentation resistant storage engines both in Erlang and C. Reads don\u2019t block writes and writes don\u2019t block reads. Writes also happen concurrently with compaction. Getting all or incremental changes via MVCC snapshotting and the by_sequence index makes our disk io mostly linear for fast warmup, indexing, and cluster rebalances. It allows asynchronous indexing, and it also powers XDCR.<\/p>\n<h4>B-Superstar: Cluster Aware Incremental Map\/Reduce<\/h4>\n<p>Another big item was bringing all the important features of CouchDB incremental map\/reduce views to Couchbase, and combining it with clustering while maintaining consistency during rebalance and failover.<\/p>\n<p>We started using an index per virtual partition (vbucket), merging across all indexes results at query time, but quickly scrapped that design as it simply wouldn\u2019t bring us the performance or scalability we needed. We needed a system to support MVCC range scans, with fast multi-level key based reductions (_sum, _count, _stats, and user defined reductions), and require the fewest index reads possible.<\/p>\n<p>What we came up with uses the proven CouchDB-based view model, same javascript incremental map\/reduce, same pre-indexed, memoized reductions stored in inner btree nodes for low cost range queries, yet can instantly exclude invalid partitions results when partitions are rebalanced off a node, or are partially indexed on a new node.<\/p>\n<p>We embed a bitmap partition index in each btree node that is the recursive OR of all child reductions. Due to the tail append index updates, it\u2019s a linear write to update modified leaf nodes through to root while updating all the bitmaps. Now we can tell instantly which subtrees have values emitted from a particular vbucket.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Click on the image to enlarge<\/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>During steady state we have a system that performs with nearly the same efficiency as our regular btrees (just the extra cost of 1 bit per btree node times the number of virtual partitions).<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Click on the image to enlarge<\/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>But can exclude vBucket partitions by flipping a single bit mask, for rebalance\/failover consistency, with temporary higher query-time cost until the indexes are re-optimized.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Click on the image to enlarge<\/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>In the worst case, O(logN) operations become O(N) until the excluded index results are removed from the index.<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Click on the image to enlarge<\/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>The index is once again the steady state, and queries are 0(logN).<\/p>\n<p class=\"rtecenter\" style=\"font-size: 14px;\"><strong>Click on the image to enlarge<\/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>The really cool thing is this also works in reverse, so we can start inserting into a vBucket\u2019s new node\u2019s view index as it rebalances, but exclude the results until the rebalance is complete. The result is consistent view indexes and queries both during steady state and while actively failing-over or rebalancing.<\/p>\n<h4>Cross data center replication (XDCR)<\/h4>\n<p>Couchbase 2.0 will also have multi-master, cluster aware replication. It allows for geographically dispersed clusters to replicate changes incrementally, tolerant of transient network failures and independent cluster topologies.<\/p>\n<p>If you have a single cluster and geographical dispersed users, latency will slow down applications for distant users. The further away and more network hops a user faces the more inherent latency they will experience. The best way to lower latency for far-away users is to bring the data closer to the user.<\/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=\"\" \/>With Couchbase XDCR, you can have clusters in multiple data centers, spread across regions and continents, greatly reducing the application latency for users in those regions. Data can be updated at any cluster, replicating changes to remote clusters either on a fixed schedule or continuously. Edit conflicts are resolved by using a \u201cmost edited\u201d rule, allowing all clusters to converge on the same value.<\/p>\n<h4>Solid Foundation<\/h4>\n<p>I feel like we are just getting started. There is a still a ton of detail and new features I haven\u2019t gone into, these are just some of the highlights. I\u2019m really proud and excited not just by what we have for 2.0, but what&#8217;s possible on the fast, reliable and flexible foundation we&#8217;ve built and the future features and technology we can now easily build. I see a very bright future.<\/p>\n","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>\n","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"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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\/ko\/stabilizing-couchbase-server-2-dot-0\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\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\/ko\/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\ubd84\" \/>\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\":\"ko-KR\",\"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\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stabilizing-couchbase-server-2-dot-0\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\":\"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\\\/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\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g225d5d7d9157ae1ab738ce6870478666\",\"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\\\/ko\\\/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\/ko\/stabilizing-couchbase-server-2-dot-0\/","og_locale":"ko_KR","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\/ko\/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\ubd84"},"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":"ko-KR","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":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/stabilizing-couchbase-server-2-dot-0\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@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":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","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\/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":"\ub370\ubbf8\uc548 \uce74\uce20, \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc124\ub9bd\uc790 \uacb8 CTO. CouchDB\uc758 \ucc3d\uc2dc\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/629481d3e910a847a53e623e825a5eb9b6c24caabab52f59bfe1397c8448ed8c?s=96&d=mm&r=g225d5d7d9157ae1ab738ce6870478666","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\ub294 Couchbase\uc758 \ucc3d\ub9bd\uc790\uc774\uc790 CTO\uc785\ub2c8\ub2e4. Apache CouchDB\uc758 \ucc3d\uc2dc\uc790\uc774\uc790 Membase\uc640 \ud569\ubcd1\ud558\uc5ec Couchbase\ub97c \uc124\ub9bd\ud55c CouchOne\uc758 \uacf5\ub3d9 \ucc3d\ub9bd\uc790\uc785\ub2c8\ub2e4. \uadf8\ub294 IBM\uc5d0 \uc778\uc218\ub41c Iris Associates\uc758 Lotus Notes\uc5d0\uc11c \uc77c\ud558\uba74\uc11c \uac1c\ubc1c\uc790 \uc0dd\ud65c\uc744 \uc2dc\uc791\ud588\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/damien-katz\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1795","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1795"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1795"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}