symfony2 doctrine 如何分庫分表

來源:互聯網
上載者:User
隨著資料庫錶慢慢大起來,想考慮分表。我這邊用的是symfony2,所以想問問,symfony2如何分庫分表。。。

回複內容:

隨著資料庫錶慢慢大起來,想考慮分表。我這邊用的是symfony2,所以想問問,symfony2如何分庫分表。。。

先說跑題的一點:

如果資料庫支援(如MySQL或者PostgreSQL),建議直接用資料庫的partitioning,如果實在不能解決你的需要,在symfony 2裡可以:

用事件監聽的方式,根據使用者ID或其他分庫條件,來修改或者動態地註冊資料庫連接執行個體。

或者簡單點,就自己註冊多個串連執行個體,然後定義一個擷取所需執行個體的helper,比如按使用者ID來分庫:

// (一)在app/config/config.yml裡:# 定義好各個資料庫連接// (二)在controller裡:private function getManager(){    $user = $this->getUser(); // 取得目前使用者    $shardId = null !== $user ? $user->getId() % 4 : 0; // 0,1,2,3共四個庫    return $this->getDoctrine()->getManager(sprintf('shard_%s', $shardId));}// (三)在業務Action裡:public function someAction(){    $om = $this->getManager(); // 這時拿到的就是對應目前使用者的資料庫連接執行個體了    // ...}

在你的業務代碼中,你還得考慮分區化後業務的完整性。

和傳統的不一樣

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.