有可能
提升系統性能,可是不推薦使用鏈接查詢。致使難維護和難拆分是主要緣由,從另一個方面考慮,到你的系統訪問量、數據量很小,SQL拆成獨立SQL,對系統的性能影響並不大。當你的系統大到必定程度,大到拆成獨立SQL會致使明顯的性能問題時,應該考慮分佈式了,而不是合併一些SQL,提升性能,即便提升了,隨着數據、訪問量的增大,你的系統很快有進入性能瓶頸。 3.難擴展。因爲在Model中是直接讀取SQL,沒有數據存儲層的概念,你極可能在用戶的業務邏輯裏面直接經過SQL讀取訂單信息,當訂單或者用戶業務邏輯要獨立出來時,又得去修改這部分代碼,這樣大大增長了開發成本和風險。什麼是分層體系結構:我我的理解就是拆分MODULE,把數據存儲和業務邏輯獨立出來。系統又可拆分爲獨立業務,好比訂單,用戶,文章,統計等。每一個獨立業務都有本身對應的業務數據,業務邏輯內部獲取本身的對應業務數據,只能經過數據存儲層來進行。獲取其餘業務數據,只能調用其餘業務php
目錄結構: html
Common下面是各個服務公用的文件。數據庫
一個服務對一個目錄;例如:用戶服務在目錄User下,標籤服務在Tag下,問答服務在Question下。編程
單個服務內部結構:緩存
每一個表對應一個TableImpl.php文件**
,不使用鏈接查詢。特殊狀況下,必定要使用到鏈接查詢,可使用Module->getDb()方法獲取到DB實例後直接執行SQL。使用此種結構的好處:服務器
<?php // 拆分前 public function indexAction() { $stat = $this->getOrderStatService()->getOrdersDistinctMap(); } protected function getOrderStatService() { return \Service\OrderStat\OrderStatServiceImpl::Instance(); } <?php // 拆分後 public function indexAction() { $stat = $this->getOrderStatService()->getOrdersDistinctMap(); } protected function getOrderStatService() { return RpcClient::Instance()->getService('OrderStatServiceImpl'); } 2. 便於數據庫垂直、水平拆分:對一單個服務,很容易將Dao層獨立出來,部署當單獨機器上,服務只須要更改調用對應的Dao的方法就能夠完成。 分佈式
Controller 和View 仍是和MVC同樣,不作更改性能