2010-03-29 93 views
3

在Dynamics CRM 4平台的速度和可访问数据的可维护性(只读)方面,最佳方式是什么?我已经完成了所有三项,但对观众的意见感兴趣。如何访问Dynamics CRM中的数据?

  • 通过API
  • 通过web服务直接
  • 通过DB调用意见

...为什么?

我的想法通常以数据库调用为中心,但我知道那里有纯粹主义者。

回答

2

鉴于这两个要求,我会说你想调用的意见。正确制作的SQL查询将会飞行。

如果您计划修改数据,则需要经过API,但由于它不允许深度加载实体,因此它不是最快的方法。例如,如果您想查看客户和他们的订单,则必须单独加载,然后手动加入。作为SQL查询的位置已经加入了数据。

不要以为TDS流比API服务使用的SOAP消息更有效。

UPDATE

我应该考虑到一般的观点和CRM数据库中指出:CRM不优化的表或视图的自定义实体的指标(怎么可能呢?)。因此,如果您有一个卡车实体,您随时都可以通过目的地查找,则需要为该属性添加索引。根据您的应用程序,它可能会在性能上产生巨大差异。

1

我会添加到杰克的评论说,直接查询表而不是视图(*基地& *扩展基地)会更快。

在速度的顺序排列它会是:

  1. 直接表查询
  2. 视图查询
  3. filterd视图查询
  4. API调用
+0

小心直接对着桌子。这些视图强制执行不会直接发送到表的安全性。此外,直接对表进行更新是一个超级糟糕的主意。所有更新都必须经过API。 Sucksville如果你有很多数据,但不这样做可能会有不可预测的结果。 – Jake 2010-03-30 14:57:39

+0

我永远不会建议做任何直接更新或通过表或视图插入。但是,对于大规模应用程序(数百个用户和数百万行),api只是不会为了查询目的而削减它。如果您需要强制实施安全角色,那么您必须遵守API或过滤视图。提取大量数据时,这两者都比较慢。 – XVargas 2010-03-30 15:34:13

0

直接表更新:

我不同意Jake所有更新都必须通过API。正确的说法是通过API是唯一的支持方式来做更新。实际上有几种情况直接修改表是最合理的选择:

- 在系统未运行时一次性导入大量数据。

- 对大量数据进行特定字段的修改。

我同意这种直接修改应该只是API性能不可接受时的最后手段。但是,如果您想修改数千条记录的布尔型字段,那么对表进行直接SQL更新是一个不错的选择。

相对速度 只要相对速度,我同意XVargas。

未经过滤的视图vs表:我还没有发现性能优势值得手工加入基本表和扩展表的麻烦。

未经过滤的视图vs已过滤的视图:我最近正在处理一个复杂的查询,它使用过滤的视图运行了大约15分钟。切换到未过滤的视图后,此查询在大约10秒钟内运行。查看各自的查询计划,原始查询有8个操作,而针对过滤视图的查询则有80多个操作。我从来没有通过API与查询视图进行比较,但我比较了通过API编写数据和直接通过SQL插入的成本。通过API导入数百万条记录可能需要几天时间,而使用插入语句的相同操作可能需要几分钟的时间。我认为读取期间的差异并不大,但它可能仍然很大。