In this article we will learn about Flutter NoSql Database in very simple language, I will not use any technical and difficult terminology to define this. What I understand, i will try to explain without making it complex. As we know Database is a very important part of every application, website or software, without a database it is not possible to make large scale applications. Most common database types available are SQL database and NoSql database, but most people are still not aware about what is NoSql database. In this article we will read about NoSql database and we will cover all important points and available NoSql which will help us to choose right database for our app.
Point we will cover in this article
- What is Flutter NoSql Database
- Why to use Flutter NoSql Database
- Different NoSql Database options available in Flutter
1. What is Flutter NoSql Database
The word NoSql is stands for “Not Only Sql” or “Not Sql”, it is a non-relational database management system, which means it does not have fix schema or database structure. While creating database we don’t need to define tables and tables structure, NoSql is an open ended solution where we can add any data without defining schema or upgrading the structure of database. In our traditional SQL database management system, before using Database we need to define a fix schema or structure or fields to store data. In case we need to add another field we need to modify the table structure to make it compatible with incoming data, but in case of NoSql we don’t need to worry about these things, add/remove any new fields or key whenever you want.
As I am just concerned with Flutter NoSql database from the mobile app point of view, so i will not go deep into the history, types and other things, if you are interested to read more about the NoSql Database origin, types, evaluations etc. I am adding few important and wonder full resources link, you can check it out.
2. Why to use Flutter NoSql Database
Most of the big apps are using NoSql Database for local storage, the first primary reason is open structure and easy to use. We can store data in json format, whatever response we will get from server in json format, we can store as it is. As it is json based so it consume very less space. Flutter NoSql database is very much fast in comparison with SQL database. Key benefits are-
- Lightweight and fast
- No complex database schema needed
- No more complex queries need to perform database operations
- Direct json object handing.
- Direct operations on json objects stored in database
- Provided protected and encrypted database to make apps data more secure
3. Different NoSql Database options available in Flutter
I have picked my personal preference here, after working on different kind of apps and requirements, i found some of the good Flutter NoSql database those very easy to implement and have powerful features. Let’s dive into the deep sea of the world Flutter NoSql Database options.
Please note- This article is just about the different options available in this category, no coding example or tutorial is provided here. Because i will provide complete tutorials of each option separately, so that you can learn thoroughly. Or we can say it will be like a crash course of Flutter NoSql Database (Hive, Sembast, Objectbox) subscribe to stay connected.
Other articles or tutorials you may like
- Flutter GETX, Shopping Cart Example (Getx Obx, Obs)
- Flutter Buttons Type (Elevated Button, OutlinedButton, TextButton etc)
- Flutter GETX, Check Internet Connectivity (Getx Obx, Obs)
- Flutter Custom Radio Button with Custom Shapes
- Flutter Social Login Buttons (Facebook Login, Google Login, etc)
- Flutter Mutillevel DropdownButton Tutorial with real data example
1. Flutter Hive
Flutter hive is very popular Flutter NoSql Database option, it have the maximum number of likes on pub.dev, and the number of likes justified when you will use Hive in your app. I bet, you will fall in love with Hive, it is so much easy, smooth and powerful. We can perform any action using its strong API.
Hive work on key-value base database written in Dart. Hive claims it is the most fast NoSql Database available for Flutter but ObjectBox another Flutter Nosql Database busted this claim, we will read next in this article. But it does not mean hive is not good, from my personal experience with Hive, it will take very less time to learn, once you will start working on it, you will notice in no time you are familiar with it’s syntax or library. I have handled thousands of records in one of my chat messaging app, and hive performed very well. Using Hive you can do lot of things in very less code, just initialise hive where you want and open a box, and you are ready to do anything with database.
2. Sembast
Sembast is another very good option if you want to go with Flutter NoSql database. It stands for Simple Embedded Application Store database. As per the information provided on pub.dev
Yet another NoSQL persistent store database solution for single process io applications. The whole document based database resides in a single file and is loaded in memory when opened. Changes are appended right away to the file and the file is automatically compacted when needed. Works on Dart VM and Flutter (no plugin needed, 100% Dart so works on all platforms – MacOS/Android/iOS/Linux/Windows). Inspired from IndexedDB, DataStore, WebSql, NeDB, Lawndart…
As per my personal experience with Sembast, it is lil bit hard in comparison with Flutter Hive, but equally useful in term of database management and ease of use, after spending some time with given example or any hand one simple CRUD example, you can easily get familiar with the syntaxes.
Here is the complete list of features and details
1. Storage Format
Sembast stores data in text file in json format, along with database information (in first line of file) and record data itself (that is json). Follow the link for detailed information on storage format.
2.Supported types (Data Types)
Keys
Supported key types are:
- int (default with autoincrement when no key are passed)
- String (supports generation of unique key)
Values
Supported value types are:
String
num
(int
anddouble
)Map<String, Object?>
(Object?
being any of the supported types)List<Object?>
(Object?
being any of the supported types,Iterable
is not a supported types, use totoList()
to convert any iterable)bool
null
(the record value itself cannot be null)Blob
(custom type)Timestamp
(custom type)
Unique Feature- We can use Sembast as SQL wrapper too, so it is supporting both SQL and NoSql databases, it make it cool. Is not it?
Click here to get more detailed documentation and example on github.
3. ObjectBox
ObjectBox is the most used and popular Flutter NoSql database option, it stood first in term of presence on pub.dev and in performance also. It have very good documentation available, neat and clean, documentation, examples and discussions. As per they claim on pub.dev comparison image, that Objectbox beaten SQL and Hive in CRUD operations test, they done multiple times. So if we believe what they claim, then the difference is huge in term of performance.
Perosonally i did not notices any difference when i implement Hive, Sembast and ObjectBox in my different flutter applications, the one reason can be the database operations. In normal apps, we do not perform heavy tasks on database, so it the difference in performance is negligible. But if you have an app where you have to handle lakhs of records and need to perform complex queries you can consider Objectbox. For more features, example and documentation you can check the link.
Conclusion
If you are still confused, which is best in your app because all are best, all have all features which we need. To make a better decision lets make a final verdict.
Ease of use and implementation
If you want to do less code, less configuration, easy to learn and perform operations very easily, then go with Hive, in this race Hive is first, Sembast is second and Objectbox is third.
Performance
It is not based on my personal testing, but as per the developers claims and provided the test reports on pub.dev Obejectbox is first, Hive is second and Sembast is third.
Cross Platform Support
Hive – Mobile (Android and iOS), Desktop (Windows, Mac, Linux) and Web.
Sembast- Mobile (Android and iOS) and Web.
Object Box – Mobile (Android and iOS) and Desktop( Mac, Linux, Windows)
I hope this article will help you choose the Flutter NoSql Database for your app better. If you have any query you can write in comment section, we will surly discuss about it.