Oracle NoSQL Database Parent-Child Joins and Aggregation O R A C L E W H I T E P A P E R M A Y,

Similar documents
Oracle NoSQL Database Parent-Child Joins and Aggregation O R A C L E W H I T E P A P E R A P R I L,

Creating Custom Project Administrator Role to Review Project Performance and Analyze KPI Categories

Correction Documents for Poland

Oracle NoSQL Database For Time Series Data O R A C L E W H I T E P A P E R D E C E M B E R

Generate Invoice and Revenue for Labor Transactions Based on Rates Defined for Project and Task

Loading User Update Requests Using HCM Data Loader

Working with Time Zones in Oracle Business Intelligence Publisher ORACLE WHITE PAPER JULY 2014

Oracle CIoud Infrastructure Load Balancing Connectivity with Ravello O R A C L E W H I T E P A P E R M A R C H

Oracle Fusion Configurator

New Oracle NoSQL Database APIs that Speed Insertion and Retrieval

Configuring Oracle Business Intelligence Enterprise Edition to Support Teradata Database Query Banding

JD Edwards EnterpriseOne Licensing

Automatic Receipts Reversal Processing

Veritas NetBackup and Oracle Cloud Infrastructure Object Storage ORACLE HOW TO GUIDE FEBRUARY 2018

Installation Instructions: Oracle XML DB XFILES Demonstration. An Oracle White Paper: November 2011

Load Project Organizations Using HCM Data Loader O R A C L E P P M C L O U D S E R V I C E S S O L U T I O N O V E R V I E W A U G U S T 2018

Oracle DIVArchive Storage Plan Manager

Tutorial on How to Publish an OCI Image Listing

An Oracle White Paper November Primavera Unifier Integration Overview: A Web Services Integration Approach

Pricing Cloud: Upgrading to R13 - Manual Price Adjustments from the R11/R12 Price Override Solution O R A C L E W H I T E P A P E R A P R I L

Using the Oracle Business Intelligence Publisher Memory Guard Features. August 2013

Oracle Cloud Applications. Oracle Transactional Business Intelligence BI Catalog Folder Management. Release 11+

Oracle Secure Backup. Getting Started. with Cloud Storage Devices O R A C L E W H I T E P A P E R F E B R U A R Y

Oracle Data Masking and Subsetting

Oracle Data Provider for.net Microsoft.NET Core and Entity Framework Core O R A C L E S T A T E M E N T O F D I R E C T I O N F E B R U A R Y

Handling Memory Ordering in Multithreaded Applications with Oracle Solaris Studio 12 Update 2: Part 2, Memory Barriers and Memory Fences

TABLE OF CONTENTS DOCUMENT HISTORY 3

An Oracle White Paper September Security and the Oracle Database Cloud Service

Automatic Data Optimization with Oracle Database 12c O R A C L E W H I T E P A P E R S E P T E M B E R

StorageTek ACSLS Manager Software Overview and Frequently Asked Questions

An Oracle White Paper December, 3 rd Oracle Metadata Management v New Features Overview

RAC Database on Oracle Ravello Cloud Service O R A C L E W H I T E P A P E R A U G U S T 2017

Using Oracle In-Memory Advisor with JD Edwards EnterpriseOne

Achieving High Availability with Oracle Cloud Infrastructure Ravello Service O R A C L E W H I T E P A P E R J U N E

Subledger Accounting Reporting Journals Reports

PeopleSoft Fluid Navigation Standards

Oracle Enterprise Data Quality New Features Overview

Integrating Oracle SuperCluster Engineered Systems with a Data Center s 1 GbE and 10 GbE Networks Using Oracle Switch ES1-24

August 6, Oracle APEX Statement of Direction

Oracle Financial Consolidation and Close Cloud. What s New in the February Update (17.02)

WebCenter Portal Task Flow Customization in 12c O R A C L E W H I T E P A P E R J U N E

Oracle JD Edwards EnterpriseOne Object Usage Tracking Performance Characterization Using JD Edwards EnterpriseOne Object Usage Tracking

Siebel CRM Applications on Oracle Ravello Cloud Service ORACLE WHITE PAPER AUGUST 2017

Oracle Express CPQ for Salesforce.com

Extreme Performance Platform for Real-Time Streaming Analytics

Repairing the Broken State of Data Protection

Product Release Notes

An Oracle White Paper August Building Highly Scalable Web Applications with XStream

April Understanding Federated Single Sign-On (SSO) Process

An Oracle White Paper October The New Oracle Enterprise Manager Database Control 11g Release 2 Now Managing Oracle Clusterware

Hard Partitioning with Oracle VM Server for SPARC O R A C L E W H I T E P A P E R J U L Y

An Oracle White Paper July Oracle WebCenter Portal: Copying a Runtime-Created Skin to a Portlet Producer

Handling Memory Ordering in Multithreaded Applications with Oracle Solaris Studio 12 Update 2: Part 1, Compiler Barriers

Oracle Flashback Data Archive (FDA) O R A C L E W H I T E P A P E R M A R C H

Oracle FLEXCUBE Direct Banking Release Corporate Cash Management User Manual. Part No. E

Oracle Financial Consolidation and Close Cloud. What s New in the November Update (16.11)

Oracle Learn Cloud. Taleo Release 16B.1. Release Content Document

Oracle WebLogic Portal O R A C L E S T A T EM EN T O F D I R E C T IO N F E B R U A R Y 2016

Oracle Clusterware 18c Technical Overview O R A C L E W H I T E P A P E R F E B R U A R Y

An Oracle White Paper June Exadata Hybrid Columnar Compression (EHCC)

See What's Coming in Oracle Taleo Business Edition Cloud Service

Establishing secure connections between Oracle Ravello and Oracle Database Cloud O R A C L E W H I T E P A P E R N O V E M E B E R

Oracle Database Appliance X6-2S / X6-2M ORACLE ENGINEERED SYSTEMS NOW WITHIN REACH FOR EVERY ORGANIZATION

Oracle Financial Consolidation and Close Cloud. What s New in the December Update (16.12)

Leverage the Oracle Data Integration Platform Inside Azure and Amazon Cloud

Technical White Paper August Recovering from Catastrophic Failures Using Data Replicator Software for Data Replication

Product Release Notes

Oracle JD Edwards EnterpriseOne Object Usage Tracking Performance Characterization Using JD Edwards EnterpriseOne Object Usage Tracking

Oracle Enterprise Performance Reporting Cloud. What s New in September 2016 Release (16.09)

Data Capture Recommended Operating Environments

October Oracle Application Express Statement of Direction

SecureFiles Migration O R A C L E W H I T E P A P E R F E B R U A R Y

Oracle Fusion General Ledger Hierarchies: Recommendations and Best Practices. An Oracle White Paper April, 2012

Sun Fire X4170 M2 Server Frequently Asked Questions

Oracle Flash Storage System QoS Plus Operation and Best Practices ORACLE WHITE PAPER OCTOBER 2016

DATA INTEGRATION PLATFORM CLOUD. Experience Powerful Data Integration in the Cloud

An Oracle Technical Article March Certification with Oracle Linux 4

An Oracle White Paper July Methods for Downgrading from Oracle Database 11g Release 2

Deploy VPN IPSec Tunnels on Oracle Cloud Infrastructure. White Paper September 2017 Version 1.0

Oracle Database Vault

VISUAL APPLICATION CREATION AND PUBLISHING FOR ANYONE

Superior Product Variants Software for Multi-Attribute Product Companies. An Oracle White Paper April 2004

Partitioning in Oracle Database 10g Release 2. An Oracle White Paper May 2005

Oracle Service Cloud Agent Browser UI. November What s New

How to Monitor Oracle Private Cloud Appliance with Oracle Enterprise Manager 13c O R A C L E W H I T E P A P E R J U L Y

Oracle Event Processing Extreme Performance on Sparc T5

Oracle Utilities CC&B V2.3.1 and MDM V2.0.1 Integrations. Utility Reference Model Synchronize Master Data

