Java Server Data Storage最好的策略是什么?

时间:2012-08-08 11:34:12

标签: java storage

我正在开发一个Gameserver,因为我必须存储每个玩家的进度,我有一个问题: 对我来说,最好的数据存储解决方案是什么?

一些事实: 目前,每个播放器都是我的MYsql-Database中的一行,具有唯一的ID和名称。 每个玩家都有一个世界。 每个世界都包含越来越多的区域(随着玩家向前移动)。 每个地区都包含一系列景观。 这就是问题所在。

我想尽可能简单地添加新景观,所以我有这个简单的概念: 我有一个接口landscape.java只包含一个名为doit的方法(String命令) 景观的每一个实现都在他们的doit方法中做了很多花哨的东西,而我不必更改任何代码。

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

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

  • 序列化是另一个想法,完美是因为我不必担心任何简单地投射到景观和罚款。但我有疑虑,我应该如何编辑数据,我更新类时要做什么,如何推出数据更改。

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

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

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

  • 保存的数据必须可编辑

  • 存储不是时间关键的,应该在正常时间完成

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

  • 可以使用的是PostgreSQL / Mysql和Filesystem。

我在这个领域没有经验,所以如果我的方向不对,请给我一个暗示;)

2 个答案:

答案 0 :(得分:2)

我没有看到任何暗示你应该选择一种方法而不是另一种方法的东西。

有些人会有偏好,我会随心所欲。

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

答案 1 :(得分:1)

这一切听起来都很模糊,我只想选择一个解决方案并尝试一下。

确保您的代码充分抽象,以便您可以在以后使用新解决方案替换它。许多项目在其生命周期内(通过需求和规模变化)通过解决方案进行迁移,关键是尽量确保它尽可能减少中断。