成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate Shard三種策略剖析

開發 后端
這里介紹Hibernate Shard多數據庫水平分區解決方案。Hibernate 的一個擴展,用于處理多數據庫水平分區架構。由google工程師 2007年 捐獻給 Hibernate社區。

在向大家詳細介紹Hibernate Shard三種策略之前,首先讓大家了解下Hibernate Shard簡介,然后全面介紹Hibernate Shard三種策略。

1. Hibernate Shard簡介

Hibernate Shard多數據庫水平分區解決方案。Hibernate 的一個擴展,用于處理多數據庫水平分區架構。由google工程師 2007年 捐獻給 Hibernate社區。

目前版本: 3.0.0 beta2, 未發GA版。

條件:Hibernate Core 3.2, JDK 5.0

2. 水平分區原理

一個庫表如 Order 存在于多個數據庫實例上。按特定的分區邏輯,將該庫表的數據存儲在這些實例中,一條記錄的主鍵 PK,在所有實例中不得重復。

水平分區在大型網站,大型企業應用中經常采用。目的出于海量數據分散存儲,分散操作,分散查詢以便提高數據處理量和整體數據處理性能。使用:google工程師的設計還是非常好的,完全兼容 Hibernate本身的主要接口。

Java代碼

  1. org.hibernate.Session  
  2. org.hibernate.SessionFactory  
  3. org.hibernate.Criteria  
  4. org.hibernate.Query 

因此程序員開發變化不大,甚至不需要關心后臺使用了分區數據庫。程序遷移問題不大。而且配置上比較簡明。

3. Hibernate Shard三種策略:

◆ShardAccessStrategy, 查詢操作時,到那個分區執行。

默認提供兩個實現:順序策略:SequentialShardAccessStrategy, 每個query按順序在所有分區上執行。

平行策略:ParallelShardAccessStrategy, 每個query以多線程方式并發平行的在所有分區上執行。此策略下,需要使用線程池機制滿足特定的性能需要,java.util.concurrent.ThreadPoolExecutor.

◆ShardSelectionStrategy, 新增對象時,存儲到哪個分區。

框架默認提供了一個輪詢選擇策略 RoundRobinShardSelectionStrategy, 但一般不這樣使用。

通常采用“attribute-based sharding”機制,基于屬性分區。一般是用戶根據表自己實現一個基于屬性分區的策略類ShardSelectionStrategy ,例如,以下WeatherReport基于continent屬性選擇分區:

Java代碼

  1. public class WeatherReportShardSelectionStrategy implements ShardSelectionStrategy {  
  2. public ShardId selectShardIdForNewObject(Object obj) {  
  3. if(obj instanceof WeatherReport) {  
  4. return ((WeatherReport)obj).getContinent().getShardId();  
  5. }  
  6. throw new IllegalArgumentException();  

◆ShardResolutionStrategy, 該策略用于查找單個對象時,判斷它在哪個或哪幾個分區上。

默認使用 AllShardsShardResolutionStrategy ,可以自定義例如:

Java代碼

  1. public class WeatherReportShardResolutionStrategy 
    extends AllShardsShardResolutionStrategy {  
  2. public WeatherReportShardResolutionStrategy(List<ShardId> shardIds) {  
  3. super(shardIds);  
  4. }  
  5.  
  6. public List<ShardId> selectShardIdsFromShardResolutionStrategyData(  
  7. ShardResolutionStrategyData srsd) {  
  8. if(srsd.getEntityName().equals(WeatherReport.class.getName())) {  
  9. return Continent.getContinentByReportId(srsd.getId()).getShardId();  
  10. }  
  11. return super.selectShardIdsFromShardResolutionStrategyData(srsd);  
  12. }  

【編輯推薦】

  1. Hibernate專業知識介紹
  2. 討論Hibernate和模型對象
  3. Hibernate查詢緩存全面分析
  4. 概括Hibernate主鍵生成機制
  5. Hibernate Pager基礎介紹
責任編輯:佚名 來源: IT168
相關推薦

2009-09-24 11:17:32

Hibernate查詢

2009-09-25 15:58:04

Hibernate對象

2018-06-29 10:54:11

云部署策略公共云

2020-02-26 11:07:26

網絡5G技術

2009-06-23 10:45:18

Hibernate支持

2009-09-22 14:23:37

Hibernate S

2009-06-29 18:21:29

Hibernate

2009-09-25 14:12:16

Hibernate繼承

2024-04-01 13:02:00

發布策略API

2009-05-08 15:29:53

LTE策略運營商

2009-12-11 13:48:47

雙線策略路由

2024-09-11 14:57:00

Redis消費線程模型

2023-03-06 08:40:43

RedisListJava

2019-09-16 09:46:55

對抗反分析檢測逃逸惡意軟件

2019-09-16 09:46:55

2021-12-23 06:57:32

企業策略數據

2019-09-11 15:49:02

入侵檢測反分析逃逸技術

2023-04-10 11:22:34

CIOIT運營成本

2010-09-24 19:18:22

SQL索引

2011-01-18 15:35:59

jQueryJavaScriptweb
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色免费看 | 国产特级毛片aaaaaa喷潮 | 黄色大片免费看 | 久久久久99 | 国产免费福利 | 中文字幕亚洲视频 | 久久国产精品视频免费看 | 国产成人免费在线观看 | 精品一区二区三区在线观看国产 | 国产乱码精品一品二品 | 亚洲成人一二区 | 亚洲一区二区三区高清 | 国产亚洲黄色片 | 狠狠狠色丁香婷婷综合久久五月 | 国产91网站在线观看 | 精品美女在线观看 | 日韩精品视频在线观看一区二区三区 | 国产一区在线免费观看视频 | 日韩一级免费电影 | 亚洲欧美一区二区三区视频 | 天天操夜夜操免费视频 | 亚洲人a | 亚洲精品欧美一区二区三区 | 一区二区三区免费观看 | 日韩中文字幕在线观看视频 | 国产亚洲二区 | 日韩一区二区三区在线观看 | 日韩在线中文字幕 | 伊人网在线播放 | 亚洲成av | 成人国产精品久久久 | 91色在线视频| 亚洲91精品 | 国产精品一区一区 | 成人欧美一区二区三区黑人孕妇 | 97国产爽爽爽久久久 | 黑人粗黑大躁护士 | 欧美做暖暖视频 | 色婷婷久久综合 | 人人擦人人干 | 亚洲性免费|