Transitioning from Oracle Directory Server Enterprise Edition to Oracle Unified Directory

Oracle Business Activity Monitoring 12c Best Practices ORACLE WHITE PAPER DECEMBER 2015

Oracle Social Network

Deploying Custom Operating System Images on Oracle Cloud Infrastructure O R A C L E W H I T E P A P E R M A Y

An Oracle White Paper March Introduction to Groovy Support in JDeveloper and Oracle ADF 11g

Migration Best Practices for Oracle Access Manager 10gR3 deployments O R A C L E W H I T E P A P E R M A R C H 2015

An Oracle White Paper October Deploying and Developing Oracle Application Express with Oracle Database 12c

Migrating VMs from VMware vsphere to Oracle Private Cloud Appliance O R A C L E W H I T E P A P E R O C T O B E R

An Oracle White Paper October Oracle Social Cloud Platform Text Analytics

JD Edwards EnterpriseOne User Experience

Oracle Grid Infrastructure 12c Release 2 Cluster Domains O R A C L E W H I T E P A P E R N O V E M B E R

Oracle Enterprise Performance Management Cloud

Oracle Communications Interactive Session Recorder and Broadsoft Broadworks Interoperability Testing. Technical Application Note

Transcription:

Oracle NoSQL Database Parent-Child Joins and Aggregation O R A C L E W H I T E P A P E R M A Y, 2 0 1 8

Table of Contents Introduction 1 Parent Table Child Table Joins 2 Comparison to RDBMS LEFT OUTER JOIN 3 Example 3 Aggregates 7 count(*) and count(any) 7 sum(any) 7 avg(any) 7 min (any) or max (any) 7 Examples 7 Queries 7 Conclusion 8 Introduction Oracle NoSQL Database tables can be organized in a parent/child hierarchy. There is no limit to how many child tables can be created, nor is there a limit to how deep the child table nesting can go. When retrieving data by default, child tables are not retrieved when querying a parent table, nor is the parent retrieved when you retrieve a child table. Each of these tables is treated individually and provides the application a method to maintain data relationships as part of the same hierarchy. The parent/child table relationship in Oracle NoSQL Database is very similar to the parent/child table relationship in a classic relational database. The difference being that no join statements are required to query the data.. Because of the way Oracle NoSQL Database stores the parent/child table data, it is very efficient to traverse data maintained in this relationship. The entire child data set associated to its parent is guaranteed to reside on the same shard thus allowing the retrieval in a single network call. 1 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

Prior to Oracle NoSQL Database, Version 18.1, when retrieving from parent/child tables, the data in child tables was not retrieved when querying a parent table and the same holds true in reverse. Each of these tables was treated individually and required the application to handle the join(s) between them separately. Aggregations enable basic numerical operations to be performed on column values. This allows the data to be used to conduct analysis. Prior to Oracle NoSQL Database, Version 18.1 such operations would have to done by the client application or via a batch map-reduce job. Oracle NoSQL Database, Version 18.1 has introduced two very useful features for addressing these shortcomings.» Taking the parent-child table relation to the next level, a special kind of join among tables that belong to the same table hierarchy (parent and children) was added. These joins can be executed efficiently, because only co-located rows may match with each other.» Run aggregate operations such as sum, average, max etc. on the data. Each of these features is detailed below. To help understand and relate to these two features, the use case in the example below depicts a Customer and his shopping activities on a shopping cart kind of application. Parent Table Child Table Joins To query from tables that belong to the same hierarchy the NESTED TABLES clause must be used. The syntax is as follows: The NESTED TABLES clause specifies the participating tables and should be mentioned as 3 separate groups. The first group specifies the target table and is included within the parentheses after NESTED TABLES. The second group is the ANCESTORS, if present and is included within parentheses after the target table. The third group is the DESCENDANTS, if present and is included within parentheses after the ANCESTORS. There can be any number of ANCESTORS and DESCENDANTS and are comma separated. The ANCESTORS and DESCENDANTS are tables from which you would like to extract rows related to the target table. The syntax is as follows: Nested Tables: from NESTED TABLES ( target_table ANCESTORS (ancestor1, ancestor2 ) DESCENDANTS (descendant1, descendant2, ) ) 2 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

