Skip to Main Content

Features and SDK Driver Compatibility

Want to learn more about the latest 25.x new features and practice with them? We recommend reading Release Notes.

Filters

Features Report

Icon Legend

Available Not Available Deprecated Desupported
Feature

ALTER TABLE Now Supports Adding or Removing Regions from Existing Multi-Region Tables

Application Development → SQL Query Language

The SQL command "ALTER TABLE" now supports adding or removing regions from existing multi-region tables.

20.x ReleaseEnterprise Edition Only

Add Global Active Tables in Cloud

NoSQL Database Cluster → Multi Region

Oracle NoSQL Database Cloud Service supports global active table architecture in which you can create tables, replicate them across multiple regions, and maintain synchronized data across the regional replicas.

Cloud Service Release

Add Namespace Component to Table Names

Application Development → SQL Query Language

Queries use a namespace qualified name of form: ns:TableName. _x000D_ DDL adds new statements: CREATE NAMESPACE and DROP NAMESPACE._x000D_ API changes: TableAPI.listNamespaces() returns all known namespaces and ExecuteOptions.setNamespace() and getNamespace() to specify the namespace of unqualified names used in queries._x000D_ _x000D_ There are 2 new system privileges:_x000D_ _x000D_ CREATE_ANY_NAMESPACE_x000D_ _x000D_ DROP_ANY_NAMESPACE_x000D_ _x000D_ And new privileges with a namespace scope:_x000D_ _x000D_ CREATE_TABLE_IN_NAMESPACE_x000D_ _x000D_ DROP_TABLE_IN_NAMESPACE_x000D_ _x000D_ EVOLVE_TABLE_IN_NAMESPACE_x000D_ _x000D_ CREATE_INDEX_IN_NAMESPACE_x000D_ _x000D_ DROP_INDEX_IN_NAMESPACE_x000D_ _x000D_ MODIFY_IN_NAMESPACE_x000D_ _x000D_ READ_IN_NAMESPACE_x000D_ _x000D_ INSERT_IN_NAMESPACE_x000D_ _x000D_ DELETE_IN_NAMESPACE_x000D_ _x000D_ These privileges can be granted or revoked using:_x000D_ _x000D_ GRANT namespace_privilege ON NAMESPACE ns0 TO role_name_x000D_ REVOKE namespace_privilege ON NAMESPACE ns0 FROM role_name

18.x ReleaseAll Offerings

Add ServerResourceLimitException Class

Application Development → SDK (Language) Drivers and APIs

Added the _x000D_ ServerResourceLimitException class. Instances of this class may be thrown if the server is unable to handle a request because of resource constraints.

19.x ReleaseAll Offerings

Add new classes that allow programmatic creation and control of a small, standalone store instance, comprising a single partition

NoSQL Database Cluster → Backend Server

Added new classes that allow programmatic creation and control of a small, standalone store instance, comprising a single partition. The major classes are_x000D_ KVLocal - represents the store instance_x000D_ KVLocalConfig - allows configuration of the KVLocal instance_x000D_ KVLocal can be configured to use TCP/IP connections or, if using Java 16 or higher, Unix domain sockets._x000D_ _x000D_ In support of KVLocal, the requirement that all keys specified in Operation and TableOperation lists passed to KVStore.execute and TableAPI.execute, respectively, share the same Major Path or shard key is relaxed for single partition stores such as the ones managed by KVLocal.

22.x ReleaseAll Offerings

Add rnRHAsyncMaxConcurrentRequests Parameter

NoSQL Database Cluster → Backend Server

Added the new _x000D_ rnRHAsyncMaxConcurrentRequests parameter, which specifies the maximum number of concurrent asynchronous requests that a Rep Node can handle before it should do throttling. This parameter replaces the rnRHAsyncExecQueueSize parameter, which is now ignored, since the queue size is now computed from the difference between the rnRHAsyncMaxConcurrentRequests and rnRHAsyncExecMaxThreads parameters.

