轻量级、易于安装的数据库



我有一个小型的家庭开支应用程序,我正在空闲时间用Java开发它。既然它是功能性的,我想让它变得可移植,这样我就可以把它传给朋友(非开发人员(来试用。

我设法将api和web ui固定化了,但DB有点棘手。目前我正在使用mysql,安装在我的机器上。但是我不希望用户安装和配置数据库。

我需要的是:

  • 免费的东西
  • 在prem上(不希望用户担心他们的数据可能被窃取(
  • 体积和速度要求低。这个数据相对较小
  • 便携式。理想情况下不安装。或者通过没有参数的脚本进行安装
  • 零维护。我不希望用户检查运行状况或安装修补程序
  • 持久性。在内存数据库上,如果崩溃,会丢失数据
  • 由于我已经投资了Spring ORM,所以我更喜欢与现有代码一起使用的东西

基本上你的选择是:

  1. Dockerize还有mysql数据库(使用现成的映像(+您可能想使用docker compose来同时启动数据库和应用程序。如果你的朋友有docker(这似乎已经是你的应用程序的要求了,那么这可能是最简单的方法(。

  2. 使用另一个可嵌入到应用程序中的数据库。例如:SQLLight、Derby、H2。如果你的查询很简单;足够便携";这种方法也可以工作,但您至少必须重新检查所有查询,因为有时这些DB的行为可能与MySql不同。与方法1相反,您不需要另一个容器来运行,也不需要使用docker compose,这也不是什么大不了的事情,因为docker compuse是目前任何docker安装的一部分。

  3. 在一些云中托管数据库(如AWS(,并从应用程序连接到云。这可能会很慢(应该是这3种方法中最慢的一种(,但会使您免于维护数据库的负担。当然,如果你的应用程序的不同副本访问不同的数据,这是行不通的(那么你必须在云中为每个用户维护一个数据库(。这也可能很昂贵,因为你必须向云提供商付费。

最后,我建议你使用解决方案1,如果你不能使用2,最糟糕的是解决方案3 IMO.