Java 轻量级易安装数据库

Java 轻量级易安装数据库,java,database,docker,Java,Database,Docker,我有一个小型家庭开支应用程序,我在空闲时间用Java开发。 既然它是功能性的,我想让它可移植,这样我就可以把它交给朋友(非开发人员)来试用 我设法将api和web ui对接,但DB有点棘手。 目前我正在使用mysql,安装在我的机器上。但是我不希望用户安装和配置db 我需要的是: 免费的东西 免费(不希望用户担心他们的数据可能被盗) 低容量和速度要求。这一数据相对较小 便携式。理想情况下,无需安装。或不带参数的脚本安装 零维护。我不希望用户检查运行状况或安装修补程序 坚持。在内存数据库上,如果

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

我设法将api和web ui对接,但DB有点棘手。 目前我正在使用mysql,安装在我的机器上。但是我不希望用户安装和配置db

我需要的是:

  • 免费的东西
  • 免费(不希望用户担心他们的数据可能被盗)
  • 低容量和速度要求。这一数据相对较小
  • 便携式。理想情况下,无需安装。或不带参数的脚本安装
  • 零维护。我不希望用户检查运行状况或安装修补程序
  • 坚持。在内存数据库上,如果压碎数据不好,将丢失数据
  • 因为我已经投资了SpringORM,所以我更喜欢使用我现有的代码

基本上,您的选择是:

  • Dockerize还可以使用mysql数据库(使用就绪图像)+您可能希望使用docker compose同时启动db和应用程序。如果您的朋友有docker(这似乎已经是您的应用程序的要求了,那么这可能是最简单的方法)

  • 使用另一个可嵌入应用程序的数据库。例如:SQLLight、Derby、H2。如果您的查询很简单并且“足够可移植”,那么这种方法也可以工作,但您至少必须重新检查所有查询,因为有时候这些数据库的行为可能与MySql不同。与方法1相反,您不需要另一个容器来运行,也不需要使用docker compose,这并不是什么大问题,因为docker compose是当今任何docker安装的一部分

  • 在某个云中托管一个数据库(如AWS),并从应用程序连接到云。这可能会很慢(应该是这3种方法中最慢的一种),但会使您免于维护数据库的负担。当然,如果应用程序的不同副本需要访问不同的数据(那么你必须在云中为每个用户维护一个数据库),那么它就不起作用了。这也可能是昂贵的,因为你将不得不支付给云提供商


  • 总而言之,如果你不能选择2,我建议你选择解决方案1,最糟糕的是解决方案3。

    Docked Mysql已经出现在你的脑海中。但是我如何使数据持久保存在磁盘上呢?因为docker有一个卷的抽象。因此,基本上您可以创建一个卷并将其映射到mysql将在内部存储数据的文件夹。它将保证数据不会在docker容器重新启动时被擦除。有关docker卷支持的一般信息,请参阅