Java服务器数据存储的最佳策略是什么?

标签 java storage

我正在开发一个游戏服务器,因为我必须存储每个玩家的进度,所以我有一个问题: 最适合我的情况的数据存储解决方案是什么?

一些事实: 目前,每个玩家都是我的 MYsql 数据库中的一行,具有唯一的 id 和名称。 每个玩家都有一个世界。 每个世界都包含越来越多的区域(随着玩家前进)。 每个区域都包含一组景观。 问题来了。

我想尽可能简单地添加新景观,所以我有这个简单的概念: 我有一个接口(interface) Landscape.java 仅包含一种名为 doit(String command) 的方法 景观的每个实现都在其 doit 方法中做一些奇特的事情,而无需我更改任何代码。

现在我必须存储每个玩家的世界,这里是我想到的一些想法/选项

  • 将所有内容存储在数据库中需要我为景观的每个实现创建表。在我看来这将是一个糟糕的解决方案

  • 连载是另一个想法,很完美,因为我不必担心任何简单地转换到风景和精细的事情。但我有疑问,我应该如何编辑数据,更新类时该怎么做,如何推出对数据的更改。

  • 像 Hibernate、JPA 等框架(我对它们没有深入的了解,这对我的情况有帮助吗?)

  • 编写我自己的文件格式,改变我的策略或其他想法?

最后有一些可能很重要的信息:

  • 保存的数据必须可编辑

  • 存储对时间要求不高,应在正常时间内完成

  • 由于所有数据都缓存在内存中,我并不真正关心它是否快,它更可能必须是可靠的

  • 可以使用 PostgreSQL/Mysql 和文件系统。

我在这方面没有经验,所以如果我走错了路,请给我提示;)

最佳答案

我没有看到任何建议您应该选择一种方法而不是另一种方法的信息。

有些人会有偏好,我会选择你喜欢的任何东西。

如果您要序列化数据,我会使用文本序列化,这样可以轻松在文本编辑器中对其进行编辑。例如XML、JSON、CSV。

关于Java服务器数据存储的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863629/

相关文章:

java - ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别

java - 简单的 Jprofiler 设置不起作用

java - 构造函数中可重写的方法调用

storage - 关系数据库 - 必须有更多,对吗?

java - 我可以更具体地传递一个二维数组,其中一个维度是一个字符串,另一个维度是 "generic"

java - 标记字符串但忽略引号内的分隔符

javascript - 对象数组是要存储在数据库还是js文件中?

android - 低 android 存储会影响应用程序的性能吗?

来自 Xml 数据的 Java 应用程序内存储

c# - MySQL 使用超链接存储图像