Oracle NoSQL Database can be integrated with Apache Hadoop and products in the Oracle stack. In the following sections you will learn more about this.

Oracle Database Mobile Server Integration

As of Oracle Database Mobile Server (Oracle DMS) 12.1 release, Oracle NoSQL Database can be integrated with Oracle Database Mobile Server. Oracle DMS facilitates the development, deployment and management of mobile database applications for a large number of mobile users.

The main integration feature is synchronizing Oracle NoSQL with Oracle Berkeley DB/SQLite/Java DB.

Oracle DMS can be used as a data synchronization engine between Oracle NoSQL and mobile client databases including Oracle Berkeley DB, SQLite and Java DB. Existing tables in an Oracle NoSQL database can be published to Oracle DMS using publish/subscribe APIs. Oracle DMS creates corresponding tables on the client-side and allows them to synchronously upload their data to Oracle NoSQL. Since, Oracle DMS completely manages the data format conversion between the local client database and Oracle NoSQL DB, no additional coding or scripting is required. The mobile to NoSQL paradigm fits best where the number of clients is large, and/or the amount of collected data is large, and/or the server application requires NoSQL as data storage.

With Oracle NoSQL as data storage, mobile and embedded applications can use Oracle DMS as a complete and reliable solution for synchronizing their data to the highly scalable Oracle NoSQL database. For more information, see section 2.12.3 "Creating NoSQL Queue Publication Item" in the Oracle Database Mobile Server Developer's Guide. You can also find the FleetControl sample application in Oracle Mobile Development Kit (a development toolkit for Oracle DMS), which demonstrates how to use Oracle NoSQL as a back-end database and how to synchronize application data between mobile client database and Oracle NoSQL via Oracle DMS.

Hadoop Integration

Oracle NoSQL Database can be integrated with Apache Hadoop systems using the oracle.kv.hadoop.KVInputFormat class. This class allows you to read data from Oracle NoSQL Database and then prepare it for insertion into a Hadoop system. To move data in the reverse, you can read data from the Hadoop system using the standard mechanisms, and then write the records to Oracle NoSQL Database using the APIs described in this book.

An example of using KVInputFormat to read data from Oracle NoSQL Database in a Map/Reduce job can be found in the <KVHOME>/examples/hadoop directory.

In addition, Oracle NoSQL Database provides the oracle.kv.AvroFormatter interface. This is used to support Oracle Loader for Hadoop (OLH), which can read data directly from Oracle NoSQL Database and write it to Oracle Database as a Map/Reduce job. OLH is described in the Oracle Loader for Hadoop chapter of the Oracle Big Data Connectors User's Guide, which you can find here.

Property Graph Integration

Oracle Big Data Spatial and Graph can be configured to use Oracle NoSQL Database to support its property graph feature. This feature supports graph operations, indexing, queries, search and in-memory analytics.

Graphs are commonly used to model, store, and analyze relationships found in social networks, cyber security, utilities and telecommunications, life sciences and clinical data, and knowledge networks. Typical graph analyses encompass graph traversal, recommendations, finding communities and influencers, and pattern matching.

For more information, see the Big Data Spatial and Graph User's Guide and Reference.

Oracle External Tables Integration

Oracle NoSQL Database data can be accessed using Oracle Database's External Tables feature. This capability allows NoSQL Database data to be read into Oracle Database. NoSQL Database data cannot be modified using the External Tables feature.

Note that this is a feature which is only available to users of the Oracle NoSQL Database Enterprise Edition.

To use the Oracle Database External Table feature to read Oracle NoSQL Database data, you must use the <KVHOME>/exttab/bin/nosql_stream preprocessor to populate our Oracle tables with the data. You must then configure your Oracle Database to use the External Tables feature.

For information on how to use the nosql_stream preprocessor, and how to configure Oracle Database to use External Tables, see the oracle.kv.exttab package summary.

Coherence Integration

Oracle Coherence is a middleware application that provides data management support for clustered applications. The data that an application delegates to Oracle Coherence are automatically available to and accessible by all servers in the application cluster. By distributing data across multiple machines, Oracle Coherence solves problems related to achieving availability, reliability, scalability, performance, serviceability and manageability of clustered applications.

Oracle Coherence is described here.

To provide these solutions, Oracle Coherence implements a cache. This cache can be customized to use a number of different data repositories to store the cached data. One such data repository is Oracle NoSQL Database.

Note that this is a feature which is only available to users of the Oracle NoSQL Database Enterprise Edition.

To integrate with Oracle NoSQL Database, Oracle Coherence must be customized using a combination of configuration XML, stock Coherence code, and custom Oracle NoSQL Database code. The Oracle NoSQL Database code is implemented using classes provided by the oracle.kv.coherence package.

Oracle NoSQL Database can be used to support two different caching strategies for Oracle Coherence. The first of these is implemented by oracle.kv.coherence.NoSQLBinaryStore. This class allows you to implement cache data that is not meant to be shared with non-cache-based applications, and so uses a data format that is fairly opaque. This is an efficient and easy-to-configure caching option.

Alternatively, you can implement a caching strategy that results in data which is meant to be shared with non-cache-based applications. You do this using oracle.kv.coherence.NoSQLAvroCacheStore. This caching mechanism is Avro-aware, and so any Avro-compliant application will be able to read and write these data records.

In order for Oracle Coherence to use these Avro-based objects, it must be able to serialize the Avro records for transmission over its network. To enable this, you use the oracle.kv.coherence.NoSQLAvroSerializer class.