Comparison to RDBMS LEFT OUTER JOIN The NESTED TABLES clause is similar to the RDBMS style LEFT OUTER JOIN using the sample syntax Select columns from LeftTable LEFT JOIN RightTable on LeftTable.col1 = RightTable.col1". In the query that uses LEFT OUTER JOIN, the table to the left of the LEFT JOIN keyword is called the left table while to the right of the keyword is called as right table. The result of the query will include rows that are part of the left table matching with the rows in the right table. The rows which don t have a corresponding row in the right table would return a NULL. Left Table Right Table The above Venn diagram depicts the LEFT OUTER JOIN, with the shaded part showing what rows are returned. The intersection between two circles are rows that match in both tables, and the remaining part of the left circle are rows in the table that do not have any matching row in the right table. Hence, all rows in the left table are included in the result. It should also be understood that the results are part of the WHERE clause and any other optional ON expressions used. An important note for NoSQL: The query is executed as parallel scan operations on each shard, which means that the query performance is high. If the target table has indexed columns which are used as part of the predicate, then the index would be used in the query, resulting in very fast retrieval. These are 2 different types of databases and cannot be used for data management for the same situations and requirements interchangeably. A child table is represented with a. notation in Oracle NoSQL Database. It is assumed that the reader knows to create the table in the respective databases. Example As part of the example we show the results from similar tables in Oracle NoSQL Database vs MySQL (RDBMS style) which demonstrate the power of this new feature. Tables MySQL CustomerProfile, Cart, Order, Searched Oracle NoSQL Database customerprofile, customerprofile.cart, customerprofile.cart.order, customerprofile.searched 3 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

A graphical representation of the table hierarchy in Oracle NoSQL Database would look like Based on this, the query for a simple to extract from the above tables would be: -----All products that Mike has searched and placed an order for, along with the status of each order on the site----- The table scripts, insert statements and queries for both MySQL and Oracle NoSQL Database are available as a zip file. MySQL - The Query in MySQL database would look like: select * from customer left outer join cart on customer.id = cart.customer_id left outer join searched on customer.id = searched.customer_id left outer join sys.order on cart.cart_id=sys.order.cart_id; The output looks like for sake of brevity only a few are shown: {"id" : 1,"name" : "Mike","lastname" : "Brey","phone_no" : "8888888888","cart_id" : 1001, customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"May 2019\", \"PurchaseDate\": \"May 2017\"}, \"Price\": 30, \"Quantity\": 1, \"ProductID\": 1101, \"Description\": \"Table\", \"ProductName\": \"Table\"}", "searched_id" : 10, customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"May 2019\", \"PurchaseDate\": \"May 2017\"}, \"Price\": 30, \"Quantity\": 1, \"ProductID\": 1101, \"Description\": \"Table\", \"ProductName\": \"Table\"}"," order_id " : 1101,"cart_id":1001,"status" : "paid"} {"id" : 1,"name" : "Mike","lastname" : "Brey","phone_no" : "8888888888","cart_id" : 1002, "customer_id" : 1, "product_info" : "{\"Date\": {\"ExpiryDate\": \"May 2019\", \"PurchaseDate\": \"June 2017\"}, \"Price\": 110, \"Quantity\": 1, \"ProductID\": 1102, \"Description\": \"Teak Table\", \"ProductName\": \"Teak Table\"}","searched_id ": 11, customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"Dec 2019\", \"PurchaseDate\": \"Jan 2017\"}, \"Price\": 1200, \"Quantity\": 1, \"ProductID\": 1201, \"Description\": \"TV\", \"ProductName\": \"TV\"}","order_id" : 1101,"cart_id":1001,"status" : "cod"}} 4 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