20.x ReleaseAll Offerings

Add support for MRCounter in JSON

Application Development → SQL Query Language

Added support for MRCounter in JSON so that the MR_COUNTER data type can be used inside a schemaless JSON field. The syntax to declare an MR_COUNTER field for a JSON column is:_x000D_ field-name AS field-type MR_COUNTER_x000D_ A JSON MR_COUNTER can be updated the same way as any other MR_COUNTER column.

22.x ReleaseAll Offerings

Add support for child tables to multi-region tables

NoSQL Database Cluster → Multi Region

Added support for child tables to multi-region tables. Child tables always inherit the regions of the associated top level tables, so users cannot specify regions when creating child tables, nor can they explicitly add or drop regions for child tables.

22.x ReleaseAll Offerings

Added three new SQL functions for arithmetic operations on Timestamps

Application Development → SQL Query Language

Added three new SQL functions to do arithmetic operations on Timestamps:_x000D_ timestamp(9) timestamp_add(timestamp, string)_x000D_ Adds a duration to a timestamp value and returns the new timestamp. The duration is a string with format [-]<n> (<UNIT>)+, where the <UNIT> can be YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, NANOSECOND or the plural form of these keywords (e.g. YEARS). The UNIT keywords are case-insensitive. (e.g. 1 day 12 hours)._x000D_ _x000D_ long timestamp_diff(timestamp, timestamp)_x000D_ Returns the number of milliseconds between two timestamp values (timestamp1 - timestamp2)._x000D_ _x000D_ string get_duration(long)_x000D_ Converts the given number of milliseconds to a duration string.

22.x ReleaseAll Offerings

Administrative Command Through REST API

NoSQL Database Cluster → Admin CLI

Admin REST API allows user to run _x000D_ admin commands through HTTP or HTTPS requests to Oracle NoSQL Database store. The request and response payload are in JSON format, user can use utility like "curl" to run admin commands against the store.

18.x ReleaseAll Offerings

Associated Tables in Remote Regions No Longer Have to be Empty

NoSQL Database Cluster → Multi Region

When creating a multi-region table or_x000D_ adding new regions to an existing multi-region table, the associated tables in remote regions no longer have to be empty.

20.x ReleaseEnterprise Edition Only

Asynchronous Methods for the Table API

Application Development → SDK (Language) Drivers and APIs

Applications can use these methods to make calls without using a thread to wait for results, which can improve the efficiency of clients that make many concurrent calls. Clients now use a new network protocol that supports multiplexing multiple calls on the same socket, which is used to support asynchronous operation and to reduce the number of socket connections needed. New clients are only compatible with this version of the server, although the server continues to support old clients. When upgrading to this release, make sure to upgrade the store first before upgrading clients or HTTP proxies. New methods on TableAPI: getAsync multiGetAsync multiGetKeysAsync tableIteratorAsync tableKeysIteratorAsync putAsync putIfAbsentAsync putIfPresentAsync putIfVersionAsync deleteAsync deleteIfVersionAsync multiDeleteAsync executeAsync New methods on KVStore: executeAsync New fields and methods on KVStoreConfig: DEFAULT_NETWORK_ROUNDTRIP_TIMEOUT USE_ASYNC DEFAULT_USE_ASYNC getNetworkRoundtripTimeout setNetworkRoundtripTimeout getUseAsync setUseAsync New field in KVStoreFactory: ENDPOINT_GROUP_NUM_THREADS_PROPERTY New interfaces: oracle.kv.ExecutionSubscription oracle.kv.IterationSubscription Iteration methods (TableAPI.tableIteratorAsync, TableAPI.tableKeysIteratorAsync, and KVStore.executeAsync) are implemented using the Reactive Streams framework. Other asynchronous methods return java.util.concurrent.CompletableFuture. Also added the new table.AsyncExample example.

19.x ReleaseAll Offerings

