在Dynamics CRM 4平臺的速度和可訪問數據的可維護性(只讀)方面,最佳方式是什麼?我已經完成了所有三項,但對觀衆的意見感興趣。如何訪問Dynamics CRM中的數據?
- 通過API
- 通過web服務直接
- 通過DB調用意見
...爲什麼?
我的想法通常以數據庫調用爲中心,但我知道那裏有純粹主義者。
在Dynamics CRM 4平臺的速度和可訪問數據的可維護性(只讀)方面,最佳方式是什麼?我已經完成了所有三項,但對觀衆的意見感興趣。如何訪問Dynamics CRM中的數據?
...爲什麼?
我的想法通常以數據庫調用爲中心,但我知道那裏有純粹主義者。
鑑於這兩個要求,我會說你想調用的意見。正確製作的SQL查詢將會飛行。
如果您計劃修改數據,則需要經過API,但由於它不允許深度加載實體,因此它不是最快的方法。例如,如果您想查看客戶和他們的訂單,則必須單獨加載,然後手動加入。作爲SQL查詢的位置已經加入了數據。
不要以爲TDS流比API服務使用的SOAP消息更有效。
UPDATE
我應該考慮到一般的觀點和CRM數據庫中指出:CRM不優化的表或視圖的自定義實體的指標(怎麼可能呢?)。因此,如果您有一個卡車實體,您隨時都可以通過目的地查找,則需要爲該屬性添加索引。根據您的應用程序,它可能會在性能上產生巨大差異。
我會添加到傑克的評論說,直接查詢表而不是視圖(*基地& *擴展基地)會更快。
在速度的順序排列它會是:
直接表更新:
我不同意Jake所有更新都必須通過API。正確的說法是通過API是唯一的支持方式來做更新。實際上有幾種情況直接修改表是最合理的選擇:
- 在系統未運行時一次性導入大量數據。
- 對大量數據進行特定字段的修改。
我同意這種直接修改應該只是API性能不可接受時的最後手段。但是,如果您想修改數千條記錄的布爾型字段,那麼對錶進行直接SQL更新是一個不錯的選擇。
相對速度 只要相對速度,我同意XVargas。
未經過濾的視圖vs表:我還沒有發現性能優勢值得手工加入基本表和擴展表的麻煩。
未經過濾的視圖vs已過濾的視圖:我最近正在處理一個複雜的查詢,它使用過濾的視圖運行了大約15分鐘。切換到未過濾的視圖後,此查詢在大約10秒鐘內運行。查看各自的查詢計劃,原始查詢有8個操作,而針對過濾視圖的查詢則有80多個操作。我從來沒有通過API與查詢視圖進行比較,但我比較了通過API編寫數據和直接通過SQL插入的成本。通過API導入數百萬條記錄可能需要幾天時間,而使用插入語句的相同操作可能需要幾分鐘的時間。我認爲讀取期間的差異並不大,但它可能仍然很大。
小心直接對着桌子。這些視圖強制執行不會直接發送到表的安全性。此外,直接對錶進行更新是一個超級糟糕的主意。所有更新都必須經過API。 Sucksville如果你有很多數據,但不這樣做可能會有不可預測的結果。 – Jake 2010-03-30 14:57:39
我永遠不會建議做任何直接更新或通過表或視圖插入。但是,對於大規模應用程序(數百個用戶和數百萬行),api只是不會爲了查詢目的而削減它。如果您需要強制實施安全角色,那麼您必須遵守API或過濾視圖。提取大量數據時,這兩者都比較慢。 – XVargas 2010-03-30 15:34:13