{ "id" : 1,"name" : "Mike","lastname" : "Brey","phone_no" : "8888888888","cart_id" : 1003, "customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"Dec 2022\", \"PurchaseDate\": \"Jan 2017\"}, \"Price\": 350, \"Quantity\": 1, \"ProductID\": 1103, \"Description\": \"Dining Table\", \"ProductName\": \"Dining Table\"}"," searched_id": 12, customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"Jan 2020\", \"PurchaseDate\": \"Jan 2017\"}, \"Price\": 3400, \"Quantity\": 1, \"ProductID\": 1301, \"Description\": \"Refrigirator\", \"ProductName\": \"Refrigirator\"}"," order_id " : 1101,"cart_id":1001,"status" : "paid"}} {"id" : 1,"name" : "Mike","lastname" : "Brey","phone_no" : "8888888888","cart_id" : 1004, "customer_id" : 1, "product_info" : "{\"Date\": {\"ExpiryDate\": \"May 2019\", \"PurchaseDate\": \"June 2017\"}, \"Price\": 35, \"Quantity\": 6, \"ProductID\": 1103, \"Description\": \"Chairs\", \"ProductName\": \"Chairs\"}","searched_id ": 13, customer_id" : 1,"product_Info" : "{\"Date\": {\"ExpiryDate\": \"Dec 2020\", \"PurchaseDate\": \"Sep 2017\"}, \"Price\": 1800, \"Quantity\": 1, \"ProductID\": 1401, \"Description\": \"Dish Washer\", \"ProductName\": \"Dish Washer\"}"," order_id " : 1101,"cart_id":1001,"status" : "paid"}}} 5 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

Oracle NoSQL Database - Similar query in Oracle NoSQL Database would look like select * from NESTED TABLES (customerprofile cp DESCENDANTS (customerprofile.cart cc, customerprofile.cart.order,customerprofile.searched)) The output would be There are in all 13 rows returned, but for sake of brevity only a few are shown. {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":{"id":1,"cart_id":1001,"customer_id":1," product_info":{"date":{"expirydate":"may 2019","PurchaseDate":"May 2017"},"Description":"Table","Price":30,"ProductID":1101,"ProductName":"Table","Quantity":1}},"customerProfile_car t_order":{"id":1,"cart_id":1001,"co_id":1101,"status":"paid"},"customerprofile_searched":null} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":{"id":1,"cart_id":1002,"customer_id":1," product_info":{"date":{"expirydate":"may 2019","PurchaseDate":"June 2017"},"Description":"Teak Table","Price":110,"ProductID":1102,"ProductName":"Teak Table","Quantity":1}},"customerProfile_cart_order":{"id":1,"cart_id":1002,"co_id":1102,"status":"cod"},"customerProfil e_searched":null} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":{"id":1,"cart_id":1003,"customer_id":1," product_info":{"date":{"expirydate":"dec 2022","PurchaseDate":"Jan 2017"},"Description":"Dining Table","Price":350,"ProductID":1103,"ProductName":"Dining Table","Quantity":1}},"customerProfile_cart_order":{"id":1,"cart_id":1003,"co_id":1103,"status":"paid"},"customerProfil e_searched":null} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":{"id":1,"cart_id":1004,"customer_id":1," product_info":{"date":{"expirydate":"may 2019","PurchaseDate":"June 2017"},"Description":"Chairs","Price":35,"ProductID":1103,"ProductName":"Chairs","Quantity":6}},"customerProfile_c art_order":{"id":1,"cart_id":1004,"co_id":1104,"status":"cod"},"customerprofile_searched":null} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":null,"customerprofile_cart_order":null," customerprofile_searched":{"id":1,"cs_id":10,"product_info":{"date":{"expirydate":"may 2019","PurchaseDate":"May 2017"},"Description":"Table","Price":30,"ProductID":1101,"ProductName":"Table","Quantity":1}}} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":null,"customerprofile_cart_order":null," customerprofile_searched":{"id":1,"cs_id":11,"product_info":{"date":{"expirydate":"jan 2020","PurchaseDate":"Jan 2017"},"Description":"Refrigirator","Price":3400,"ProductID":1201,"ProductName":"Refrigirator","Quantity":1}}} {"cp":{"id":1,"name":"mike","lastname":"brey","phone_no":"8888888888"},"cc":null,"customerprofile_cart_order":null," customerprofile_searched":{"id":1,"cs_id":12,"product_info":{"date":{"expirydate":"dec 2019","PurchaseDate":"June 2017"},"Description":"Microwave Owen","Price":800,"ProductID":1301,"ProductName":"Microwave Owen","Quantity":1}}} 6 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