CLI Command plan stop-service to Ensure Store Health

NoSQL Database Cluster → Admin CLI

Changed the behavior of CLI command plan stop-service to ensure store health. After this change, if stopping services using the plan will cause the store to fall into an unhealthy state, the plan will fail with detailed health check information as the output, such as,_x000D_ _x000D_ One of the groups is not healthy enough for the operation: [rg1] Only 1 primary nodes are running such that a simple majority cannot be formed which requires 2 primary nodes. The shard is vulnerable and will not be able to elect a new master. Nodes not running: [rg1-rn1]. Nodes to stop: {rg1=[rg1-rn2]} ... ..._x000D_ _x000D_ The service can be forcefully stopped by adding the -force flag._x000D_ _x000D_ Note that there is one exception. Since plan stop-service -all-rn will always result in an unhealthy store, the health check is skipped for such plans and the -force flag is not required.

18.x ReleaseAll Offerings

Casting of a timestamp value to a long value

Application Development → SQL Query Language

In SQL queries, allow casting of a timestamp value to a long value that is the number of milliseconds since January 1, 1970, 00:00:00 GMT.

22.x ReleaseAll Offerings

DESCRIBE TABLE Statement

Application Development → SQL Query Language

Users can now use the "describe table" statement to describe the schema of a system table.

19.x ReleaseAll Offerings

DISTINCT Keyword is Now Supported in SELECT Clause

Application Development → SQL Query Language

The DISTINCT keyword is now _x000D_ supported in the SELECT clause. If present, duplicate results will be removed from query result set. As with generic ORDER BY and GROUP BY, SELECT DISTINCT needs to cache the full result set in driver memory. The same execution option controls how much memory such operations are allowed to consume at the driver.

20.x ReleaseAll Offerings

Disabling DSA (ssh-dss) SSH Keys in the Diagnostics Utility

Utilities → Diagnostics

The diagnostics utility no longer supports DSA (ssh-dss) SSH keys due to security weaknesses with that algorithm. Attempting to use the diagnostics utility with a DSA (ssh-dss) SSH key will produce an error message similar to:_x000D_ _x000D_ DefaultAuthFuture[ssh-connection]: Failed (IllegalArgumentException) to_x000D_ execute: No signer could be located for key type=ssh-dss_x000D_ _x000D_ In a future version, RSA (ssh-rsa) SSH key support may also be removed for similar reasons. It's recommended to migrate to other SSH key algorithms, for example ECDSA or ED25519.

21.x ReleaseAll Offerings

DynamoDB supported JSON files

Utilities → Migrator

Oracle NoSQL Database migrator now supports DynamoDB-supported JSON files as a source.

22.x ReleaseAll Offerings

Enhanced Admin CLI Command to Support Multiple Helper Hosts

NoSQL Database Cluster → Admin CLI

Now users can use either -helper-hosts or -host/-port to connect to the _x000D_ master admin. The command can find _x000D_ the admin so long as it can contact any services at the given hosts/ports, so the given hosts/ports do not need to have an admin. Two flags -admin-host and -admin-port are removed. Scripts that rely on them can simply remove these two flags as long as the given hosts/ports for -helper-hosts or _x000D_ -host/-port can connect to an SN in _x000D_ the store.

18.x ReleaseAll Offerings

Enhanced CREATE FULLTEXT INDEX Command

Integration → Full Text Search

Enhanced the CREATE FULLTEXT INDEX command to now support the creation of text indexes on the contents of a JSON document stored in an Oracle NoSQL Database table. When the elements stored in a column of a given table are JSON documents, the enhancements made to CREATE FULLTEXT INDEX allow users to specify which of the document's attributes to index, as well as the data type Elasticsearch should use when indexing the attribute.

19.x ReleaseAll Offerings

Enhanced Hive/Big Data SQL Integration

Integration → Big Data SQL

