对于MMORPG,JPA vs JDBC vs NoSQL

时间:2013-03-26 23:07:40

标签: java jpa jdbc nosql rdbms

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

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

我们被困住请帮助我们做出决定。

2 个答案:

答案 0 :(得分:2)

  

我们被困住请帮助我们做出决定。

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

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

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

对于这是很多观点,有人建议您使用JPASpringJDBC(其中JDBC肯定会更快JPA)和有人更喜欢自己的ORM。我认为从更多开发者那里获得的经验应该足够了。

如果您想使用技术,请使用您熟悉的技术。

答案 1 :(得分:2)

  1. 当然,您意识到JPA使用JDBC。
  2. Spring可以像JPA一样轻松实现ACID。我不知道你所指的“速度”有什么好处。发展速度?交易速度?为什么Spring使数据管理代码复杂化?这是另一个不正确的陈述。
  3. 你对NoSQL的速度有多快?发展?运行? NoSQL没有ACID。如果这对你很重要,你为什么还要考虑它呢? NoSQL暗示“不是关系”。你的数据是关系型的?如果是,你为什么要考虑NoSQL?
  4. 您无法通过谈论技术和猜测来决定性能问题。唯一的方法是对它们进行基准测试,并为您真正关心的交易获取一些真实数据。

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

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