【问题标题】:Lightweight easy to install db [closed]轻量级易于安装的数据库 [关闭]
【发布时间】:2020-09-06 05:41:18
【问题描述】:

我有一个小型家庭开支应用程序,我在空闲时间用 Java 开发它。 现在它已经可以使用了,我想让它变得可移植,这样我就可以将它传递给朋友(非开发者)来试用。

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

我需要的是:

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

【问题讨论】:

    标签: java database docker


    【解决方案1】:

    基本上你的选择是:

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

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

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

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

    【讨论】:

    • Dockered Mysql 已经想到了。但是如何使数据持久保存在磁盘上?
    • 因为该 docker 具有卷的抽象。所以基本上你可以创建一个卷并将其映射到mysql将在内部存储数据的文件夹。它将保证在重新启动 docker 容器时不会删除数据。请参阅 stackoverflow.com/questions/39175194/… 有关 docker 卷支持的一般信息,请参阅 docs.docker.com/storage/volumes
    猜你喜欢
    • 2010-09-21
    • 2010-10-17
    • 2010-11-29
    • 2012-08-02
    • 2011-07-21
    • 1970-01-01
    • 2012-02-20
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多