Modified the Hive/Big Data SQL _x000D_ integration mechanism to support querying table fields of the data types FieldDef.Type.JSON, FieldDef.Type.NUMBER, and FieldDef.Type.TIMESTAMP. Along with this feature, new example code is also provided to help create tables with fields of these new types.

20.x ReleaseEnterprise Edition Only

Enhanced Operation and Request Count Statistics to Use Long Values

NoSQL Database Cluster → JMX Monitoring

Added some new JMX bean methods that return total counts as longs. In some cases, for large stores, counts could exceed 2^31, so these new methods are needed to return accurate values for these statistics. The old methods are maintained for compatibility and will return Integer.MAX_VALUE if the count gets too large._x000D_ _x000D_ New methods on the OperationMetrics interface:_x000D_ _x000D_ getIntervalTotalOpsLong_x000D_ getCumulativeTotalOpsLong_x000D_ _x000D_ New methods on the RepNodeMXBean interface:_x000D_ _x000D_ getIntervalTotalOpsLong_x000D_ getCumulativeTotalOpsLong_x000D_ getMultiIntervalTotalOpsLong_x000D_ getMultiIntervalTotalRequestsLong_x000D_ getMultiCumulativeTotalOpsLong_x000D_ getMultiCumulativeTotalRequestsLong_x000D_ _x000D_ The new long values are also reported in .perf files, collector .csv files, and in JSON output.

19.x ReleaseAll Offerings

Enhanced Oracle NoSQL Hadoop/Hive/BigDataSQL Integration

Integration → Hadoop

The Oracle NoSQL Hadoop/Hive/_x000D_ BigDataSQL integration code now works with Hadoop3, Hive2, and BigDataSQL 4.0. Because changes were made in Apache Hive that make Hive1 incompatible with Hive2, if you wish to run MapReduce jobs, Hive queries, and/or BigDataSQL queries in a Hadoop2, Hive1, and/or BigDataSQL 3.5.x environment, then you should use the 18.3 release of Oracle NoSQL Database; and use this release in Hadoop3/Hive2/BigDataSQL 4.0 environments.

19.x ReleaseEnterprise Edition Only

Enhanced Support for Nested seq_transform Expressions

Application Development → SQL Query Language

seq_transform() is useful for transforming JSON documents stored in table rows. In such situations it is often the case that multiple seq_transform() expressions must be used, nested into each other. Furthermore, inner seq_transform()expressions may need to access the "current" input item of outer seq_transform() expressions. Until now this was not possible. In this release we enhance seq_transform(), so that each such expression creates an appropriately named context-item variable that can be referenced by inner seq_transform() expressions.

21.x ReleaseAll Offerings

Enhanced the Network Name Resolution Cache for Services

NoSQL Database Cluster → Makebootconfig

The address cache is used to resolve host names during name resolution. Two values are used to specify how long the results of successful or unsuccessful name lookups should be kept in the cache. See the Address Cache section of the Networking Properties page for more details._x000D_ _x000D_ When creating a new SN, the values can be configured with the -dns-cachettl flag to the makebootconfig command. After deployment, the initial values can be overridden by changing the parameters dnsCacheTTL and dnsCacheNegativeTTL of the SN. Those two parameters are also policy parameters so that it can be set for future SN deployments. Each service shares the same parameter values with its monitoring SN. When changing the parameters for an SN, all service processes need to be restarted for the new values to take effect. Admin, RN, and arbiter services will be restarted automatically, but the SNs must be restarted manually.

19.x ReleaseAll Offerings

Erasing User Data

NoSQL Database Cluster → Backend Server

Added support for erasing obsolete user data within a specified time period after becoming obsolete, without adding significant performance impact to the application. This new feature, data erasure, runs in the background to zero out obsolete data. All data that is obsolete from the database point of view is removed: i.e. deleted data, older versions of updated records, and expired data. Data erasure also removes corresponding obsolete index records._x000D_ _x000D_ Two new Rep Node parameters control erasure: "enableErasure" is used to enable erasure, which is disabled by default, and "erasurePeriod" specifies the time required to complete an erasure cycle.

