作者JoeHorn (每天都在公司玩OLG)
看板Database
标题Re: 网管人
时间Fri Jul 2 23:42:49 2010
※ 引述《rushcat (嗯)》之铭言:
: 推 JoeHorn:维护、除错的方便,DBMS 异质整合、转移、备份、更版... 07/01 22:36
: 我也有原PO的疑问
: 可以在DB内一次处理好的事情 为何要拉到AP上来做呢!?
: 目前还没碰到大型的专案 所以真的不太清楚SP的缺点
: (除了SP真的很难Debug...)
可能很多人只考虑到 Oracle、MS SQL、MySQL、PostgreSQL 这类的 DBMS。
如果是转移成 MongoDB 这种物件型的 DBMS 呢?
另外,若是新版程式打算导入 ORM ,逻辑依然是必须拉出来处理,不是吗?
如果让资料库存取全部透过 Web Services(或是 class),
原本辛辛苦苦开发出来,放在资料库里面的逻辑是不是几乎等於作白工?
当然,并不是完全不让资料库预先处理,
concat 等等的 DBMS 内建 function 该用还是得用。
只是... 放太过复杂的逻辑运算,几乎可以说是自找麻烦。
我们看到资料,大概可以知道怎麽作逻辑运算。
如果 A 今天开发时,在资料库里面建立 function 或 stored procedure;
过了两年,B 看到资料,自己在程式写逻辑,A 建立的东西并没有被善加利用。
这样可以说是一种资源浪费...
另一方面,程式语言的物件(object)可以包涵资料(data)跟方法(method),
有人选择开 BLOB 栏位,把整个物件放进去,需要时再拿出来吗?
: 今天如要UPDATE一笔User资料 可能需要三句SQL指令
: (判断是否已存在 选择要Insert Or update)
: 1. SELECT * FROM User WHERE User_Id = @User_Id
: 2. INSERT INTO User VALUES(User_Id, User_Name)
: 3. UPDATE User SET User_Name = @User_Name WHERE User_Id = @User_Id
: 如果全部写在AP里 需要二次DB Connection
: 那一般这种状况会用SP吗!?
一个 DB connection 可以执行很多次 SQL statements,
你举的这个例子只需要 transaction,但是.. 可以用同一个 connection。
更何况,很多程式语言有 connection pool 管理能力。
(因为可以用同一个 connection,以下我就不回了.. 因为都不是考量因素)
--
╓╥╥╖╓─╥╖ ╓─╥╖ ╓ ╓╖ ╓─╥╖ ╓─╥╖ ╓╖╓╖
╟╢ ║ ╟╢ ║ ╙╜ ║ ╟╢ ║ ╟╢ ║ ╟╢ ║║╟╢
╟╢ ║ ╟╢ ╟─ ╟─╫╢ ║ ╟╢ ╟─╫╜ ║║╟╢
╟╢ ║ ╟╢ ║ ╓╖ ║ ╟╢ ║ ╟╢ ║ ║ ║║╟╢
╙╨╜ ╙─╨╜ ╙─╨╜ ╙ ╙╜ ╙─╨╜ ╙ ╙╜ ╙╙╨╜
狮子男
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.129.214
※ 编辑: JoeHorn 来自: 114.37.129.214 (07/03 00:08)
1F:推 rushcat:THX!!! 07/03 09:42