{"id":2220,"date":"2016-04-19T15:00:00","date_gmt":"2016-04-19T15:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2220"},"modified":"2023-06-23T05:10:08","modified_gmt":"2023-06-23T12:10:08","slug":"use-couchbase-and-rxjava-to-make-java-read-csv-files","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/","title":{"rendered":"Use Couchbase and RxJava to Make Java Read CSV files"},"content":{"rendered":"<p>RxJava is an awesome tool for reactive programming that&#8217;s also useful as a Java CSV reader.<\/p>\n<p>In case you&#8217;ve never used or even heard of RxJava, it is a a way of programming with asynchronous data streams. It is also event-based programming where you can observe or listen for stream data and do something when said stream is discovered. Data streams can be anything ranging from variables to data structures.<\/p>\n<p>For this example, lets say a line of CSV data is a data stream. Many developers find themselves needing to load CSV data into their database more often than they expect. In most scenarios you cannot just read lines from a CSV file and drop it into a database. In this example, we&#8217;re going to use RxJava to subscribe to a stream of data and transform it into Java for reading the CSV files that will be saved into Couchbase.<\/p>\n<h2>The Requirements<\/h2>\n<p>There are not too many requirements to get this project up and running. At a minimum, you&#8217;ll need the following:<\/p>\n<ul>\n<li>JDK 1.8+<\/li>\n<li>Apache Maven 3.3+<\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/nosql-databases\/couchbase-server\/\">Couchbase Server<\/a> 4.1+<\/li>\n<\/ul>\n<p>All of the development and work will happen with the JDK 1.8 and Maven, and this includes running the application.<\/p>\n<h2>Understanding the Dataset and Data Model<\/h2>\n<p>A great way to get your feet wet when it comes to RxJava is to get a sample dataset to play around with. For simplicity we&#8217;ll invent our own comma separated value (CSV) file, but if you wanted something more extravagant, you can visit the data science website, <a href=\"https:\/\/www.kaggle.com\/\">Kaggle<\/a>.<\/p>\n<p>Let&#8217;s assume that our simple CSV dataset has the following columns per row:<\/p>\n<ol>\n<li>id<\/li>\n<li>first_name<\/li>\n<li>last_name<\/li>\n<li>twitter<\/li>\n<\/ol>\n<p>From a query and analysis perspective, working with the data in CSV format is near impossible. Instead, this data is going to be stored as NoSQL data so it can be later processed. We won&#8217;t get into the number crunching and querying here, but it will come in a future article. Right now we just want to get it into NoSQL format.<\/p>\n<p>When loaded into Couchbase, each row of the CSV will look something like the following:<\/p>\n<pre><code>\r\n{\r\n    \"id\": 1,\r\n    \"first_name\": \"Nic\",\r\n    \"last_name\": \"Raboy\",\r\n    \"twitter\": \"nraboy\"\r\n}\r\n<\/code><\/pre>\n<p>Yes, the above chunk of data is a JSON document, which is what Couchbase supports. Now that we know the data goals, we can begin loading the CSV data into Couchbase with RxJava.<\/p>\n<h2>Transforming the Raw Data and Writing to Couchbase<\/h2>\n<p>To use RxJava to load CSV data via a Java application, a few dependencies must be included. We need to include RxJava, OpenCSV, and the Couchbase Java SDK. Since we&#8217;re using Maven, all can be included via the Maven <strong>pom.xml<\/strong> file. To include RxJava, include the following dependency in your Maven file:<\/p>\n<pre><code>\r\n\r\n    io.reactivex\r\n    rxjava\r\n    1.1.2\r\n\r\n<\/code><\/pre>\n<p>Since the raw data will be in the form of CSV, we can use the open source CSV library for Java called OpenCSV. The Maven dependency for OpenCSV can be added like this:<\/p>\n<pre><code>\r\n\r\n    com.opencsv\r\n    opencsv\r\n    3.7\r\n\r\n<\/code><\/pre>\n<p>Finally, Java needs to be connected to <a href=\"https:\/\/developer.couchbase.com\/server\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase Server<\/a>. This can be done through the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/sdks\/intro.html\">Couchbase Java SDK<\/a>. To add this dependency into your Maven project, add the following to your <strong>pom.xml<\/strong> file:<\/p>\n<pre><code>\r\n\r\n    com.couchbase.client\r\n    java-client\r\n    2.2.0\r\n\r\n<\/code><\/pre>\n<p>All the project dependencies are good to go!<\/p>\n<p>To load, but not read, the CSV file, you&#8217;ll create a new <code>CSVReader<\/code> object as follows:<\/p>\n<pre><code>\r\nCSVReader reader = new CSVReader(new FileReader(\"PATH_TO_CSV_FILE\"));\r\n<\/code><\/pre>\n<p>Since this data will eventually be processed into Couchbase, we must connect to our server and open our bucket.<\/p>\n<pre><code>\r\nBucket bucket = CouchbaseCluster.create(\"https:\/\/localhost:8091\").openBucket(\"default\", \"\");\r\n<\/code><\/pre>\n<p>The above assumes that Couchbase is running locally and the data will be saved in the default bucket without a password.<\/p>\n<p>To process the CSV dataset, an RxJava Observable can be created:<\/p>\n<pre><code>\r\nObservable\r\n    .from(reader)\r\n    .map(\r\n        csvRow -&gt; {\r\n            JsonObject object = JsonObject.create();\r\n            object\r\n                .put(\"first_name\", csvRow[1])\r\n                .put(\"last_name\", csvRow[2])\r\n                .put(\"twitter\", csvRow[3]);\r\n            return JsonDocument.create(csvRow[0], object);\r\n        }\r\n    )\r\n    .subscribe(document -&gt; bucket.upsert(document), error -&gt; System.out.println(error));\r\n<\/code><\/pre>\n<p>To break down what is happening in the Observable, the following steps occur.<\/p>\n<p>The <code>CSVReader<\/code> creates an <code>Iterable&lt;String[]&gt;<\/code>. The Observable will use the <code>Iterable&lt;String[]&gt;<\/code> as the source of data using the <code>.from<\/code> method.<\/p>\n<p>The data read will be an array of strings, not something that can be stored directly in the database. Using the <code>.map<\/code> function, the array of strings can be transformed into whatever we decide. In this case, the goal is to map each line of the CSV to a Couchbase document. During this mapping process we can do further data cleanup. For example, we could do something like <code>csvRow[*].trim()<\/code> to strip out any leading and trailing whitespace in each CSV column.<\/p>\n<p>Finally with each read line processed, it must be saved to Couchbase. The <code>.subscribe<\/code> method will subscribe to notifications that the Observable emits, in this case the manipulated data.<\/p>\n<h2>Conclusion<\/h2>\n<p>You just got a taste of loading dirty CSV data into Couchbase by using RxJava and the Couchbase Java SDK. By doing reactive programming you can take actions on any data stream that you&#8217;re observing. In our scenario we just wanted to load a CSV file into Couchbase.<\/p>\n<p>If you&#8217;ve got a massive dataset, you can take this tutorial to the next level by using Apache Spark. I wrote a very similar CSV loader found <a href=\"https:\/\/www.couchbase.com\/blog\/load-csv-data-into-couchbase-using-apache-spark\/\">here<\/a> that makes use of Spark.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>RxJava is an awesome tool for reactive programming that&#8217;s also useful as a Java CSV reader. In case you&#8217;ve never used or even heard of RxJava, it is a a way of programming with asynchronous data streams. It is also [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1818],"tags":[1614],"ppma_author":[9032],"class_list":["post-2220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-java","tag-csv"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Use Couchbase and RxJava to Make Java Read CSV files<\/title>\n<meta name=\"description\" content=\"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that&#039;s also useful as a Java CSV reader when paired with Couchbase.\" \/>\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\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Use Couchbase and RxJava to Make Java Read CSV files\" \/>\n<meta property=\"og:description\" content=\"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that&#039;s also useful as a Java CSV reader when paired with Couchbase.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-19T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-23T12:10:08+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\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\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Use Couchbase and RxJava to Make Java Read CSV files\",\"datePublished\":\"2016-04-19T15:00:00+00:00\",\"dateModified\":\"2023-06-23T12:10:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\"},\"wordCount\":821,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"csv\"],\"articleSection\":[\"Couchbase Server\",\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\",\"name\":\"Use Couchbase and RxJava to Make Java Read CSV files\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-04-19T15:00:00+00:00\",\"dateModified\":\"2023-06-23T12:10:08+00:00\",\"description\":\"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that's also useful as a Java CSV reader when paired with Couchbase.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#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\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use Couchbase and RxJava to Make Java Read CSV files\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Use Couchbase and RxJava to Make Java Read CSV files","description":"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that's also useful as a Java CSV reader when paired with Couchbase.","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\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/","og_locale":"en_US","og_type":"article","og_title":"Use Couchbase and RxJava to Make Java Read CSV files","og_description":"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that's also useful as a Java CSV reader when paired with Couchbase.","og_url":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-04-19T15:00:00+00:00","article_modified_time":"2023-06-23T12:10:08+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Use Couchbase and RxJava to Make Java Read CSV files","datePublished":"2016-04-19T15:00:00+00:00","dateModified":"2023-06-23T12:10:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/"},"wordCount":821,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["csv"],"articleSection":["Couchbase Server","Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/","url":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/","name":"Use Couchbase and RxJava to Make Java Read CSV files","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-04-19T15:00:00+00:00","dateModified":"2023-06-23T12:10:08+00:00","description":"This blog shows you how to use RxJava, which is an awesome tool for reactive programming that's also useful as a Java CSV reader when paired with Couchbase.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#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\/use-couchbase-and-rxjava-to-make-java-read-csv-files\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Use Couchbase and RxJava to Make Java Read CSV files"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2220","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2220"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2220\/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=2220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2220"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}