Java 针对MMORPG的JPA vs JDBC vs NoSQL

Java 针对MMORPG的JPA vs JDBC vs NoSQL,java,jpa,jdbc,nosql,rdbms,Java,Jpa,Jdbc,Nosql,Rdbms,我们正在使用Libgdx/Netty开发一款2D MMORPG太空射击游戏,我们遇到了一个无法解决的数据问题 如果我们使用JPA和RDBMS,我们可以实现ACID并简化数据管理代码 如果我们使用JDBCWidthSpring的支持,我们可以在速度上受益,但会使数据管理代码复杂化 我们在NoSQL开发方面没有经验,但是速度效益(这是至关重要的)会如此之大以至于我们应该放弃简单的查询吗 我们陷入困境,请帮助我们做出决定 我们陷入困境,请帮助我们做出决定 这当然取决于需求。现在我想。如果主要目标是

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

  • 如果我们使用JPA和RDBMS,我们可以实现ACID并简化数据管理代码
  • 如果我们使用JDBCWidthSpring的支持,我们可以在速度上受益,但会使数据管理代码复杂化
  • 我们在NoSQL开发方面没有经验,但是速度效益(这是至关重要的)会如此之大以至于我们应该放弃简单的查询吗
我们陷入困境,请帮助我们做出决定

我们陷入困境,请帮助我们做出决定

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

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

我还必须提到的是,own
ORM
的主要缺点是实现需要很多时间,但如果您想要创建好的、高效的和可工作的项目,它必须需要一些时间

因为有很多视图,有人建议您使用
JPA
Spring
JDBC
(其中
JDBC
肯定比
JPA
更快),有人更喜欢自己的
ORM
。我认为从更多开发者那里获得的经验应该足够了

如果你想使用技术,就使用你知道的技术

我们陷入困境,请帮助我们做出决定

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

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

我还必须提到的是,own
ORM
的主要缺点是实现需要很多时间,但如果您想要创建好的、高效的和可工作的项目,它必须需要一些时间

因为有很多视图,有人建议您使用
JPA
Spring
JDBC
(其中
JDBC
肯定比
JPA
更快),有人更喜欢自己的
ORM
。我认为从更多开发者那里获得的经验应该足够了

如果你想使用技术,就使用你知道的技术

  • 当然,您会意识到JPA使用JDBC
  • Spring可以像JPA一样轻松地实现ACID。我不知道你指的是什么“速度”好处。发展速度?交易速度?为什么Spring会使数据管理代码复杂化?这是另一种不正确的说法
  • 你对NoSQL的速度有什么要求?发展?运行时间?NoSQL不含酸。如果这对你很重要,你为什么还要考虑呢?NoSQL意味着“不相关”。您的数据是关系型的吗?如果是,为什么要考虑NoSQL
  • 您不能通过谈论技术和猜测来决定性能问题。唯一的方法是对它们进行基准测试,并为您真正关心的事务获取一些真实数据

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

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

  • 当然,您会意识到JPA使用JDBC
  • Spring可以像JPA一样轻松地实现ACID。我不知道你指的是什么“速度”好处。发展速度?交易速度?为什么Spring会使数据管理代码复杂化?这是另一种不正确的说法
  • 你对NoSQL的速度有什么要求?发展?运行时间?NoSQL不含酸。如果这对你很重要,你为什么还要考虑呢?NoSQL意味着“不相关”。您的数据是关系型的吗?如果是,为什么要考虑NoSQL
  • 您不能通过谈论技术和猜测来决定性能问题。唯一的方法是对它们进行基准测试,并为您真正关心的事务获取一些真实数据

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


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

    您的目标是获得最佳性能吗?或者你能有一个平衡的方法来方便维护和学习曲线吗?性能在某一点上肯定会变得至关重要,很多玩家发送很多数据,很多更新,很多插入,很多选择,实际上太多了。但是最频繁执行的查询的部分远比整体小,你想把JPA和NoSQL结合起来吗?你的目标是拥有maxi吗