※ 引述《adrianshum (Alien)》之銘言:
: 問題在於 scalability.
: DB 相比起 app server, scalability 不可同日而語.
: 你的系統可能用 SP, 應付一百人沒問題, 但要應付一
: 千人, DB 機器的 CPU, memory 都花在 biz logic 上,
: 你要找一部更強的 DB 並不是想那麼容易, 價錢也可以
: 嚇你一大跳.
: 同樣能應付一百人份量的複雜 SP 的 DB, 單用來作簡
: 單的CRUD operation, biz logic 移回 app server,
: DB 應付一千人份量的 simple CRUD 說不定也綽綽有餘.
: 一般作為 transactional 類型的 application, 要應付
: 多一些 user, 差不多按比例加 app server 數類就行了.
: (DB 可不是簡單加 server 就能應付更多 user)
: 當然不能一刀切. 有些大量資料的處理, 比如 batch
: processing 之類, 把部份東西放回 SP 做也是蠻正常
: 的做法.
: (這類單談 performance/scalability, multi-tier 對
: 於架構和設計上的好處就不說了)
之前已經提過,SP應該避免把不必要的邏輯放進來,如果一個邏輯
能複雜到消耗過多的cpu cycle或是memory,基本上要被歸類到不必
要的邏輯去。
要提到scalability,原則上要視每個case而定,有的時候邏輯放在
SP反而能夠scale,你舉得batch processing是一個例子,其他像是
減少不必要的大量資料回傳到APP、有hot table/block的情況、或是
減低lock contention時,把(部份)邏輯放在SP反而是對scalability
有幫助。
在performance上,使用SP有很大的優勢,在scalability上,並沒有
一定,要依各個case而定。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 71.142.74.199