我们正在使用 Libgdx/Netty 开发一款 2D MMORPG 太空射击游戏,但我们遇到了一个关于数据无法解决的问题。
- 如果我们使用 JPA 和 RDBMS 我们可以实现 ACID 并简化数据管理代码
- 如果我们使用 JDBC 宽度 Spring 的支持,我们可以提高速度,但会使数据管理代码复杂化
- 我们在 NoSQL 开发方面没有经验,但是速度优势(至关重要)是否会如此之大,以至于我们应该放弃轻松查询
我们被卡住了,请帮助我们做出决定。
我们被卡住了,请帮助我们做出决定。
这肯定取决于要求。现在我怎么想。如果主要目标是性能,我建议您实现自己的ORM
,因为您将完全控制查询,主要是您可以针对特定要求优化所有查询。
我不是这样说JPA
,EclipseLink
或者另一个框架肯定是错误的,但大多数ORM
框架主要是为了目标独立于数据库层而指定的,因此应用程序独立于数据源类型,但可以肯定的是,您可以通过实施适当的数据源设计来实现它模式即AbstractDAOFactory
等Mappers
。
我还必须提到,自己的主要缺点ORM
是实施需要很多时间,但如果你想创建一个好的、高效的、有效的项目,它必须需要一些时间。
由于这是许多视图,有人建议您使用JPA
,Spring
或JDBC
(其中JDBC
肯定更快 as JPA
)并且有人更喜欢 own ORM
。我认为从更多开发人员那里获得的经验应该足够了。
如果您想使用技术,请使用您知道的技术。
您无法通过谈论技术和猜测来决定性能问题。唯一的方法是对它们进行基准测试,并为您真正关心的交易获取一些真实数据。
编写基于接口的 DAO,使用每种候选技术实现,并衡量实际结果。这就是如何决定使用哪种持久性技术。
你最了解哪一个?如果没有人知道 NoSQL,请不要使用它。如果您不了解 JPA,请不要使用它。Spring JDBC 模板允许您使用事务编写自定义 SQL。如果您已经非常了解关系数据库和 Spring,为什么不直接使用它呢?