mysql非常適合于支持網(wǎng)站內(nèi)的客戶資源管理(customer resource management,crm)系統(tǒng)。它已經(jīng)是很多web網(wǎng)站不可分割的一部分了,而且其價(jià)格水平也是無人能敵的。此外在動(dòng)態(tài)網(wǎng)站里,很可能已經(jīng)存在相當(dāng)數(shù)量的crm數(shù)據(jù)有待發(fā)掘。
在做一家電話公司sap實(shí)施組管理員的過程中,我逐漸精通了其卓越的crm工具包。我了解到crm中大約有90%的工作是系統(tǒng)配置實(shí)施和維護(hù),以滿足用戶不斷變化的要求。一名crm的開發(fā)人員必須精通過程和結(jié)構(gòu)的設(shè)計(jì)。現(xiàn)在就讓我們來討論一下,你在使用mysql創(chuàng)建一個(gè)可升級(jí)的高性能crm系統(tǒng)時(shí)所要經(jīng)歷的過程。
為mysql設(shè)計(jì)crm解決方案
crm數(shù)據(jù)庫很復(fù)雜:你的用戶表格會(huì)鏈接到你的聯(lián)系方法表格上,后者又鏈接到你的地址和機(jī)構(gòu)的表格上,這兩個(gè)表格又鏈接到你的事物表格上,而這個(gè)事物表格又鏈接到你的目錄表格上,等等。對(duì)于某些關(guān)系,你需要?jiǎng)?chuàng)建復(fù)雜的復(fù)合索引。對(duì)于其他的關(guān)系,你可能只需要簡單的索引,或者根本就不需要。你實(shí)現(xiàn)里的更新和刪除可能會(huì)也可能不會(huì)被層疊。
這就意味著,你需要極其熟悉mysql里可用的調(diào)整方法。但是在你能夠進(jìn)行調(diào)整之前,你就需要設(shè)計(jì)一個(gè)crm過程,依靠它來利用這些調(diào)整方法。
邏輯和數(shù)據(jù)流
正如你能夠在圖a里看到的那樣,你可以將myisam表格作為報(bào)告類型數(shù)據(jù)的源來使用。這非常有用,因?yàn)樵谀阒皇呛唵蔚夭樵償?shù)據(jù)庫時(shí),isam表格將是個(gè)閃電般快速的數(shù)據(jù)源。isam的缺點(diǎn)是,表格文件自身可能會(huì)崩潰,而對(duì)其數(shù)據(jù)的更新很容易就會(huì)導(dǎo)致這樣的問題。
圖a

要解決isam的不穩(wěn)定性,你可以使用innodb表格來添加、更新和刪除數(shù)據(jù)表格里的記錄。innodb引擎是事務(wù)性(transactional),所以如果更新失敗,那么數(shù)據(jù)就會(huì)退回到更改之前的狀態(tài)。innodb在參照上更加完整,這樣數(shù)據(jù)的更新就不會(huì)違反表格之間的任何關(guān)系法則。
上面的圖表中所沒有反映出來的東西是,你應(yīng)該隨時(shí)備份你的數(shù)據(jù)。在這樣的情況下,isam表格里所保存的都是貴重的數(shù)據(jù)。這些表格都是你應(yīng)該備份的東西。你可以在innodb表格里獲得同樣的數(shù)據(jù),但是isam的表格更適合于備份過程的查詢。
對(duì)innodb表格的恢復(fù)操作也是出于同樣的原因——它們更適合于更新(例如參照的完整性、速度、穩(wěn)定性等等),而且它們將被自動(dòng)地與任何有待添加/更新的操作進(jìn)行同步。如果innodb表格不幸崩潰了,那么就能夠利用isam的數(shù)據(jù)來重建表格,這就是為什么要將這個(gè)過程像這樣分割的最好原因了。畢竟,冗余就等于安全。
要注意,在圖a里連接表格a和表格b的線條顯示其是一個(gè)單向的同步過程。它涉及報(bào)告(report)表格(表格a、isam)的鎖定,然后將更新(update)表格(表格b、innodb)推回給表格a。這一過程發(fā)生得很快,因?yàn)樵谶@一點(diǎn)上不會(huì)有或者很少會(huì)有數(shù)據(jù)的確認(rèn)。myisam在設(shè)計(jì)上就不支持它。
當(dāng)然,不是所有的crm都是設(shè)計(jì)用來和mysql一起工作的。它們通常都會(huì)支持mysql,但是它們沒有利用到其特有的性能和設(shè)計(jì)特性。例如sap、peoplesoft以及微軟crm都沒有為mysql提供任何優(yōu)化的特性。這就是為什么它們都是根據(jù)甲骨文和微軟的rdbms設(shè)計(jì)范例所創(chuàng)建的原因了。
還是有很多crm工具包都是圍繞lamp(linux/apache/mysql/php)這一基礎(chǔ)來設(shè)計(jì)的。這些通常都是開放源代碼的項(xiàng)目,與之相關(guān)的好處以及花費(fèi)是可想而知的。由于crm幾乎總是涉及很多軟件的自定義以及商業(yè)過程的分析,所以它相當(dāng)樂意參與到開放源代碼的開發(fā)工作中來。開放源代碼所提供的設(shè)計(jì)更新間隔正是系統(tǒng)同企業(yè)實(shí)際操作進(jìn)行同步所需要的,至少是在盡可能地同步。
用于mysql的幾種crm工具包
下面這些crm工具包已經(jīng)為同mysql一起使用進(jìn)行了優(yōu)化:
獨(dú)特的設(shè)計(jì)范例
如果你正在參與使用mysql創(chuàng)建crm解決方案的工作,那么你就需要將技術(shù)同商業(yè)技巧有效地結(jié)合起來。將系統(tǒng)里的接口同真實(shí)世界里的接口相匹配,需要你對(duì)mysql獨(dú)特設(shè)計(jì)范例里可用的性能增強(qiáng)特性有一個(gè)深入的了解。理解mysql的事物以及非事物表格類型將是理解這個(gè)范例的關(guān)鍵,但是諸如索引和關(guān)鍵字的合成(key composition)也有其作用。
mysql能夠被用作常用的大型crm工具包的后端數(shù)據(jù)庫,但是這些工具包往往不能夠利用mysql的優(yōu)化特性以及設(shè)計(jì)范例。但是,很多開放源代碼的工具包的確利用了mysql特有的特性,或者它們能夠在源代碼這一層次被調(diào)整以利用這些特性。這就讓mysql成為了你crm項(xiàng)目的一個(gè)理想選擇。
新聞熱點(diǎn)
疑難解答
圖片精選