DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Realm


Realm is a an open-source and object-oriented DBMS, initially for mobile(Android/iOS), also available for platforms such as Xamarin or React Native, and others including desktop application(Windows).[1] It supports programming language including Objective-C, Swift, Java, Kotlin, C# and Javascript. It's built on zero-copy architecture, which could provide high speed and auto-updating results for the query.[04]

Developer
Country of Origin
US
Start Year
2011 [10]
Former Name
tight.db
Project Types
Commercial, Open Source
Written in
C++
Supported Languages
C#, Java, JavaScript, Objective-C, Swift
Operating Systems
Android, iOS, Windows
License
Apache v2

Database Entry

Realm


Realm is a an open-source and object-oriented DBMS, initially for mobile(Android/iOS), also available for platforms such as Xamarin or React Native, and others including desktop application(Windows).[1] It supports programming language including Objective-C, Swift, Java, Kotlin, C# and Javascript. It's built on zero-copy architecture, which could provide high speed and auto-updating results for the query.[04]

History[04]


Realm originates from the project called TightDB which was initially developed by Alexander Stigsen and Bjarne Christiansen began in the end of 2010. Later in 2011 they started a company at Y Combinator and renamed the product to Realm in 2014 September.

The first version of Realm was released in June 2016 and a platform for real-time two-way synchronization in beta version was released in 2016 September.

Checkpoints


Not Supported

Compression


Not supported

Concurrency Control[05]


In Realm, each connected thread will see a snapshot of the data at a particular point in time. Moreover, it utilizes the copy-on-write mechanism and allows only one client to modify data at a certain point.

Data Model


Foreign Keys


Not Supported

Hardware Acceleration


No Acceleration

Indexes[06]


Realm is based on B- Tree Structure

Isolation Levels[05]


No objects shared between threads, which means it's literally single-thread.

Joins


It's not relational database

Logging[07]


Realm maintains a transaction log to coordinate operations across boundaries between threads/processes. The log includes all the individual changes made to the database.

Query Compilation


Query Interface


Realm Database has its own custom APIs.

Storage Architecture[08]


You could configure during run-time.

Storage Model[09]


Properties would be kept contiguously linked at the vertical level.

Storage Organization[09]


Stored Procedures


System Architecture


Realm Database is not a distributed database. It's mainly for the mobile device.

Views


Realm database supports reflective views and imperative views. Essentially they are very similar to materialized views and virtual views.

Revision #3