Electron offline database


#1

Hi all,

Please bear with me, I’d like to elaborate on my context before I reach the point of my topic.

I’ve started writing an app last year, and through a search for an “offline database” solution, I came across neDB. It seemed to be fine, even though I come from an SQL background, I did try to get used to it. I dropped the project a few months after due to lack of time.

A few months after (now), I’ve learned a lot of things through (TDD, vuejs, etc) and decided to start over with vue-electron. But I told myself, since I know SQL better than MongoDB (which I never wrote for), why not seek for solutions based on the query language I know best first. So here start the confusion:

  • I come across sqlite3, which seemed to be exactly what I wanted, creates a file on the machine, and allows SQL query. But the callbacks felt … wrong. I still implemented it. But half way through I find
  • better-sqlite3, reading the arguments provided on this module, and after using it as well, I realize it is definitely better than the sqlite3 module. But still … coming from a laravel background … I couldn’t find anything close to the classes within laravel framework to perform easy “migrations” and “amends” to the database. At that point I thought of coding one on my own. Also, I experience missing features in sqlite compared to mysql, which is normal, but these missing features makes me feel that I’d be better having a solution using mysql instead …

However now I am having this thought, what if, my application is already being used by users, and I want to update/amend the local database to have, say, a new field, or so, does it sound a noSQL database would fit better here? and if so, should I consider “Tingo” as mentioned here or is there a better alternative that handles setting up such an offline database and allow “progressive” improvements/updates to it?

I had a look around certain apps which I feel are based on electron/atom:

  • Discord: seems to use sqlite3?
  • Slack: I can’t tell within the repo what module it uses for storage
  • VSCode: same as above

Is there a solution that allows a proper implementation of “mysql” or am I better off with a noSQL solution knowing that I need a relational data structure somehow (I’ll need to have tags).

Thanks in advance for any feedback.