Hibernate Shards
来源:互联网 发布:手机订烟下什么软件 编辑:程序博客网 时间:2024/05/08 11:09
Hibernate Shards是在Hibernate之上支持数据库水平分区的软件。Shard其实就是partition或segment的意思,不过Google的人好像喜欢称之为shard。目前大部分WEB应用都不断的转向使用廉价计算机集群组成的分布式数据库,Hibernate本身没有这一支持,不免有些遗憾。Hibernate Shards的目的就是为了填补Hibernate在这方面的不足。Shards原来是Google某些员工利用著名20%时间的结果,后来开源并捐给了Hibernate社区。
虽然是支持分布式数据库,但基于Hibernate,Shards的实现实际上很简单,当然功能也很受限。Shards的核心大致只是以下三个概念(在程序中就是三个接口,应用程序可提供自己的定制实现):
既然做了分布式,总得考虑扩展问题。如果增加了新的shard,通常就要重新分布数据来实现扩展性,不过Hibernate Shards对这个问题的处理方法是不处理,让应用自己来干。没办法这个问题确实有点复杂。
Hibernate Shards的一些其它问题:
虽然是支持分布式数据库,但基于Hibernate,Shards的实现实际上很简单,当然功能也很受限。Shards的核心大致只是以下三个概念(在程序中就是三个接口,应用程序可提供自己的定制实现):
- ShardSelectionStrategy: 当通过Hibernate物化一个对象时,调用这一接口得到用于存储这一对象的shard。系统提供一个根据round robin策略依次使用各个shard的默认实现,当然严肃一点的用户一般是不用这个的。通常会根据某个属性做个hash分区什么的。
- ShardResolutionStrategy: 在通过Hibernate获取一个对象时,调用这一接口得到要访问的shard。若是用前面的round robin策略,这里就要返回所有的shard了。如果用hash分区的话就可以算出来。
- ShardAccessStrategy: 这个相对不重要一点,就是在使用ShardResolutionStrategy后确实一个shard集后,按什么次序访问这些shard,比如根据id从前到后访问啦,并行同时访问啦什么的。
既然做了分布式,总得考虑扩展问题。如果增加了新的shard,通常就要重新分布数据来实现扩展性,不过Hibernate Shards对这个问题的处理方法是不处理,让应用自己来干。没办法这个问题确实有点复杂。
Hibernate Shards的一些其它问题:
- 对象不能跨shard引用。这个问题有点严重,会导致无法分布式。比如一个用户的好友是另一个用户,由于这一点,用户与其好友必须在同一shard上,最后的结果是所有用户都要在同一shard上。
- 基本上不支持稍微复杂一点的HQL
- Hibernate Shards
- Hibernate Shards
- 使用 Hibernate Shards 进行切分
- [转]Sharding with Hibernate Shards
- hibernate shards分库的实现
- Hibernate Shards - 关系数据库水平分割解决方案框架
- Java 开发 2.0: 使用 Hibernate Shards 进行切分
- 数据库水平分割垂直分割 使用 Hibernate Shards 进行切分
- Java 开发 2.0: 使用 Hibernate Shards 进行切分
- Java 开发 2.0: 使用 Hibernate Shards 进行切分
- Collections.unmodifiableList(shards)
- es大量unassigned shards
- ES: resolve unassigned shards
- Elasticsearch关于unassigned shards修复
- solr分布式shards的合并优化
- SolrCloud Wiki翻译(3)Shards & Indexing Data
- Courier Fetch: 3 of 5 shards failed
- Elasticsearch关于unassigned shards的查看
- Oracle临时表 优化查询速度
- 一个CodeSmith+NHibernate的例子
- 天下无贼
- maven添加struts2-core 2.0.8依赖的时候,报错的解决办法
- System.getProperty()参数大全
- Hibernate Shards
- 我真的很笨吗?
- c#获取本机电脑相关信息
- 介绍CJDBC
- 热姜水家庭妙用
- XP下JDK1.4安装与环境配置完全图解
- oracle序列应用
- 兼容FF/IE的insertAdjacentHTML方法
- 重载、覆盖与隐藏