簡體   English   中英

ActiveRecord 模式和內存使用

[英]The ActiveRecord pattern and memory usage

許多 PHP 框架使用 ActiveRecord 模式,其中模型類負責相關的數據庫交互,例如查找/插入/更新/刪除等。

就服務器上通常相對較小的內存使用而言,這本質上不是一個糟糕的想法。 find 方法可以是靜態的,減少每個對象的內存使用量,但剩余的 3 個C R UD方法不會是靜態的。 因此,如果您有 100 個對象,那么用於 CUD 方法的內存是不是比模型類只有一個存儲庫時使用的內存多 99 倍? 如果是這樣,為什么框架選擇了 ActiveRecord 模式? 或者,我在這里遺漏了什么?

框架作者必須考慮開發工作流的許多方面,其中之一是平均可用資源(CPU/內存消耗),但它不是唯一的一個,而且現在它不是最關鍵的一個。

考慮到資源,您需要對 RAM 消耗的增加如何改變產品成本及其帶來的好處進行成本/收益分析。 例如,從這個角度來看,針對輕量級 ARM 設備或微型服務器的框架將真正得到高度優化。

在一般情況下,這是不值得的。

為什么? 因為 RAM 和 CPU 的平均成本相對較低,尤其是與軟件維護成本相比 如今,許多公司利用雲基礎設施提供商(谷歌雲、AWS 等)節省了大量資金,否則,他們將需要花費在運行自己的服務器上。

有時軟件維護成本可能包括基礎設施成本,所以為了簡單起見,我們假設它只包括 - 開發新功能 - 修復錯誤 - 執行代碼重構

因此,僅這些就花費了大量資金,因為這些點中的每一個都需要開發人員的時間。 有了這樣的推理,我們寧願優化對這 3 個操作有影響的事物,而不是影響資源使用的事物。

而使用 ActiveRecord 就是這樣的優化之一。 ActiveRecord 首先相對簡單,簡單性是可維護性的重要組成部分,其次確實多樣化(市場上很多開發人員都熟悉這種模式)。

該模式有一些缺點,但是如果附近有軟件架構師或足夠熟練的開發人員,團隊將能夠通過將 ActiveRecord 替換為數據訪問對象模式(或存儲庫模式)來選擇退出 ActiveRecord。

所以基本上,選擇 ActiveRecord 的框架(Laravel、Yii 等)是在權衡,通常,他們考慮與資源使用(內存/CPU)不同的方面,因為與已經提到的軟件成本相比,它微不足道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM