Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java服务器应用程序数据库选项_Java_Database_Options - Fatal编程技术网

Java服务器应用程序数据库选项

Java服务器应用程序数据库选项,java,database,options,Java,Database,Options,我正处于为我的需要而指定的java服务器应用程序的规划阶段 基本上,服务器需要使用用户名和密码以及每个用户的一些指定值检查数据库 由于我不熟悉java服务器应用程序,我想知道这方面的理想选择是什么 当服务器应用程序关闭并稍后恢复时,需要能够保存数据库 我一直在考虑的一个选择是简单地使用一个.txt文件作为数据库,在服务器启动时,创建一个HashMap或其他东西,并使用存储在该文件中的数据。这使得它具有可读性(是.txt文件的原因),而且我听说HashMaps是性能的最佳选择 我读过关于HSQLD

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

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

由于我不熟悉java服务器应用程序,我想知道这方面的理想选择是什么

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

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

我读过关于HSQLDB的文章,但我不确定如何使用它

谢谢。
Mike.

任何数据库都可以

MySQL、PostgreSQL或SQL Server(如果在Windows上)都是不错的选择

如果您想要进程中的东西,可以选择hsql,或者Derby。进程内数据库的缺点是需要确保干净停止(无终止),并且在运行时无法调查数据库的内容

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


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

对于您想要做的事情,任何数据库都可以

MySQL、PostgreSQL或SQL Server(如果在Windows上)都是不错的选择

如果您想要进程中的东西,可以选择hsql,或者Derby。进程内数据库的缺点是需要确保干净停止(无终止),并且在运行时无法调查数据库的内容

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


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

没有一个答案,还有一些可能/应该影响你的决定的考虑因素:

  • 服务器是否需要扩展/是否会有多个节点?如果是这样的话,文本文件就不会剪切它,因为在进行更改时,节点之间很容易失去同步

  • 将来是否有必要存储其他类型的数据?在添加新字段和关系方面,关系数据库可以非常灵活。一个文本文件并没有那么多

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

  • 您希望有多少数据?在服务器启动时将所有内容加载到内存缓存中都可以正常工作,直到您的数据太多而无法装入内存为止。一旦发生这种情况,您就必须想出一些解决方案,在不将整个内容加载到内存的情况下手动搜索文本文件中的条目。虽然您当然可以做到这一点,但这正是数据库软件设计和优化所要解决的问题

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

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


    Java为几乎所有流行的RDBMS都提供了连接器,因此您可以轻松地连接MySQL、Postgres、Oracle,甚至像MongoDB这样的非关系型数据存储。就我个人而言,我会推荐MySQL,因为它易于设置,而且使用起来相当简单。当然,它比甲骨文更容易理解。

    没有一个答案,还有一些可能/应该影响您决策的因素:

  • 服务器是否需要扩展/是否会有多个节点?如果是这样的话,文本文件就不会剪切它,因为在进行更改时,节点之间很容易失去同步

  • 将来是否有必要存储其他类型的数据?在添加新字段和关系方面,关系数据库可以非常灵活。一个文本文件并没有那么多

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

  • 您希望有多少数据?在服务器启动时将所有内容加载到内存缓存中都可以正常工作,直到您的数据太多而无法装入内存为止。一旦出现这种情况,您就必须想出一些解决方案,在不加载整个文本的情况下手动搜索文本文件中的条目