<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    HIBERNATE SHARD

    數(shù)據(jù)上千萬,都擠在一個表里,導(dǎo)致查詢太慢?分庫分表洛!但已經(jīng)用了HIBERNATE了,不想轉(zhuǎn)其他框架?用HIBERNATE SHARD!

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

    1. Hibernate Shard簡介
    Hibernate Shard多數(shù)據(jù)庫水平分區(qū)解決方案。Hibernate 的一個擴展,用于處理多數(shù)據(jù)庫水平分區(qū)架構(gòu)。由google工程師 2007年 捐獻給 Hibernate社區(qū)。目前版本: 3.0.0 beta2, 未發(fā)GA版。條件:Hibernate Core 3.2, JDK 5.0

    2. 水平分區(qū)原理
    一個庫表如 Order 存在于多個數(shù)據(jù)庫實例上。按特定的分區(qū)邏輯,將該庫表的數(shù)據(jù)存儲在這些實例中,一條記錄的主鍵 PK,在所有實例中不得重復(fù)。水平分區(qū)在大型網(wǎng)站,大型企業(yè)應(yīng)用中經(jīng)常采用。目的出于海量數(shù)據(jù)分散存儲,分散操作,分散查詢以便提高數(shù)據(jù)處理量和整體數(shù)據(jù)處理性能。使用:google工程師的設(shè)計還是非常好的,完全兼容 Hibernate本身的主要接口。
    org.hibernate.Session  
      org.hibernate.SessionFactory  
      org.hibernate.Criteria  
      org.hibernate.Query 

    因此程序員開發(fā)變化不大,甚至不需要關(guān)心后臺使用了分區(qū)數(shù)據(jù)庫。程序遷移問題不大。而且配置上比較簡明。

    3. Hibernate Shard三種策略:
    ◆ShardAccessStrategy, 查詢操作時,到那個分區(qū)執(zhí)行。默認提供兩個實現(xiàn):
    順序策略:SequentialShardAccessStrategy, 每個query按順序在所有分區(qū)上執(zhí)行。
    平行策略:ParallelShardAccessStrategy, 每個query以多線程方式并發(fā)平行的在所有分區(qū)上執(zhí)行。此策略下,需要使用線程池機制滿足特定的性能需要,java.util.concurrent.ThreadPoolExecutor.

    ◆ShardSelectionStrategy, 新增對象時,存儲到哪個分區(qū)??蚣苣J提供了一個輪詢選擇策略 RoundRobinShardSelectionStrategy, 但一般不這樣使用。通常采用“attribute-based sharding”機制,基于屬性分區(qū)。一般是用戶根據(jù)表自己實現(xiàn)一個基于屬性分區(qū)的策略類ShardSelectionStrategy ,例如,以下WeatherReport基于continent屬性選擇分區(qū):  
    public class WeatherReportShardSelectionStrategy implements ShardSelectionStrategy {  
    public ShardId selectShardIdForNewObject(Object obj) {  
    if(obj instanceof WeatherReport) 
    {  
    return ((WeatherReport)obj).getContinent().getShardId();  
    }
      
    throw new IllegalArgumentException();  
    }
     

    ◆ShardResolutionStrategy, 該策略用于查找單個對象時,判斷它在哪個或哪幾個分區(qū)上。默認使用 AllShardsShardResolutionStrategy ,可以自定義例如:  

    public class WeatherReportShardResolutionStrategy extends AllShardsShardResolutionStrategy
    {
    public WeatherReportShardResolutionStrategy(List<ShardId> shardIds)
    {
    super(shardIds);
    }


    public List<ShardId> selectShardIdsFromShardResolutionStrategyData( ShardResolutionStrategyData srsd)
    {
    if(srsd.getEntityName().equals(WeatherReport.class.getName()))
    {
    return Continent.getContinentByReportId(srsd.getId()).getShardId();
    }

    return super.selectShardIdsFromShardResolutionStrategyData(srsd);
    }

    }

    posted on 2012-01-04 22:40 paulwong 閱讀(901) 評論(0)  編輯  收藏 所屬分類: HIBERNATE分布式 、性能優(yōu)化

    主站蜘蛛池模板: 日本一道综合久久aⅴ免费| EEUSS影院WWW在线观看免费| 亚洲人成网站在线观看播放动漫 | 91免费国产在线观看| 免费国产黄网站在线观看可以下载| 最新国产乱人伦偷精品免费网站| 一区二区在线免费视频| 久久精品成人免费观看97| 精品国产免费一区二区三区| 好猛好深好爽好硬免费视频| 三级黄色在线免费观看| 久草免费福利视频| 久9热免费精品视频在线观看| 午夜影院免费观看| **aaaaa毛片免费同男同女| 亚欧免费视频一区二区三区| 在线a免费观看最新网站| 99在线精品免费视频九九视| 日韩一区二区a片免费观看 | 免费国产成人午夜在线观看| 免费不卡在线观看AV| 99久久免费国产精品特黄| 日韩免费无砖专区2020狼| 国产一区二区免费在线| 久久久久亚洲精品天堂久久久久久 | 国产成人精品免费视频大全| 91在线免费视频| 91禁漫免费进入| 在线观看免费大黄网站| 亚洲福利在线播放| 亚洲av中文无码乱人伦在线咪咕| 亚洲美女视频免费| 亚洲AV无码一区二区乱子仑 | 亚洲1区1区3区4区产品乱码芒果| 亚洲熟妇丰满xxxxx| 色屁屁www影院免费观看视频| a级片免费观看视频| 黄色免费网站网址| 国产成人在线观看免费网站| 国产亚洲午夜高清国产拍精品| 久久精品国产亚洲AV大全|