Realm Core Database 6.0: A New Architecture and Frozen Objects
Rate this announcement
Since the acquisition by MongoDB of Realm in May 2019, MongoDB has continued investing in building an updated version of our mobile database; culimating in the Realm Core Database 6.0.
This effort lays a new foundation that further increases the stability of the Realm Database and allows us to quickly release new features in the future.
We've also increased performance with further optimizations still to come. We're most excited that:
- The new architecture makes it faster to look up objects based on a primary key
- iOS benchmarks show faster insertions, twice as fast sorting, and ten times faster deletions
- Code simplifications yielded a ten percent reduction in total lines of code and a smaller library
- Realm files are now much smaller when storing big blobs or large transactions
With this release, we're also thrilled to announce that Realm now supports Frozen Objects, making it easier to use Realm with reactive frameworks.
Since our initial release of the Realm database, our concept of live,thread-confined objects, has been key to reducing the code that mobile developers need to write. Objects are the data, so when the local database is updated for a particular thread, all objects are automatically updated too. This design ensures you have a consistent view of your data and makes it extremely easy to hook the local database up to the UI. But it historically came at a cost for developers using reactive frameworks.
Now, Frozen Objects allows you to work with immutable data without needing to extract it from the database. Frozen Objects act like immutable objects, meaning they won't change. They allow you to freeze elements of your data and hand it over to other threads and operations without throwing an exception - so it's simple to use Realm when working with platforms like RxJava & LiveData, RxSwift & Combine, and React.
Freeze any 'Realm', 'RealmList', or 'RealmObject' and it will not be possible to modify them in any way. These Frozen Objects have none of the threading restrictions that live objects have; meaning they can be read and queried across all threads.
The Realm team is proud to say that we've heard you, and we hope that you give this feature a try to simplify your code and improve your development experience.
Since Java needs immutable objects, we also updated our Java support so all Realm Observables and Flowables now emit frozen objects by default. This means that it should be possible to use all operators available in RxJava without either using
Realm.copyFromRealm()or running into an
If you have feedback please post it in Github and the Realm team will check it out!
The Realm Core Database 6.0 now released with Frozen Objects and we're now focused on adding new features; such as new types, new SDKs, andunlocking new use cases for our developers.
The development, release, and timing of any features or functionality described for our products remains at our sole discretion. This information is merely intended to outline our general product direction and it should not be relied on in making a purchasing decision nor is this a commitment, promise or legal obligation to deliver any material, code, or functionality.