【问题标题】:How do Salesforce query using the relationships table behind the scenes?Salesforce如何在后台使用关系表进行查询?
【发布时间】:2019-08-03 07:47:50
【问题描述】:

我正试图弄清楚 Salesforce 的元数据架构是如何在幕后工作的。他们发布了一段视频 (https://www.youtube.com/watch?v=jrKA3cJmoms),他在视频中浏览了许多推动它前进的重要桌子(大约 18m 英寸)。

我已经弄清楚了简单内容的基本表示/存储/检索的结构,但我不清楚关系数据透视表是如何工作的。我会很高兴:

a) 我确切地知道数据透视表与事物的关系(他提到的 RelationId 列我不清楚) b) 我可以为它构造一个查询。

Screenshot from the video

我没有找到任何资源在这个级别详细描述我需要的细节,或者设法找到任何我可以学习的模仿它的包。

是否有人对 Salesforce 的这一部分有任何可以提供帮助的低级经验?

编辑:感谢 David Reed 在编辑中提供更多详细信息。所以大概你同意事情并不完全像解释的那样?

  • 在“值”列中,存储了相关记录的 GUID
  • 这样可以轻松获取一对一的相关记录,并通过一些简单的 SQL 切换,反向解析一组记录。
  • 我认为 Salesforce 没有多对多关系,而不是使用“联结”,因此上述内容仍然相关

我想现在虽然我想知道数据透视表的意义是什么,因为现在这里有一个非常简单的关系。除非值列上缺少索引表明需要一个...

或者,如果:

  • 记录的值列将 GUID 存储到 relationship 记录而不是直接存储到相关记录?
  • 关系记录包含整理一个体面的查询所需的所有必要信息,并且还包括相关记录的 GUID?

这两个选项都没有为我消除歧义,除非我遗漏了什么。

【问题讨论】:

    标签: mysql sql salesforce metadata


    【解决方案1】:

    您无法查看、查询或以其他方式访问作为 Salesforce 平台架构基础的内部表。在平台上构建应用时,使用SOQL relationship queries查询关系;您可以在平台上查看和执行的工作不涉及数据透视表。

    虽然一些演示文稿和文档在某种程度上讨论了底层实现,但 SQL 表、模式、查询优化器等的确切细节并不公开。

    作为 Salesforce 开发人员或通过 API 与 Salesforce 交互的开发人员,您几乎无需担心 Salesforce 服务器上使用的底层 SQL 实施。当您处理大量数据(数百万条记录)时,这些知识会变得有用。该用例最有用的文档是Best Practices for Deployments with Large Data Volumes。在Underlying Concepts 下简要讨论了底层架构。但请记住

    作为客户,您也无法优化许多应用程序操作的底层 SQL,因为它是由系统生成的,而不是由每个租户编写的。

    实施细节也可能发生变化。

    元数据表和数据表

    当组织用关系类型声明对象的字段时,Force.com将该字段映射到MT_Data中的Value字段,然后使用该字段存储相关对象的ObjID。

    我相信您提到的documentation 使用标识符ObjId 含糊其辞,这里实际上是指它在文档前面提到的GUID - Salesforce Id。另一段说明

    MT_Name_Denorm 表是一个精益数据表,它将每条记录的 ObjID 和名称存储在 MT_Data 中。当应用程序需要提供涉及父/子关系的记录列表时,Force.com 使用 MT_Name_Denorm 表执行一个相对简单的查询,该查询检索每个引用记录的名称以在应用程序中显示,例如,作为一个超链接。

    这也没有任何意义,除非ObjId 被用于表示在文档中上表的可视化描述中称为GUID 的内容 - 记录的 Salesforce Id。

    【讨论】:

    • 嘿大卫,只是为了澄清我的问题/来源; Salesforce 不会回避告诉人们这些东西是如何工作的,只是在相当低的水平上。甚至显示“伪”表/字段。然而......在我读过的官方开发材料中,他们声明“当组织声明具有关系类型的对象字段时,Force.com 将该字段映射到 MT_Data 中的值字段,然后使用该字段存储相关对象的 ObjID。”但是,这并没有提及相关的 record ID。只是对象 ID。我不是 Salesforce 开发人员,只是好奇的 PHP 开发人员 :)
    • 本文档:developer.salesforce.com/page/Multi_Tenant_Architecture 指的是我在上述评论中引用的“多租户关系”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2021-11-07
    • 2016-10-11
    • 2020-07-16
    • 2016-12-01
    相关资源
    最近更新 更多