Mobile databases: SQLite and SQLite alternatives for Android and iOS

Updated comparison

Note: This is an updated version of an earlier Mobile Database Comparison.

What is a mobile database?

While Wikipedia defines a mobile database as “either a stationary database that can be connected to by a mobile computing device […] over a mobile network, or a database which is actually stored by the mobile device,” we solely refer to databases that run on the mobile device itself (on-device).

What are the advantages and disadvantages of working with SQLite?

SQLite is easily the most established mobile database, probably the only “established” mobile database. SQLite has been around since the year 2000 and is embedded with iOS and Android since the beginning. SQLite is a relational database.

advantages

disadvantages

  • Toolchain, e.g. DB browser
  • No dependencies; included with Android and iOS
  • Developers can exactly define the data schema they want
  • Developers have full control, e.g. they can do handwritten SQL queries
  • SQL is a powerful and established query language, and SQLite supports most of it
  • Debuggable data: developers can grab the database file and analyze it
  • Rock-solid, widely used technology, established since the year 2000
  • Using SQLite means a lot of boilerplate code and thus inefficiencies (also in the long run with the app maintenance)
  • 1 MB BLOB Limitation on Android
  • No compile time checks (e.g. SQL queries)
  • SQLite performance is unreliable
  • SQL is another language to master
  • SQL queries can get long and complicated
  • Testability (how to mock a database?)
  • Especially when database views are involved, maintainability may be poor with SQLite

What are SQLite alternatives?

There are plenty of alternatives to working with SQLite directly. If you simply want to avoid writing lots of SQL and boilerplate code, you can use an object abstraction on top of SQLite. This abstraction is usually an ORM (object/relational mapper).

However, if you rather seek to replace SQLite completely, there are also a few alternative databases: Couchbase Lite, Interbase, LevelDB, Oracle Berkeley DB (formerly Oracle’s mobile database was “Oracle Database Lite”), Realm, SnappyDB, SQL Anywhere, and UnQLite.

Obviously, if your also looking for alternatives that are no on-device mobile databases, there are a lot of cloud / server options out there too like e.g. Firebase. Generally speaking, with these your app will not be (fully) offline-capable, costs on the serverside will go up, and they may also be rather slow in execution.

To give you an overview, we have compiled a small comparison table:

Name Android / iOS Type of data stored Sync Central Sync P2P Data level encryption License / business model Short description Minimum Footprint size Company
Couchbase Lite, now Couchbase Mobile
Android / iOS JSON Documents / NoSQL db Yes Yes Database encryption with SQLCipher (256-bit AES) Apache 2.0 Embedded / portable db with P2P and central synchronization (sync) support. Secure SSL. Couchbase
ForestDB
Android / iOS Key-value pairs / NoSQL db No No No Apache 2.0 Portable lightweight key-value store, NoSQL database.
InterBase ToGo / IBLite
Android / iOS Relational No No 256bit AES strength encryption Proprietary Embeddable SQL database. 400 KB Embarcadero
LevelDB
Android / iOS Key-value pairs / NoSQL db No No No New BSD Portable lightweight key-value store, NoSQL db, doesn't support indexes, very fast for some use cases; earlier available enchmarks from 2011 have been removed unfortunately. 350kB LevelDB Team
Oracle Database Lite
Android / iOS Relational and Key-Value-Store With Oracle Mobile Server With Oracle Mobile Server 128-bit AES Standard encryption Proprietary Embedded / portable db with P2P and central sync support as well as support for sync with SQLite. < 1MB Oracle Corporation
Snappy DB
Android Key-value pairs / NoSQL db No No No Apache 2.0 Portable lightweight key-value store, NoSQL db based on LevelDB. Nabil HACHICHA
Realm
Android / iOS Object Database No No Yes Apache 2.0 License APIs with proprietary sync. Embedded object db. Realm Inc.
SQL Anywhere; Ultralite is the mobile version
Android / iOS Relational Dependant No AES-FIPS cipher encryption for full database or selected tables Proprietary Embedded / portable db with central snyc support with a stationary database. Database memory footprint: only 300KB for mobile devices Sybase iAnywhere
SQLite
embedded on iOS and Android Relational No No No, Use SQLCipher to encrypt SQLite Public domain C programming library; clear market leader). 500KiB Hwaci
UnQLite
Android / iOS Key-value pairs / document store / NoSQL db No No 2-Clause BSD Portable lightweight embedded db; self-contained C library without dependency. Symisc systems

If you are interested in an indication of the diffusion rate of databases and mobile databases, check out the following database popularity ranking: http://db-engines.com/en/ran.

Thanks for reading and sharing. Please let us know what you’re missing.

Spread the love