MySQL非常適合于支持網(wǎng)站內(nèi)的客戶資源管理(customer resource management,CRM)系統(tǒng)。它已經(jīng)是很多Web網(wǎng)站不可分割的一部分了,而且其價格水平也是無人能敵的。此外在動態(tài)網(wǎng)站里,很可能已經(jīng)存在相當數(shù)量的CRM數(shù)據(jù)有待發(fā)掘。
在做一家電話公司SAP實施組管理員的過程中,我逐漸精通了其卓越的CRM工具包。我了解到CRM中大約有90%的工作是系統(tǒng)配置實施和維護,以滿足用戶不斷變化的要求。一名CRM的開發(fā)人員必須精通過程和結(jié)構(gòu)的設(shè)計。現(xiàn)在就讓我們來討論一下,你在使用MySQL創(chuàng)建一個可升級的高性能CRM系統(tǒng)時所要經(jīng)歷的過程。
為MySQL設(shè)計CRM解決方案
CRM數(shù)據(jù)庫很復(fù)雜:你的用戶表格會鏈接到你的聯(lián)系方法表格上,后者又鏈接到你的地址和機構(gòu)的表格上,這兩個表格又鏈接到你的事物表格上,而這個事物表格又鏈接到你的目錄表格上,等等。對于某些關(guān)系,你需要創(chuàng)建復(fù)雜的復(fù)合索引。對于其他的關(guān)系,你可能只需要簡單的索引,或者根本就不需要。你實現(xiàn)里的更新和刪除可能會也可能不會被層疊。
這就意味著,你需要極其熟悉MySQL里可用的調(diào)整方法。但是在你能夠進行調(diào)整之前,你就需要設(shè)計一個CRM過程,依靠它來利用這些調(diào)整方法。
邏輯和數(shù)據(jù)流
正如你能夠在圖A里看到的那樣,你可以將MyISAM表格作為報告類型數(shù)據(jù)的源來使用。這非常有用,因為在你只是簡單地查詢數(shù)據(jù)庫時,ISAM表格將是個閃電般快速的數(shù)據(jù)源。ISAM的缺點是,表格文件自身可能會崩潰,而對其數(shù)據(jù)的更新很容易就會導(dǎo)致這樣的問題。
圖A
要解決ISAM的不穩(wěn)定性,你可以使用InnoDB表格來添加、更新和刪除數(shù)據(jù)表格里的記錄。InnoDB引擎是事務(wù)性(transactional),所以如果更新失敗,那么數(shù)據(jù)就會退回到更改之前的狀態(tài)。InnoDB在參照上更加完整,這樣數(shù)據(jù)的更新就不會違反表格之間的任何關(guān)系法則。
上面的圖表中所沒有反映出來的東西是,你應(yīng)該隨時備份你的數(shù)據(jù)。在這樣的情況下,ISAM表格里所保存的都是貴重的數(shù)據(jù)。這些表格都是你應(yīng)該備份的東西。你可以在InnoDB表格里獲得同樣的數(shù)據(jù),但是ISAM的表格更適合于備份過程的查詢。
對InnoDB表格的恢復(fù)操作也是出于同樣的原因——它們更適合于更新(例如參照的完整性、速度、穩(wěn)定性等等),而且它們將被自動地與任何有待添加/更新的操作進行同步。如果InnoDB表格不幸崩潰了,那么就能夠利用ISAM的數(shù)據(jù)來重建表格,這就是為什么要將這個過程像這樣分割的最好原因了。畢竟,冗余就等于安全。
要注意,在圖A里連接表格A和表格B的線條顯示其是一個單向的同步過程。它涉及報告(Report)表格(表格A、ISAM)的鎖定,然后將更新(Update)表格(表格B、InnoDB)推回給表格A。這一過程發(fā)生得很快,因為在這一點上不會有或者很少會有數(shù)據(jù)的確認。MyISAM在設(shè)計上就不支持它。
當然,不是所有的CRM都是設(shè)計用來和MySQL一起工作的。它們通常都會支持MySQL,但是它們沒有利用到其特有的性能和設(shè)計特性。例如SAP、PeopleSoft以及微軟CRM都沒有為MySQL提供任何優(yōu)化的特性。這就是為什么它們都是根據(jù)甲骨文和微軟的RDBMS設(shè)計范例所創(chuàng)建的原因了。
還是有很多CRM工具包都是圍繞LAMP(linux/Apache/MySQL/php)這一基礎(chǔ)來設(shè)計的。這些通常都是開放源代碼的項目,與之相關(guān)的好處以及花費是可想而知的。由于CRM幾乎總是涉及很多軟件的自定義以及商業(yè)過程的分析,所以它相當樂意參與到開放源代碼的開發(fā)工作中來。開放源代碼所提供的設(shè)計更新間隔正是系統(tǒng)同企業(yè)實際操作進行同步所需要的,至少是在盡可能地同步。
用于MySQL的幾種CRM工具包
下面這些CRM工具包已經(jīng)為同MySQL一起使用進行了優(yōu)化:
獨特的設(shè)計范例
如果你正在參與使用MySQL創(chuàng)建CRM解決方案的工作,那么你就需要將技術(shù)同商業(yè)技巧有效地結(jié)合起來。將系統(tǒng)里的接口同真實世界里的接口相匹配,需要你對MySQL獨特設(shè)計范例里可用的性能增強特性有一個深入的了解。理解MySQL的事物以及非事物表格類型將是理解這個范例的關(guān)鍵,但是諸如索引和關(guān)鍵字的合成(key composition)也有其作用。
MySQL能夠被用作常用的大型CRM工具包的后端數(shù)據(jù)庫,但是這些工具包往往不能夠利用MySQL的優(yōu)化特性以及設(shè)計范例。但是,很多開放源代碼的工具包的確利用了MySQL特有的特性,或者它們能夠在源代碼這一層次被調(diào)整以利用這些特性。這就讓MySQL成為了你CRM項目的一個理想選擇。
新聞熱點
疑難解答
圖片精選