2

我们正在使用 Libgdx/Netty 开发一款 2D MMORPG 太空射击游戏,但我们遇到了一个关于数据无法解决的问题。

  • 如果我们使用 JPA 和 RDBMS 我们可以实现 ACID 并简化数据管理代码
  • 如果我们使用 JDBC 宽度 Spring 的支持,我们可以提高速度,但会使数据管理代码复杂化
  • 我们在 NoSQL 开发方面没有经验,但是速度优势(至关重要)是否会如此之大,以至于我们应该放弃轻松查询

我们被卡住了,请帮助我们做出决定。

4

2 回答 2

2

我们被卡住了,请帮助我们做出决定。

这肯定取决于要求。现在我怎么想。如果主要目标是性能,我建议您实现自己的ORM,因为您将完全控制查询,主要是您可以针对特定要求优化所有查询。

我不是这样说JPAEclipseLink或者另一个框架肯定是错误的,但大多数ORM框架主要是为了目标独立于数据库层而指定的,因此应用程序独立于数据源类型,但可以肯定的是,您可以通过实施适当的数据源设计来实现它模式即AbstractDAOFactoryMappers

我还必须提到,自己的主要缺点ORM是实施需要很多时间,但如果你想创建一个好的、高效的、有效的项目,它必须需要一些时间。

由于这是许多视图,有人建议您使用JPA,SpringJDBC(其中JDBC肯定更快 as JPA)并且有人更喜欢 own ORM。我认为从更多开发人员那里获得的经验应该足够了。

如果您想使用技术,请使用您知道的技术。

于 2013-03-26T23:30:06.680 回答
2
  1. 当然,您意识到 JPA 使用 JDBC。
  2. Spring 可以像 JPA 一样轻松实现 ACID。我不知道您指的是什么“速度”优势。发展速度?交易速度?为什么 Spring 会使数据管理代码复杂化?这是另一个不正确的说法。
  3. 你问 NoSQL 的速度是多少?发展?运行?NoSQL 没有 ACID。如果这对你很重要,你为什么还要考虑它?NoSQL 意味着“非关系”。你的数据是相关的吗?如果是,你为什么要考虑 NoSQL?

您无法通过谈论技术和猜测来决定性能问题。唯一的方法是对它们进行基准测试,并为您真正关心的交易获取一些真实数据。

编写基于接口的 DAO,使用每种候选技术实现,并衡量实际结果。这就是如何决定使用哪种持久性技术。

你最了解哪一个?如果没有人知道 NoSQL,请不要使用它。如果您不了解 JPA,请不要使用它。Spring JDBC 模板允许您使用事务编写自定义 SQL。如果您已经非常了解关系数据库和 Spring,为什么不直接使用它呢?

于 2013-03-26T23:32:17.580 回答