GitHub: https://github.com/HuakunShen/tauri-demo/tree/master/examples/surrealdb SurrealDB is very powerful, here are its features

  • Vector search
  • Relation+Document+Graph DB
  • FTS
  • Time Series
  • Geospatial
  • KV (like Redis)

Since it’s written in Rust, we can embed it in a Tauri app.

App Size

However, it introduces much higher bundle size compared to sqlite integration.

ConditionApp Size (.dmg)App Size (.app)
Before SurrealDB2.9MB8.3MB
After SurrealDB19MB54MB

FYI, in the other example drizzle + sqlite in Tauri App, the app size is 13MB (.app) and 4.8MB (.dmg).

So roughly,

  • sqlite integration introduced extra 13-8=5MB and surrealdb introduced extra 54-8=46MB.
  • .dmg files are compressed. Sqlite integration introduced extra 4.8-2.9=1.9MB and surrealdb introduced extra 19-2.9=16.1MB. Surrealdb has much more features than sqlite, so there is a trade-off here. Do you need all features of Surrealdb? If you want a minimal app, you should use sqlite. But the size increase is honestly not considered as a big deal today, all the apps are bloated. Electron apps are typically 200-400MB. But developers using Tauri may want a minimal app size. You can decide for yourself.

RAM

  • This main process of this SurrealDB example app uses consumes ~100MB of RAM.
  • drizzle + sqlite in Tauri App implements a similar example using the tauri-plugin-sql plugin, and consumes ~30MB of RAM (main process). So 70MB difference. It’s not a big deal for modern computers, but still a big difference.