21.x ReleaseAll Offerings

FTS Security

Integration → Full Text Search

For the basic and community editions, the -secure flag needs to be set to false explicitly:_x000D_ _x000D_ plan register-es -clustername <es_cluster_name> -host <host_name>_x000D_ -port <http_port> -secure false

18.x ReleaseEnterprise Edition Only

Full Text Search Now Uses an Internal HTTP Client

Integration → Full Text Search

FTS does not use the elasticsearch transport client anymore. It now uses it's own HttpClient built over apache's httpasyncclient library. This implies that the port used while registering Elasticsearch cluster changes to http port instead of the transport used in the earlier revision._x000D_ _x000D_ In the command shown below:_x000D_ _x000D_ plan register-es -clustername <es_cluster_name> -host <host_name>_x000D_ -port <http_port> -secure true_x000D_ _x000D_ The port specified should be the HTTP port of ES cluster. It was the transport port in the previous release._x000D_ _x000D_ As can be seen in the above command, a new secure flag is added whose default value is true. That is, FTS now runs in secure mode by default and this needs some additional certificate set up, as described in the FTS documentation._x000D_ _x000D_ If an existing KVStore already has a registered Elasticsearch, then, after the upgrade, it needs to be registered again using the plan register-es command. The additional registration is needed because the registered port has changed from the transport port to the HTTP port.

18.x ReleaseEnterprise Edition Only

Generic ORDER BY and GROUP BY

Application Development → SQL Query Language

In previous releases, ORDER BY and GROUP BY were possible only if there was an index that sorted the rows by the ORDER BY/GROUP BY expressions. Furthermore, it was not possible for queries to include both ORDER BY and GROUP BY. These restrictions are lifted in this release. For example, the following query returns the monthly sales for year 2020, ordered by the sales amount._x000D_ _x000D_ select f.xact.month, sum(f.xact.amount) as sales_x000D_ from Foo f_x000D_ where f.xact.year = 2020_x000D_ group by f.xact.month_x000D_ order by sum(f.xact.amount);_x000D_ _x000D_ Notice that generic ORDER BY and GROUP BY may consume a lot of driver memory, because of the need to materialize the full query result in driver memory. In contrast, index-based ORDER BY/GROUP BY exploit the row sorting provided by the index to avoid the materialization and caching of any intermediate results. As a result, it is recommended that users create appropriate indexes for use in ORDER BY/GROUP BY queries. For example, if there is an index on both xact.year and xact.month, the above query will use that index and the GROUP BY will be an index-based one. If no such composite index exists, but instead there are two separate indexes on xact.year and xact.month respectively, the above query will use the index on xact.year and the GROUP BY will be a generic one. This is because, in general, indexes that "cover" query predicates are preferred over indexes that "cover" ORDER BY/GROUP BY expressions._x000D_ _x000D_ For generic ORDER BY/GROUP BY, applications can specify (via a query-level execution option) how much memory such operations are allowed to consume at the driver, and a query will raise an exception if the maximum allowed threshold is exceeded.

20.x ReleaseAll Offerings

Group by Clause in SQL for Oracle NoSQL

Application Development → SQL Query Language

Group-by is similar to the one in the standard SQL. However, in Oracle NoSQL grouping is possible only if there is an index that sorts the rows by the group-by expressions._x000D_ _x000D_ Together with group-by the following aggregate functions were implemented: count(*), count(expr), sum(expr), avg(expr), min(expr), and max(expr).

18.x ReleaseAll Offerings

IN Operator in SQL for Oracle NoSQL

Application Development → SQL Query Language

