Changes in 12cR1.3.0.5

The following changes were made in Oracle NoSQL Database 12cR1.3.0.5.

New Features

  1. A new client interface has been added that includes a set of datatypes and a tabular data model using those types. The tabular data model is used to provide support for secondary indexes which are defined on fields in a table. The model is discussed in the Getting Started Guide for Tables

    Tables and indexes are defined using the administrative CLI and accessed via programmatic API. The data CLI has been enhanced to perform operations on tables and indexes as well. The API is documented in the Oracle NoSQL Database Javadoc, and is primarily in the oracle.kv.table package.

    It is possible to define tables that overlay data created with NoSQL DB Release 2 if that data was created using a conforming Avro schema. This overlay is required in order to create secondary indexes on conforming Release 2 data.

    The existing key/value interface remains available.

  2. It is now possible to define secondary indexes for records. See the previous changelog entry about tables. Index entries for a given record have transactional consistency with their corresponding primary records. Index iteration operations are part of the new table API. Index scan operations allow applications to iterate over raw indexes in 3 ways -- forward order, reverse order, and unordered. It is possible to define exact match and range scans in indexes. Indexes can be on single fields or defined as composite indexes on multiple fields in a table.

  3. Support for username/password authentication and secure network communications has been added. Existing applications that do not require this feature are not impacted except for a change to makebootconfig, which adds a new required argument (-store-security). Users that wish to use the new capabilities should be aware of the following areas of change:

    • The makebootconfig utility has a new required -store-security command-line argument, which is used to enable security for a new KVStore deployment. The -store-security flag is also used to enable a non-secure deployment, and is actually required in that case (-store-security none).

    • A new securityconfig tool has been added, which provides the ability to:

      • Create security configurations

      • Create/modified password stores

      • Enable security on a pre-existing, non-secure KVStore

      • Perform security maintenance tasks

    • Additional methods on the KVStoreConfig class:

      • setSecurityProperties()

      • getSecurityProperties()

    • An additional method on the KVStoreFactory class supporting authentication:

      • KVStoreFactory.getStore(KVStoreConfig, LoginCredentials, ReauthenticateHandler)

      This new method utilizes the new interfaces

      • LoginCredentials

      • ReauthenticateHandler

      As well as the new class PasswordCredentials.

    • Additional methods on the KVStore interface:

      • login()

      • logout()

    • New exception classes:

      • UnauthorizedException

      • AuthenticationFailureException

      • AuthenticationRequiredException

    Users should also familiarize themselves with security property files, which are required when using a KVStore command-line utility program against a secure store, and which may also be useful when running an application against a secure store.

    This feature is described in much greater depth in the Oracle NoSQL Database Security Guide, as well as in the Administrators Guide and product Javadoc.

  4. The administrative CLI has been modified to use new terminology to refer to data centers. Data centers are now called zones. The new terminology is meant to clarify that these node groupings may not always coincide with physical data centers. A zone is a collection of nodes that have good network connectivity with each other and have some level of physical separation from nodes in other zones. That physical separation may mean that different zones are located in different physical data center buildings, but could also represent different floors, rooms, pods, or racks, depending on the particular deployment.

    Commands that contained the word "datacenter" have been deprecated, and are replaced with commands using the word "zone". The previous commands will continue to work in this release. New commands are:

    • plan deploy-zone

    • plan remove-zone

    • show zones

    Command flags that specify a zone have been changed to -zn, for a zone ID, and -znname, for a zone name. The earlier -dc and -dcname flags have been deprecated but will continue to work in this release. In addition, zone IDs can now be specified using the "zn" prefix, with the earlier "dc" prefix still currently supported.

    The administrative GUI has also been modified to use the new Zone terminology. [#22878]

  5. There are now two types of zones. Primary zones contain electable nodes, which can serve as masters or replicas, and vote in master elections. All zones (or data centers) created in earlier releases are primary zones, and new zones are created as primary zones by default. Secondary zones contain nodes of the new secondary node type, which can only serve as replicas and do not vote in master elections. Secondary zones can be used to make a copy of the data available at a distant location, or to maintain an extra copy of the data to increase redundancy or read capacity. [#22483]

  6. The show plan command now provides an estimated migration completion time. For example: [#22183]

    Plan Deploy Topo (12)
    State:                 RUNNING
    Attempt number:        1
    Started:               2014-01-14 17:35:09 UTC
    Ended:                 2014-01-14 17:35:27 UTC
    Total tasks:           27
     Successful:           12
     Incomplete:           15
    Incomplete tasks
       3 partition migrations queued
       1 partition migrations running
       11 partition migrations succeeded, avg migration time = 550164 ms.
    Estimated completion:  2014-01-14 19:57:37 UTC
  7. A new read consistency option has been added for this release. oracle.kv.Consistency.NONE_REQUIRED_NO_MASTER can now be used to specify that the desired read operations must always be serviced by a replica, never the master. For read-heavy applications (ex. analytics), it may be desirable to isolate read requests so that they are performed only on replicas, never a master; reducing the load on the master. The preferred mechanism for achieving this sort of read isolation is the new secondary zone feature; which users are encouraged to employ for this purpose. But for cases where the use of secondary zones is not desired or impractical, oracle.kv.Consistency.NONE_REQUIRED_NO_MASTER can be used to achieve a similar effect, without the additional resources that secondary zones may require. [#22338]

  8. The following methods have been added:

    • KVStoreConfig.setReadZones()

    • KVStoreConfig.getReadZones()

    These methods make it possible to require that read operations only be performed on nodes located in the specified zones.

  9. The show plans command has been changed so that a range of plan history can be specified. With no arguments, show plans now displays only the ten most recently created plans, but new arguments can be used to select ranges by creation time and by plan id. Issue the command "show plans -help" to see the complete set of options.

  10. The makebootconfig utility has a new optional -runadmin command-line argument, which allows the SNA to force the start of a bootstrap admin even if the value of -admin is set to 0.

    The option -port of plan deploy-admin within the admin CLI has been changed to be able to control the start of the admin web service. No web service of the admin will be started if the -port is set to 0 in deploying.

    Users can also change the http port of an admin after deployment via plan change-param command of admin CLI to change the setting for whether an admin runs a web server. [#22344]

  11. The plan change-param command has been changed to allow changing the parameters for a single admin service. [#22244]

  12. NoSQL topology information is stored both in the Admin services and on Storage Nodes, and can become inconsistent if topology changing plans such as deploy-topology and migrate-sn are canceled before completion. Inconsistencies can be repaired by redeploying the target topology. In this release, a "plan repair-topology" command is also provided as an additional way of repairing topology inconsistencies. The verify configuration command now generates recommendations for when it may be beneficial to use repair-topology. [#22753]

Bug and Performance Fixes

  1. The makebootconfig command now prints a message when it declines to overwrite existing configuration files. [#23012]

  2. The "plan remove-admin" now permits removal of an Admin that is hosted by Storage Node that is not running. [#23061]

  3. Fixed a bug that sometimes caused a duplication of the admin section in a Storage Node's config.xml file. As a result, the "plan change-parameters" command, when applied to an Admin service with this configuration irregularity, could unexpectedly have no effect. The bug could be provoked by attempting to deploy an Admin that is already deployed; but it could also happen when re-executing a failed "plan migrate-storagenode" command. [#23152]

  4. Fixed a problem that caused the topology redistribute command to ignore storage directory settings when creating new replication nodes. [#23161]

  5. Previously, when there was no activity during a RepNode's metrics-gathering period (the statsInterval), the previous period's metric values would be reported via JMX and SNMP. This behavior has changed so that the metrics are updated at every interval. [#22842], [#22537]

  6. NoSQL DB automatically adjusts mastership identity so that master nodes are distributed across a store for optimal performance. Fixed a problem that prevented Master Balancing from being performed across multiple zones. [#22857]

  7. Modified the LOB implementation to repeat calls to InputStream.skip as needed to position the input stream to the start location, so long as the calls return non-zero values. An IllegalArgumentException will be thrown if the calls do not advance the stream to the required start location.

Utility Changes

  1. The administrative and data command line interfaces (CLI) have been merged into a single program. The usage of the merged CLI is compatible with most old usage but has additional options that allow it to work for administrative operations, data operations, or both. This change requires the use of kvstore.jar for data operations where in previous releases, the data CLI only required kvcli.jar, which depended on kvclient.jar.

  2. The CLI has been enhanced with commands necessary to manage tables, indexes, security information, and zones.

Documentation Changes

  1. With the introduction of the tabular data model and secondary indexes, a new Getting Started with the Table API guide has been added.

  2. With the introduction of the new security features, a new Security Guide has been added.

Packaging Changes

  1. The versions of the Avro and Jackson libraries bundled with Oracle NoSQL Database have been upgraded to the more recent Avro 1.7.6 and Jackson 1.9.3. These versions are compatible with the previous API versions.