Java堆栈 - ORM与数据库可伸缩性

时间:2013-07-14 14:50:14

标签: java orm scalability sharding

我们目前正致力于Web项目的设计,我们必须使用Java堆栈。

首先,考虑到有限的负载,我们可以使用单个数据库(在我们的例子中是PostgreSQL)。在这种情况下,像Hibernate这样的ORM将是一个很好的决定,因为we know对象/关系问题总是耗费时间和成本最高的问题之一。这是使用ORM工具的全部原因 - 便宜,节省了大量时间。

但问题是,我们希望以后在数据库层中进行分片和主/从(读/写)复制,这对ORM来说是一个真正的问题(至少据我所知)。

如果我错了,请纠正我,并且我们可以使用一个很好的Java堆栈ORM工具。

据我所知,有一个名为Hibernate Shards的项目可以解决这个问题,但它从未通过测试版,而且它的开发在2007年停止了。

使用常规Hibernate和分布式2级缓存,我们可以使用节点数

使用业务逻辑,但这不能解决数据库可伸缩性问题,我们仍然只能为应用程序使用一个数据库。

结论:是否有开源/免费的ORM适合我们的情况(java堆栈),或者我们应该自己实现它,即使成本很高,以便提供数据库可扩展性以及以后可能带来的其他好处。

谢谢!

2 个答案:

答案 0 :(得分:0)

我必须为Java Data Objects提供一个好词,尤其是http://www.datanucleus.org的实现。特别是如果你使用注释和类型安全的查询语言,它很容易上手并且真的很有趣事情很快。

此外,JDO与数据库无关,因此如果您决定使用除关系数据库之外的其他内容,则转换相对简单。由于它使用JDBC驱动程序连接到数据库,因此在该级别附加的群集/分片解决方案应该相对透明。 (这对我来说是完全一厢情愿的想法 - 我不知道这是真的,但它应该是,对吧?)

我给了自己两到三天的Hibernate和一本大书,并决定我经常重复自己并将自己限制在RDB系统中。看一看,看看你的想法。

答案 1 :(得分:-1)

需要考虑的一个解决方案是购买横向可扩展性解决方案,以解决所有这些问题。

有几种解决方案可以让您在不更改应用程序的情况下进行水平扩展(分片等技术所需的更改)。