The IN operator is essentially a _x000D_ compact alternative to a number of OR-ed equality conditions. However, in addition to being more compact, queries using IN operators will be executed more efficiently if appropriate indexes exist. For example, if table Foo has an index on columns a and b, then both of the above IN queries will use that index to find the qualifying rows, whereas the equivalent OR queries will be executed via full table scans.

20.x ReleaseAll Offerings

JSON Collection Tables

Application Development → SQL Query Language

Added JSON Collection as a new table type. A JSON Collection table makes it more convenient to use JSON to represent unstructured data.

23.x ReleaseAll Offerings

JSON Output Format for Admin CLI Commands

NoSQL Database Cluster → Admin CLI

runadmin CLI command with "-json" _x000D_ flag will display in the new JSON _x000D_ output format. For compatibility,_x000D_ previous admin CLI JSON output are_x000D_ still supported, user can use "-json-v1" to display previous JSON v1 output format.

18.x ReleaseAll Offerings

Key Distribution Statistics Now Enabled by Default

NoSQL Database Cluster → Backend Server

The collection of key distribution _x000D_ statistics is now enabled by default. You can control whether statistics are collected by setting the rnStatisticsEnabled parameter.

20.x ReleaseAll Offerings

Key Distribution Statistics now Includes Storage Size Information by Default

NoSQL Database Cluster → Backend Server

The collection of key distribution statistics now, by default, collects information about the storage size of the associated table entries. This information can be used to find the storage size for a table in specific partitions and across the store as a whole._x000D_ _x000D_ The new statsIncludeStorageSize parameter controls whether the collection of key distribution statistics includes information about entry storage sizes.

20.x ReleaseAll Offerings

Mathematical functions

Application Development → SQL Query Language

The following mathematical SQL functions are supported: _x000D_ ABS, ACOS, ASIN, ATAN, ATAN2, CEIL, COS, COT, DEGREES, EXP, E, FLOOR ,LN, LOG, LOG10, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, TAN, TRUNC.

24.x ReleaseAll Offerings

Migrator support for CSV

Utilities → Migrator

Oracle NoSQL Database migrator now supports CSV files as a source.

Cloud Service ReleaseAll Offerings

Multi-Region Tables

NoSQL Database Cluster → Multi Region

Multi-Region Tables, a feature that _x000D_ lets users create "read-anywhere" and "write-anywhere" tables that live in multiple regions, where each region is a separate Oracle NoSQL Database store. This is a preview release and a general availability version will be available in a future release.

19.x ReleaseAll Offerings

New Admin CLI Command show mrtable-agent-statistics

NoSQL Database Cluster → Admin CLI

Introduced a new Admin CLI command show mrtable-agent-statistics to show the latest statistics for Multi-Region table agents._x000D_ _x000D_ show mrtable-agent-statistics [-agent <agentID>]_x000D_ [-table <tableName>] [-merge-agents]_x000D_ _x000D_ With no argument, the command shows combined statistics over all tables for each agent. The -agent flag limits the statistics shown to the agent with the specified agent ID. The -table flag limits the statistics shown to the Multi-Region table with the specified name. The -merge-agents flag combines statistics over all agents.

20.x ReleaseEnterprise Edition Only

New Client Side Cache of Table Metadata

NoSQL Database Cluster → Backend Server

Added a new client side cache of table metadata. This affects the various TableAPI.getTable() methods. The cache will improve performance of these methods by not requiring a remote call to the server for Table instances found in the cache.

20.x ReleaseAll Offerings

New Configuration Option in KVStoreConfig

Application Development → SDK (Language) Drivers and APIs

There is a new configuration option in KVStoreConfig that permits specification of a local address on a client machine when connecting to KVStore. Such configuration permits an extra level of network traffic control when running on client machines with multiple NICs. Please review the java doc associated with oracle.kv.KVStoreConfig.setLocalAddress(InetSocketAddress) for details.

18.x ReleaseAll Offerings

New Parameter to Control the Maximum Number of Index Keys Generated Per Row

NoSQL Database Cluster → Backend Server