Aggregates Aggregate functions in Oracle NoSQL Database evaluate an expression for each row, and aggregate the returned values into a single value. Syntactically, aggregate functions appear in the SELECT clause. If the SELECT clause contains any aggregate functions, the entire set of rows produced by the FROM or the WHERE clauses is considered and the aggregate functions are evaluated over this single group. The currently available aggregate functions are count, sum, avg, min, and max. count(*) and count(any) Returns the number of rows in a group or computes the input expression on each row in the group and returns a count of all the non-null values. sum(any) Computes the input expression on each row in the group and sums all the numeric values in the sequence. The resulting value type is based on the input values. If there is one input item of type integer then the result would be an integer, or if there is one input type of double or float then the return would be a double. Note: There is a known Java error when trying to sum 2 floating point numbers if the return type is double. avg(any) Computes the input expression on each row in a group; sums all the numeric values in the sequence and counts all the numeric values. The resulting value is the average (division of sum by its count) and the type is based on the input values. If there is one input item of type integer then the result would be an integer, or if there one input type of double or float then the return value would be a double. min (any) or max (any) Computes the input expression on each row in a group and returns either the minimum or maximum value of the expression for the group. Examples We continue with the above shopping cart example and look for: 1. Total count of products that a particular customer has searched for. 2. Sum of the orders that a customer has done till date. 3. Highest amount purchase that a customer has done till date. 4. Lowest amount purchase that a customer has done till date. 5. Average spend for a customer Queries 1. In the customerprofile table Mike has id 1 and is referenced with the id in customerprofile.searched table. To query for the count of how many searches are done by Mike the query would be sql -> select count(*) from customerprofile.searched where id=1; { column_1 :4} 1 row returned 7 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

2. In the customerprofile table Mike has id 1 and is referenced with the id in the customerprofile.cart table. To query for the total monies spent by Mike for his purchases the query would be: sql -> Select sum(cc.product_info.price) from customerprofile.cart cc where id=1; { column_1 :525} 1 row returned 3. In the customerprofile table Mike has id 1 and is referenced with the id in the customerprofile.cart table. To query for the costliest purchase done by Mike the query would be: sql -> Select max(cc.product_info.price) from customerprofile.cart cc where id=1; { column_1 :350 } 1 row returned 4. In the customerprofile table Mike has id 1 and is referenced with the id in the customerprofile.cart table. To query for the least expensive purchase done by Mike the query would be: sql -> Select min(cc.product_info.price) from customerprofile.cart cc where id=1; { column_1 :30} 1 row returned 5. In the customerprofile table Mike has id 1 and is referenced with the id in the customerprofile.cart table. To query for the average spend by Mike the query would be: sql -> Select avg(cc.product_info.price) from customerprofile.cart cc where id=1; { column_1 :131.25} 1 row returned Conclusion Oracle NoSQL Database with these enhanced query features make it easy to retrieve related data stored in the same hierarchy of tables represented as Parent-Child tables. With the inclusion of aggregates to the query capabilities, retrieving meaningful data from your customer s stored data has also become very easy. 8 ORACLE NOSQL DATABASE PARENT-TABLE AND AGGREGATION

Oracle Corporation, World Headquarters Worldwide Inquiries 500 Oracle Parkway Phone: +1.650.506.7000 Redwood Shores, CA 94065, USA Fax: +1.650.506.7200 C O N N E C T W I T H U S blogs.oracle.com/oracle facebook.com/oracle twitter.com/oracle oracle.com Copyright 2018, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only, and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document, and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group. Oracle NoSQL Database 18.1 new Features Parent Child and Aggregation May, 2018 Author: Vishal Settipalli Contributing Authors: Michael Schulman, Michael Brey, Tim Goh