【问题标题】:How to access data in Dynamics CRM?如何访问 Dynamics CRM 中的数据?
【发布时间】:2010-03-29 14:24:44
【问题描述】:

就平台速度和访问 Dynamics CRM 4 上数据(只读)的可维护性而言,最佳方式是什么?我已经完成了所有三个,但对人群的意见很感兴趣。

  • 通过 API
  • 直接通过网络服务
  • 通过数据库调用视图

...为什么?

我的想法通常围绕着对视图的 DB 调用,但我知道那里有纯粹主义者。

【问题讨论】:

    标签: dynamics-crm dynamics-crm-4 crm


    【解决方案1】:

    考虑到这两个要求,我想说你想调用视图。精心设计的 SQL 查询会飞起来。

    如果您打算修改数据,则需要通过 API,但这不是最快的方法,因为它不允许深度加载实体。例如,如果您想查看客户及其订单,则必须单独加载两者,然后手动加入。 SQL 查询已经将数据连接到哪里。

    没关系,TDS 流比 API 和 Web 服务使用的 SOAP 消息更有效。

    更新

    我应该指出一般的视图和 CRM 数据库:CRM 不会优化自定义实体的表或视图上的索引(怎么可能?)。因此,如果您有一个始终按目的地查找的卡车装载实体,则需要为该属性添加索引。根据您的应用程序,它可能会对性能产生巨大影响。

    【讨论】:

      【解决方案2】:

      我将在 jake 的评论中补充说,直接查询表而不是视图(*base 和 *extensionbase)会更快。

      按速度排序:

      1. 直接表查询
      2. 查看查询
      3. 过滤视图查询
      4. API 调用

      【讨论】:

      • 小心直接对着桌子。视图强制执行不会直接访问表的安全性。此外,直接对表进行更新是一个非常糟糕的主意。所有更新都必须通过 API。 Sucksville 如果您有大量数据,但如果不这样做可能会产生不可预测的结果。
      • 我绝不建议通过表或视图进行任何直接更新或插入。但是,对于大型应用程序(数百个用户和数百万行),API 不会将其用于查询目的。如果您需要强制执行安全角色,那么是的,您将不得不反对 API 或过滤视图。在提取大量数据时,两者都相当慢。
      【解决方案3】:

      直接表更新:

      我不同意 Jake 的观点,即所有更新都必须通过 API。正确的说法是通过 API 是唯一支持的更新方式。事实上,在某些情况下,直接修改表是最合理的选择:

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

      • 修改大量数据中的特定字段。

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

      相对速度

      就相对速度而言,我同意 XVargas。

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

      未过滤视图与过滤视图:我最近正在处理一个复杂的查询,使用过滤视图运行大约需要 15 分钟。切换到未过滤视图后,此查询运行了大约 10 秒。查看各自的查询计划,原始查询有 8 个操作,而针对过滤视图的查询有 80 多个操作。

      未过滤视图与 API:我从未将通过 API 查询与查询视图进行比较,但我比较了通过 API 写入数据与直接通过 SQL 插入数据的成本。通过 API 导入数百万条记录可能需要几天时间,而使用插入语句的相同操作可能需要几分钟时间。我认为在读取期间差异不是很大,但可能仍然很大。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        相关资源
        最近更新 更多