In order to have better JVM version compatibility Onyx Database 2.0.0 has been migrated to Kotlin. As a result integration with Android has been made simpler and no longer requires source compatibility of 1.8. One of the benefits of the migration is that the open source code base has been reduced by 50%. The reduced codebase is simpler and easier to maintain.
Onyx Database version 1.x is not compatible with version 2.0.0. Attempting to use Onyx Database database with the newer version will result in an error.
Kotlin language features including infix functions, class extensions, and builder patterns enrich the Onyx API by providing less verbose and more concise querying.
A new method for querying Onyx Database includes a DSL like syntax that is geared towards using Kotlin. Kotlin Query builder follows the conventions of most DSL and SQL languages and includes the same features that Onyx Database persistence manager has. The key difference is that it is less verbose and has additional methods such as map and forEach for aggregating query results.
Maven modules including onyx-android, onyx-android-remote-driver, and onyx-database-moe have been deprecated and are no longer needed. The onyx-database and onyx-remote-driver modules fully support Android and can replace the deprecated modules.
The following APIs have been removed or deprecated
The following methods have added better support for template generic types
Upgrading to version 2.0.0 will require adding type parameters for saving an entity.
Persistence Manager Factory constructor has added location as a required property. Since location is always required, it has been added to the constructor. This will be required to change when upgrading from 1.x.
Onyx Database version 2.1.1 Has support for query functions. You can now group by field(s) to better aggregate data.
Select functions include min, max, sum, count, replace, avg, and substring. Functions may be used with or without query groupings. Within Kotlin, support has been added within the QueryBuilder DSL syntax. Below is an example of how they are used.
Android Startup Android startup time has been reduced by 600%.
Better Security and Encryption Onyx provides a way to improve security by overriding the default EncryptionInteractor. You can choose to change the pass key and salt or change the default encryption behavior.
Relationship Query Support Onyx has added support for hierarchical relationship queries. You can now use relationship chains as keys when specifying query criteria.
Onyx Database Version 1.3.0 has been released. With it Onyx Database delivers a new way to design data driven applications.
Query Change Listeners allow you to execute a query once and listen for changes including insertion, update and delete events that match the original Query Criteria. This feature is available for the in-memory, embedded, and remote databases. This similar feature that is available in Realm is brought to you by Onyx for free.
Query Change Listeners is the main feature released in 1.3.0 but there were several other enhancements delivered.
Query Caching has been implemented for frequently executed queries. For the most commonly used queries, Onyx will automatically maintain a cache of results.
Android Remote Database Driver has been ported and made available for Android. Onyx In-Memory, Embedded, Web Service, and now the Remote database has been made available on a mobile platform.
Infer Query Types by using generic definitions. A change have been implemented for unchecked casts for query return types. Casting is no longer required and the pesky unchecked type warning will no longer be apparent when using the Persistence Manager API.
Onyx Database Version 1.2.1 has been released. There has been some game changing features and staggering performance improvements.
Android support added. We are proud to announce that Android is officially supported. You are now able to integrate the Onyx Embedded Database by using Jack & Jill compiler options. Onyx requires Java source compatibility 1.8. It will support Android OS starting with API version 9.
Graph vs Object, the choice is yours. Onyx NoSQL Database can now be used as either a Graph or an Object database. If relationships are not your cup of tea, you can declare objects as attributes. Managed entities can be declared as an attribute. List of Managed Entities can be declared as an attribute as well.
In addition to the new object data types Onyx NoSQL database now includes all primitive and mutable object types as attributes. For a complete list of supported data types you can read more.
Variable Indexing has been introduced in Onyx NoSQL database V1.2.1. Variable indexing allows you to tune the scalability based on your needs. If you require a database to have small footprint on disk, set a lower load factor. This will also perform better for smaller data sets. If Big Data is your requirement, set the loadFactor all the way up to 10. This will indicate you need a comprehensive multi dimensional index.
In addition to the great features that were delivered there were a great deal of performance improvements.
Performance has been increased by 100%. By using a more efficient concurrency pattern Onyx Database has made the performance gap larger between embedded databases.
No more memory leaks. An effort to eliminate memory leaks was taken seriously in V1.2.1.
Warnings to 0. As an effort to deliver continuous improvement, our code base has been cleaned up to replace our technical debt. There are no warnings on the open source libraries we maintain.
Onyx Remote Database Server has been refactored. There are no longer any 3rd party dependencies. It is smaller and light-weight as ever.
The Onyx Remote server is now compatible with Amazon AWS EFS(Elastic File Store) and Azure SMB storage. Clustering with EFS and auto scaling is now available with Enterprise licensing. For more information regarding this, please feel free to contact us.
The remote database and web service capability has been separated. They are no longer one of the same. The WebServiceServer now extends from the Onyx Database server.
There is no longer a confusion between the legacy socket server. RMI has since been replaced and there is no need to specify a socket server port. The Web Server however still requires a different port than the remote server. Setting up a server has been simplified.