{"id":4521,"date":"2018-01-27T23:49:42","date_gmt":"2018-01-28T07:49:42","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4521"},"modified":"2025-06-13T17:32:51","modified_gmt":"2025-06-14T00:32:51","slug":"couchbase-oracle-developers-part-3-database-objects","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/","title":{"rendered":"Couchbase for Oracle developers &#8212; Part 3 : Database Objects"},"content":{"rendered":"<p>Here&#8217;s the home page for the series:\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\">https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/<\/a><\/p>\n<p><span style=\"font-weight: 400\">Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on Couchbase.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4524 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/Screen-Shot-2018-01-27-at-11.44.58-PM-300x142.png\" alt=\"\" width=\"539\" height=\"254\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-27-at-11.44.58-PM-300x142.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-27-at-11.44.58-PM-768x364.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-27-at-11.44.58-PM-20x9.png 20w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td>Topic<\/td>\n<td><span style=\"color: #ff0000\">Oracle<\/span><\/td>\n<td><span style=\"color: #ff0000\">Couchbase<\/span><\/td>\n<\/tr>\n<tr>\n<td>Database<\/td>\n<td>Database<\/td>\n<td><span style=\"font-weight: 400\">Within a Couchbase instance (single node or multi-node cluster), you can create one or more buckets.\u00a0\u00a0<\/span><span style=\"font-weight: 400\">From the developer perspective, you create buckets and start inserting JSON of various types into buckets.<\/span><\/p>\n<p><b>CREATE:<\/b><\/p>\n<p><span style=\"font-weight: 400\">You create bucket either via Couchbase web console or via REST API.\u00a0<\/span><span style=\"font-weight: 400\">In the web console, you provide the information below.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4522 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/Screen-Shot-2018-01-24-at-8.16.41-PM-176x300.png\" alt=\"\" width=\"306\" height=\"522\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-24-at-8.16.41-PM-176x300.png 176w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-24-at-8.16.41-PM-602x1024.png 602w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-24-at-8.16.41-PM-12x20.png 12w\" sizes=\"auto, (max-width: 306px) 100vw, 306px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">User provides the following:<\/span><\/p>\n<p><strong>Name of a bucket.<\/strong><\/p>\n<p><span style=\"font-weight: 400\"><strong>Location of an existing data storage<\/strong>. Couchbase creates a directory with the bucket name underneath the specified directly. In this case, CUSTOMER directory is created under : \/my\/data. \u00a0This directory \/my\/data should exist on every node of the Couchbase cluster with data (key-value) service. \u00a0This is fixed and unchangeable.<\/span><\/p>\n<p><span style=\"font-weight: 400\"><strong>Memory used in megabytes.<\/strong> This is the fixed amount of memory used to cache the data as you insert\/load the data. \u00a0The actual data in memory depends on your application access pattern. \u00a0Usual LRU, MRU algorithms are used to determine which documents are kept in memory and which ones are evicted. For additional information on key eviction, see the link: <\/span><\/p>\n<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/architecture\/db-engine-architecture.html\"><span style=\"font-weight: 400\">https:\/\/bit.ly\/2ngKUZk<\/span><\/a><\/p>\n<p><strong>Bucket Type<\/strong><\/p>\n<p><span style=\"font-weight: 400\"><strong>Couchbase:<\/strong> JSON database<\/span><\/p>\n<p><span style=\"font-weight: 400\"><strong>Memcached:<\/strong> Memcache<\/span><\/p>\n<p><span style=\"font-weight: 400\"><strong>Ephemeral<\/strong>: just like Couchbase bucket, except all the data, index are only in memory.<\/span><\/p>\n<p><span style=\"font-weight: 400\"><strong>Replica:<\/strong> By default there is one copy of the data in the cluster. You can have up to three copies of the data within the cluster. Under the <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/CAP_theorem\"><span style=\"font-weight: 400\">CAP theorem rules<\/span><\/a><span style=\"font-weight: 400\">. There are plenty of papers and talks on CAP theorem and their application to NoSQL databases in public domain.Couchbase Bucket is a CP system. That means, Couchbase chooses consistency over availability (C over A). \u00a0Supporting partition tolerance is a requirement for these multi-node scale out systems.<\/span><\/p>\n<p><span style=\"font-weight: 400\">See Couchbase documentation for full details on all the parameters and examples.<\/span><\/p>\n<p>https:\/\/bit.ly\/2GrbMOw<\/td>\n<\/tr>\n<tr>\n<td>Table<\/td>\n<td>Table<\/td>\n<td><span style=\"font-weight: 400\">Right now, Couchbase Bucket serves two\u00a0<\/span><span style=\"font-weight: 400\">purposes. \u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Point of access control<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Container for all the documents.<\/span><\/li>\n<\/ol>\n<p>As we discussed earlier, there could be up to 10 buckets in a Couchbase system.\u00a0In RDBMS, you store a row that belongs to a domain in a single table.<\/p>\n<p><span style=\"font-weight: 400\">In Couchbase, you model your document to contain as much data about the object as possible. \u00a0For example, the CUSTOMER object can contain not only the basic customer information but also the customer orders so a single GET operation can get the whole customer information quickly. <\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">Example document INSERT via N1QL:<\/span><\/p>\n<pre class=\"theme:github whitespace-before:1 whitespace-after:1 lang:js decode:true \">INSERT INTO `travel-sample` VALUES(\"CX:3424\",   {\r\n \t\"type\": \"CUSTOMER\",\r\n \t\"Name\": \"Jane Smith\",\r\n \t\"DOB\": \"1990-01-30\",\r\n \t\"Billing\": [{\r\n \t\t\t\"type\": \"visa\",\r\n \t\t\t\"cardnum\": \"5827-2842-2847-3909\",\r\n \t\t\t\"expiry\": \"2019-03\"\r\n \t\t},\r\n \t\t{\r\n \t\t\t\"type\": \"master\",\r\n \t\t\t\"cardnum\": \"6274-2842-2847-3909\",\r\n \t\t\t\"expiry\": \"2019-03\"\r\n \t\t}\r\n \t],\r\n \t\"Connections\": [{\r\n \t\t\t\"CustId\": \"XYZ987\",\r\n \t\t\t\"Name\": \"Joe Smith\"\r\n \t\t},\r\n \t\t{\r\n \t\t\t\"CustId\": \"PQR823\",\r\n \t\t\t\"Name\": \"Dylan Smith\"\r\n \t\t}, {\r\n \t\t\t\"CustId\": \"PQR823\",\r\n \t\t\t\"Name\": \"Dylan Smith\"\r\n \t\t}\r\n \t],\r\n \t\"Purchases\": [{\r\n \t\t\"id\": 12,\r\n \t\t\"item\": \"mac\",\r\n \t\t\"amt\": 2823.52\r\n \t}, {\r\n \t\t\"id\": 19,\r\n \t\t\"item\": \"ipad2\",\r\n \t\t\"amt\": 623.52\r\n \t}]\r\n });\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Note that there was no CREATE TABLE for CUSTOMER. You simply and directly insert the JSON document into the bucket. \u00a0You do need a bucket-unique document. \u00a0This unique is modeled on primary key for a table. If you have multiple parts, separate them by a delimiter like a hyphen, underscore or a period.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Now you have the CUSTOMER document in the bucket named e-commerce.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Now, you want another type of document, say PARTNER. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">You can simply create a separate bucket called PARTNER. \u00a0OR, you can insert the PARTNER documents into the same BUCKET. \u00a0Insert into a separate bucket is straightforward. In Couchbase, it\u2019s a common and recommended practice to use the same bucket to store documents of multiple types for an application. \u00a0This has two advantages. <\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400\"> Couchbase can create up to 10 buckets in a cluster. It\u2019s common to have many types of documents. You don\u2019t want to run out of buckets.<\/span><\/li>\n<li><span style=\"font-weight: 400\"> Having single bucket makes manageability easier. \u00a0It\u2019s like have single database versus multiple databases.<\/span><\/li>\n<\/ol>\n<pre class=\"theme:github whitespace-before:1 whitespace-after:1 lang:js decode:true \">INSERT INTO ecommerce VALUES(\"CX:3424\", , \r\n{\r\n    \"type\" : \"CUSTOMER\"\r\n    \"Name\" : \"Jane Smith\",\r\n    \"DOB\"  : \"1990-01-30\",\r\n});\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>Row<\/td>\n<td>Row<\/td>\n<td>\u00a0<span style=\"font-weight: 400\">JSON Document, with it\u2019s documentkey.<\/span><\/p>\n<pre class=\"theme:github whitespace-before:1 whitespace-after:1 lang:js decode:true\">Document key: \"CX:3424\"\r\n{\r\n\"type\" : \"CUSTOMER\"\r\n\"Name\" : \"Jane Smith\",\r\n\"DOB\" &amp;nbsp;: \"1990-01-30\",\r\n}<\/pre>\n<p><span style=\"font-weight: 400\">Considerations for document key design:\u00a0<a href=\"https:\/\/bit.ly\/2GnRwwV\">https:\/\/bit.ly\/2GnRwwV<\/a><\/span><\/td>\n<\/tr>\n<tr>\n<td>Column<\/td>\n<td>Column<\/td>\n<td><span style=\"font-weight: 400\">JSON is made up of key-value pairs.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Example: {\u201cfullname\u201d: \u201cJoe Smith\u201d}<\/span><\/p>\n<p><span style=\"font-weight: 400\">{\u201cname: { \u201cfname\u201d:\u201dJoe\u201d, \u201clname\u201d:\u201dSmith\u201d}<\/span><\/p>\n<p><span style=\"font-weight: 400\">{\u201chobbies\u201d: [\u201clego\u201d,\u201drobotics\u201d, \u201cski\u201d]}<\/span><\/p>\n<p><span style=\"font-weight: 400\">In these documents, \u201cname\u201d is a key, also known as an attribute. <\/span><span style=\"font-weight: 400\">Its value can be scalar (fullname) or an object (name) or array (hobbies).<\/span><\/p>\n<p><span style=\"font-weight: 400\">In Oracle, when you create the table, you specify column names and their data types. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In Couchbase, you simply insert JSON documents. \u00a0Each document self-describes the attribute (column)\u00a0<\/span><span style=\"font-weight: 400\">names. This gives you the flexibility to evolve the schema without having to lockdown the table. <\/span><span style=\"font-weight: 400\">The data types are simply interpreted from the value itself: String, number, null, true, false, object or an array. <\/span><\/td>\n<\/tr>\n<tr>\n<td>Views<\/td>\n<td>Views can be created with CREATE VIEW statement. Once created, these are simply relations that can be used anywhere a table (set of relations) can be used. There are some additional requirements for updates on views (e.g. instead of triggers for insert, updates on complex views).<\/td>\n<td><span style=\"font-weight: 400\">Couchbase does not have dynamic SQL based view like Oracle. Couchbase does have a technology we call, \u201cCouchbase Views\u201d, based on map reduce framework. These are similar to materialized views and not the SQL View and cannot be used with N1QL.<\/span><\/td>\n<\/tr>\n<tr>\n<td>Materialized Views (aka Materialized Query Tables)<\/td>\n<td>Materialized Views<\/td>\n<td>\u00a0<span style=\"font-weight: 400\">Couchbase VIEW provides a flexible map-reduce framework for you to create pre-aggregations, indexes, anything else you want to create. \u00a0See more details at:\u00a0https:\/\/bit.ly\/2EhIFfF<\/span><\/td>\n<\/tr>\n<tr>\n<td>Sequences<\/td>\n<td>Sequences<\/td>\n<td>Unavailable<\/td>\n<\/tr>\n<tr>\n<td>Triggers<\/td>\n<td>Triggers<\/td>\n<td><span style=\"font-weight: 400\">Triggers are not available.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Expiry (TTL: time to live) settings give you ability to automatically trigger deletion of a document after certain period.\u00a0<a href=\"https:\/\/bit.ly\/2DFe7U2\">https:\/\/bit.ly\/2DFe7U2<\/a>\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td>Constraints<\/td>\n<td><span style=\"font-weight: 400\">Constraints: primary key, unique, Check, referential, not null,<\/span><\/td>\n<td>Couchbase requires and enforces unique constraint on the document key within a bucket. Documents can have reference to other document\u2019s key. It\u2019s simply storing the data and can be used in JOIN operations. The reference itself isn\u2019t checked or enforced.<\/td>\n<\/tr>\n<tr>\n<td>Indexes<\/td>\n<td>Indexes<\/td>\n<td>\u00a0<span style=\"font-weight: 400\">Index. \u00a0More details in the Index section. For now, you can see the detailed blog:\u00a0https:\/\/bit.ly\/2DI1nAa<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s the home page for the series:\u00a0https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/ Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and [&hellip;]<\/p>\n","protected":false},"author":55,"featured_media":13997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1819,1812],"tags":[1572,1458,1592],"ppma_author":[8929],"class_list":["post-4521","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-data-modeling","category-n1ql-query","tag-database","tag-migration","tag-oracle"],"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>Couchbase for Oracle developers - Part 3 : Database Objects - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on 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\/couchbase-oracle-developers-part-3-database-objects\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase for Oracle developers -- Part 3 : Database Objects\" \/>\n<meta property=\"og:description\" content=\"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on Couchbase.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-28T07:49:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:32:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"Couchbase for Oracle developers &#8212; Part 3 : Database Objects\",\"datePublished\":\"2018-01-28T07:49:42+00:00\",\"dateModified\":\"2025-06-14T00:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\"},\"wordCount\":1004,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png\",\"keywords\":[\"database\",\"migration\",\"oracle\"],\"articleSection\":[\"Application Design\",\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\",\"name\":\"Couchbase for Oracle developers - Part 3 : Database Objects - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png\",\"datePublished\":\"2018-01-28T07:49:42+00:00\",\"dateModified\":\"2025-06-14T00:32:51+00:00\",\"description\":\"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on Couchbase.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png\",\"width\":1200,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase for Oracle developers &#8212; Part 3 : Database Objects\"}]},{\"@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\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, holds eleven US patents and has four US patents pending.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase for Oracle developers - Part 3 : Database Objects - The Couchbase Blog","description":"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on 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\/couchbase-oracle-developers-part-3-database-objects\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase for Oracle developers -- Part 3 : Database Objects","og_description":"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on Couchbase.","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-01-28T07:49:42+00:00","article_modified_time":"2025-06-14T00:32:51+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png","type":"image\/png"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"Couchbase for Oracle developers &#8212; Part 3 : Database Objects","datePublished":"2018-01-28T07:49:42+00:00","dateModified":"2025-06-14T00:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/"},"wordCount":1004,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png","keywords":["database","migration","oracle"],"articleSection":["Application Design","Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/","name":"Couchbase for Oracle developers - Part 3 : Database Objects - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png","datePublished":"2018-01-28T07:49:42+00:00","dateModified":"2025-06-14T00:32:51+00:00","description":"Oracle DBAs work with clusters, machines, storage systems, disks, etc. Oracle developers and their applications work with databases, tables, rows, columns, partitions, users, data types within the Oracle database system. \u00a0Let\u2019s compare and contrast how this is done on Couchbase.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/online-shop-big1.png","width":1200,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-3-database-objects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase for Oracle developers &#8212; Part 3 : Database Objects"}]},{"@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\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, holds eleven US patents and has four US patents pending.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India,  holds ten US patents and has three US patents pending."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4521","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\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4521"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4521\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13997"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4521"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}