The parameter is called _x000D_ rnMaxIndexKeysPerRow and its default value is 10,000. When a row is being indexed (either for the first time or after an update), if the number of index keys extracted from the row exceeds the maximum, an IllegalArgumentException will be thrown.

21.x ReleaseAll Offerings

New Policy Parameter for JVM Overhead Percentage

NoSQL Database Cluster → Backend Server

Add a new policy parameter named _x000D_ jvmOverheadPercent for the command change-policy -params [name=value]. If not specified, the default is 25.

18.x ReleaseAll Offerings

New SQL Command SET LOCAL REGION

NoSQL Database Cluster → Multi Region

The new SQL command "SET LOCAL _x000D_ REGION" can be used to specify the name of the local region for use with multi-region tables.

20.x ReleaseAll Offerings

New SQL aggregation operators - array_collect and count(distinct)

Application Development → SQL Query Language

Implemented three new SQL aggregate functions: count(distinct), array_collect(), and array_collect(distinct).

23.x ReleaseAll Offerings

New Timestamp SQL Functions

Application Development → SQL Query Language

New SQL functions are supported to round timestamp, cast timestamp to/from string with customized pattern, and retrieve quarter, day of week/month/year.

24.x ReleaseAll Offerings

New plan plan verify-data Admin CLI Command

NoSQL Database Cluster → Admin CLI

Introduce a new plan plan verify-data that verifies the primary tables and secondary indices for data integrity. The users can run this plan on Admins and/or RepNodes and can choose to verify either the checksum of data records, or the B-tree of databases or both._x000D_ _x000D_ For example:_x000D_ _x000D_ plan verify-data -all-rns_x000D_ _x000D_ verifies both data record integrity and b-tree integrity of primary tables and secondary indices for all RepNodes._x000D_ _x000D_ And:_x000D_ _x000D_ plan verify-data -verify-log disable -verify-btree enable -index disable -all-rns_x000D_ _x000D_ verifies the b-tree integrity of primary tables for all RepNodes.

18.x ReleaseAll Offerings

NoSQL Database Storage Engine Now Included in the Community Edition Release

NoSQL Database Cluster → Storage Engine

Source code for the NoSQL Database _x000D_ storage engine, also known as "Berkeley DB Java Edition", is now included in the Community Edition release package.

19.x ReleaseAll Offerings

Parent-Child Joins in SQL

Application Development → SQL Query Language

More generally, this feature allows for joins among tables in the same table hierarchy. Syntactically, this is done by a new NESTED TABLES clause that may appear in the FROM clause of an SQL query. The NESTED TABLES clause specifies a target table and a number of ancestors and/or descendant tables of the target table. This is similar to using a MultiRowOptions object as a parameter to the tableIterator and tableKeysIterator methods of TableAPI. However, NESTED TABLES greatly extends the capabilities of these programatic APIs and provides more standard semantics and better performance as well. Specifically, NESTED TABLES:_x000D_ _x000D_ Is equivalent to a number of LEFT OUTER JOINS and UNION operations, as they are defined by standard SQL._x000D_ _x000D_ Allows projection: the rest of the query can select any subset of the columns of the participating tables._x000D_ _x000D_ Allows predicates to be specified on the ancesteros and descendant tables, using the ON clause from standard SQL._x000D_ _x000D_ Allows the target table to be accessed via a secondary index even when descendant tables are specified._x000D_ _x000D_ As an example, consider an application that tracks a population of users and the emails sent or received by these users. Given that SQL for Oracle NoSQL does not currently support general purpose joins, the emails are stored in a table that is created as a child of users, so that queries can be written that combine information from both tables using the NESTED TABLES clause.

18.x ReleaseAll Offerings

Property Graph Package

Integration → Big Data SQL

Starting with release 21.2, the RDF Property Graph package is deprecated and is no longer certified with Oracle NoSQL Database.

18.x ReleaseEnterprise Edition Only