【问题标题】:Java server application database options [closed]Java 服务器应用程序数据库选项 [关闭]
【发布时间】:2011-07-23 12:18:41
【问题描述】:

我正处于为我的需要指定的 java 服务器应用程序的规划阶段。

基本上,服务器需要使用用户名和密码以及每个用户的一些指定值来检查数据库。

由于我是 Java 服务器应用程序的新手,我想知道最理想的选择是什么。

当服务器应用程序关闭并稍后恢复时,数据库需要能够保存。

我一直在考虑的一个选项是简单地将 .txt 文件作为数据库,并在服务器启动时创建一个 HashMap 或其他东西并使用存储在文件中的数据。这使它具有可读性(由于 .txt 文件),而且我听说 HashMap 是提高性能的绝佳选择。

我已经阅读了有关 HSQLDB 的信息,但我不确定如何使用它。

谢谢。 迈克。

【问题讨论】:

    标签: java database options


    【解决方案1】:

    没有一个答案,并且有许多可能/应该影响您的决定的考虑因素:

    1. 服务器是否需要扩展/是否会有多个节点?如果是这样,文本文件不会将其删除,因为您的节点在进行更改时很容易相互不同步。

    2. 将来是否有必要存储其他类型的数据?关系数据库在添加新字段和关系方面可以非常灵活。文本文件不多。

    3. 您需要什么样的可靠性?应用程序是否需要能够从服务器突然关闭、数据库文件的文件系统损坏、HDD 的物理故障等情况中恢复?是否应该创建定期备份?大多数数据库对这些问题都有合理的解决方案。但又是一个文本文件,没那么多。

    4. 您希望拥有多少数据?在服务器启动时将所有内容加载到内存缓存中可以正常工作,直到您遇到太多数据无法放入内存的地步。一旦发生这种情况,您将不得不想出一些解决方案来手动搜索文本文件中的条目,而无需将整个内容加载到内存中。虽然您当然可以这样做,但这正是数据库软件设计和优化的问题。

    5. 您想要多少并发性和稳健性?如果从不同线程同时进行更改(这在 Web 应用程序中很常见),则文本文件和内存中的映射很容易损坏。您可以通过同步任何修改状态的东西来解决这个问题,但这会影响性能。大多数数据库都有事务更新和引用完整性等概念,这有助于确保状态始终保持一致和持续维护,即使面对多个并发更新也是如此。

    因此,使用文本文件和内存映射并不是一个不可行的解决方案,前提是您确信您只需要一个服务器实例,并且您的数据模型不需要随着时间的推移发生重大变化,并且您的数据文件不会变得太大而无法放入内存。否则,您应该选择一个数据库提供程序并使用它。

    Java 为几乎所有流行的 RDBMS 提供了连接器,因此您可以轻松连接 MySQL、Postgres、Oracle,甚至是 MongoDB 等非关系型数据存储。我个人会推荐 MySQL,因为它易于设置且使用起来相当简单。当然,它比 Oracle 之类的更平易近人。

    【讨论】:

    • 非常感谢您花时间写这篇文章。文本文件可以满足我的需要,但我担心同步时文件损坏或性能。我想我会试试 MySQL。
    • 尝试在 Windows 7 机器上安装 MySQL 3 小时后,我得出结论,除非您第一次尝试正确,否则这几乎是不可能的。无数的互联网搜索和 tuts 都没有帮助。现在将尝试使用 postgresql。
    【解决方案2】:

    对于你想做的任何数据库都可以。

    MySQL、PostgreSQL,或者如果在 Windows 上,SQL Server 都是不错的选择。

    如果你想要一些进程内的东西,你可以选择 hsql,或者 Derby。进程内数据库的缺点是需要确保完全停止(没有 KILL),并且在运行时无法调查数据库的内容。

    大多数进程内数据库也可以作为独立服务器运行,在这种情况下,您可以像访问其他数据库一样访问它们。

    至于推荐,我想我会推荐 MySQL,因为它似乎有一些不错的初学者工具。但都是可行的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多