Hibernate Shard基础分析
创始人
2024-06-07 18:21:37
0
Hibernate Shard有很多值得学习的地方,这里我们主要介绍Hibernate Shard 提供了一种虚拟分区层,包括介绍Hibernate Shard 不支持垂直分区等方面。

1.水平分区下的查询

对于简单查询Hibernate Shard可以满足。

水平分区下多库查询是一个挑战。主要存在于以下三种操作:
1) distinct因为需要遍历所有shard分区,并进行合并判断重复记录。
2) order by类似 1)
3) aggregation count,sim,avg等聚合操作先分散到分区执行,再进行汇总。

是不是有点类似于 MapReduce ? 呵呵。

Hibernate Shard 目前通过 Criteria 接口的实现对 聚合提供了较好的支持, 因为 Criteria 以API接口指定了 Projection 操作,逻辑相对简单。而HQL,原生 SQL 还不支持此类操作。

2. 再分区和虚拟分区

当数据库规模增大,需要调整分区逻辑和数据存储时, 需要再分区。

两种方式:
1)数据库数据迁移其他分区;
2)改变记录和分区映射关系。这两种方式都比较麻烦。尤其“改变记录和分区映射关系”,需要调整 ShardResolutionStrategy.

Hibernate Shard 提供了一种虚拟分区层。当需要调整分区策略时,只需要调整虚拟分区和物理分区映射关系即可。以下是使用虚拟分区时的配置创建过程:

Java代码

  1. Map, Integer> virtualShardMap = new HashMap, Integer>();  
  2. virtualShardMap.put(0, 0);  
  3. virtualShardMap.put(1, 0);  
  4. virtualShardMap.put(2, 1);  
  5. virtualShardMap.put(3, 1);  
  6. ShardedConfiguration shardedConfig =new ShardedConfiguration
    (prototypeConfiguration,configurations,strategyFactory,virtualShardMap);  
  7. return shardedConfig.buildShardedSessionFactory(); 


3.局限:

1)Hibernate Shard 不支持垂直分区, 垂直+水平混合分区。

2)水平分区下 查询功能受到一定限制,有些功能不支持。实践中,需要在应用层面对水平分区算法进行更多的考虑。

3)不支持跨分区的 关系 操作。例如:删除A分区上的 s 表,B分区上的关联子表 t的记录无法进行参照完整性约束检查。 (其实这个相对 跨分区查询的挑战应该说小的多,也许google工程师下个版本会支持,呵呵)

4)解析策略接口似乎和对象ID全局唯一性有些自相矛盾,AllShardsShardResolutionStrategy 的接口返回的是给定对象ID所在的 shard ID集合,按理应该是明确的一个 shard ID.

【编辑推荐】

  1. Hibernate专业知识介绍
  2. 讨论Hibernate和模型对象
  3. Hibernate查询缓存全面分析
  4. 概括Hibernate主键生成机制
  5. Hibernate Pager基础介绍

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...