Multi-datasource object types (MDOs)(多数据源对象类型 (MDO))¶
:::callout{theme="neutral"} Multi-datasource object types (MDOs) are only available in Object Storage V2. :::
A multi-datasource object type (MDO) is backed by multiple datasources in the Ontology. At this time, only Foundry datasets or restricted views can be used for MDOs. Streaming souces are not supported.
Types of multi-datasource object types (MDOs)¶
There are two distinct categories of MDOs:
- Column-wise MDO: A join-like MDO case where distinct subsets of properties for an object type can be integrated from different datasources. Column-wise MDOs can be used to support use cases where there is a need for column-level access controls.
- Row-wise MDO: A union-like MDO case where full objects (an object with all of its properties) can be integrated from multiple datasources sharing the same schema. Row-wise MDOs can be used to support use cases where there is a need for row-level access controls. In Foundry, restricted views provide support for use cases in which you might use row-wise MDOs. Row-wise MDOs themselves are not available.
:::callout{theme="warning"} Foundry only supports column-wise MDOs and does not support row-wise MDOs. Most row-wise MDO use cases can be accomplished with restricted views. If you have a use case for row-wise MDOs that cannot be enabled via restricted views, contact your Palantir representative for assistance. :::
Configure a multi-datasource object type¶
After creating an object type in Ontology Manager using Object Storage V2, navigate to the Datasource metadata section of the object type from the left sidebar. Then, select Add new backing datasource to choose a dataset.

The Map primary key helper will appear and prompt you for a column with values matching the primary key of the object type. Once you choose a column, multiple backing datasets will appear under the Backing datasource section.

Navigate to the Properties metadata section from the left sidebar to add new fields to the newly added dataset.
FAQ¶
Are multi-datasource object types available for an object type indexed into Object Storage V1 (Phonograph)?¶
No. MDOs are only supported in Object Storage V2 and are not available for Object Storage V1 (Phonograph).
Are both column-wise MDO and row-wise MDO supported?¶
Only column-wise MDOs are currently available. If you have a use case for row-wise MDOs that cannot be enabled via restricted views, contact your Palantir representative for assistance.
Are user edits and materializations supported for MDO?¶
Yes, user edits and materializations are supported for MDO.
What happens if a user cannot view some of the input datasources for a given object type? What will the user experience be like?¶
If a user lacks Viewer permission on some of the input datasources, the properties mapped from those datasources will appear as null when displaying an object to the user. However, the user will still be able to view the schema of that object type (such as seeing property names), since access to the object type is controlled separately from the input datasource.
Learn more about permissions for object types.
Is property multiplicity supported?¶
Property multiplicity refers to multiple input datasources feeding overlapping columns/properties of an object type in the column-wise MDO case. Property multiplicity is currently not supported. This means that a specific property of an object type must come from one—and only one—of the input datasources (except for the primary key property, which must exist in every input datasource to join all datasources).
Can a property corresponding to a restricted view policy be mapped to multiple restricted view datasources if they share the same policy?¶
No, this is not supported; each restricted view datasource should have a separate policy property on the object type. Some of these properties can be marked as hidden in the Ontology Manager to avoid cluttering front-end applications.
What is the difference between MDOs and linking two distinct object types with a foreign key relation? How should users decide between these options?¶
MDOs are intended to provide a user-friendly way to configure the same setup as a single object type to build an organization's digital twin. Multiple object types with links between them can also be used for cases in which that is how users understand and interact with their data. Note that querying and traversing links between multiple object types is a more expensive operation than filtering on a property on the same object type.
Which objects appear if two column-wise datasources for an object have different sets of primary keys?¶
If two column-wise datasources for an object have different sets of primary keys, the behavior will be similar to the case in which some users do not have access to some input datasources. In these cases, primary keys that do not exist in a datasource will have the properties that are mapped from that particular input datasource displayed as null.
Is there a limit to the number of datasources an object type can have?¶
Object types are limited to a maximum of 70 datasources. Only datasources that are synced to object storage count towards this limit, so it does not include media sets or time series syncs.
Can I used MDOs with streaming object types?¶
No, MDOs are not supported with streaming object types. This is a known limitation of Object Storage V2.
中文翻译¶
多数据源对象类型 (MDO)¶
:::callout{theme="neutral"} 多数据源对象类型 (Multi-datasource object type, MDO) 仅在对象存储 V2 (Object Storage V2) 中可用。 :::
多数据源对象类型 (MDO) 由本体论 (Ontology) 中的多个数据源支持。目前,只有 Foundry 数据集 (Foundry datasets) 或 受限视图 (restricted views) 可用于 MDO。流式数据源 (Streaming sources) 不受支持。
多数据源对象类型 (MDO) 的类型¶
MDO 分为两个不同的类别:
- 列级 MDO (Column-wise MDO): 一种类似连接 (join) 的 MDO 场景,其中对象类型的不同属性子集可以从不同的数据源集成。列级 MDO 可用于支持需要列级访问控制的用例。
- 行级 MDO (Row-wise MDO): 一种类似联合 (union) 的 MDO 场景,其中完整对象(包含所有属性的对象)可以从共享相同模式的多个数据源集成。行级 MDO 可用于支持需要行级访问控制的用例。在 Foundry 中,受限视图 (restricted views) 为可能使用行级 MDO 的用例提供了支持。行级 MDO 本身不可用。
:::callout{theme="warning"} Foundry 仅支持列级 MDO,不支持行级 MDO。大多数行级 MDO 用例可以通过 受限视图 (restricted views) 实现。如果您有无法通过受限视图实现的行级 MDO 用例,请联系您的 Palantir 代表寻求帮助。 :::
配置多数据源对象类型¶
在 Ontology Manager 中使用对象存储 V2 (Object Storage V2) 创建对象类型后,从左侧边栏导航到对象类型的 数据源 (Datasource) 元数据部分。然后,选择 添加新的支持数据源 (Add new backing datasource) 以选择一个数据集。

映射主键 (Map primary key) 助手将出现,并提示您选择一个列,其值与对象类型的主键匹配。选择列后,多个支持数据集将出现在 支持数据源 (Backing datasource) 部分下。

从左侧边栏导航到 属性 (Properties) 元数据部分,以向新添加的数据集添加新字段。
常见问题解答¶
多数据源对象类型是否可用于索引到对象存储 V1 (Phonograph) 的对象类型?¶
不可以。MDO 仅在对象存储 V2 (Object Storage V2) 中受支持,不适用于对象存储 V1 (Phonograph)。
列级 MDO 和行级 MDO 都受支持吗?¶
目前仅列级 MDO 可用。如果您有无法通过受限视图实现的行级 MDO 用例,请联系您的 Palantir 代表寻求帮助。
MDO 是否支持用户编辑和物化?¶
是的,MDO 支持用户编辑 (user edits) 和物化 (materializations)。
如果用户无法查看给定对象类型的某些输入数据源,会发生什么?用户体验会怎样?¶
如果用户缺少对某些输入数据源的 查看者 (Viewer) 权限,则在向用户显示对象时,从这些数据源映射的属性将显示为 null。但是,用户仍然可以查看该对象类型的模式(例如查看属性名称),因为对对象类型的访问与输入数据源是分开控制的。
是否支持属性多重性?¶
属性多重性 (Property multiplicity) 指的是在列级 MDO 场景中,多个输入数据源为对象类型的重叠列/属性提供数据。目前不支持属性多重性。这意味着对象类型的特定属性必须来自且仅来自一个输入数据源(主键属性除外,主键属性必须存在于每个输入数据源中以连接所有数据源)。
如果多个受限视图数据源共享相同的策略,是否可以将对应于受限视图策略的属性映射到这些数据源?¶
不可以,这不支持;每个受限视图数据源应在对象类型上有一个独立的策略属性。其中一些属性可以在 Ontology Manager 中标记为隐藏,以避免前端应用界面杂乱。
MDO 与通过外键关系链接两个不同的对象类型有什么区别?用户应如何在这两种选项之间做出选择?¶
MDO 旨在提供一种用户友好的方式,将相同的配置设置为单个对象类型,以构建组织的数字孪生。多个对象类型及其之间的链接也可用于用户理解和交互数据的场景。请注意,查询和遍历多个对象类型之间的链接比在同一对象类型上过滤属性成本更高。
如果对象的两个列级数据源具有不同的主键集,会出现哪些对象?¶
如果对象的两个列级数据源具有不同的主键集,其行为将类似于某些用户无法访问某些输入数据源的情况。在这些情况下,数据源中不存在的主键,其从该特定输入数据源映射的属性将显示为 null。
对象类型的数据源数量是否有限制?¶
对象类型最多限制为 70 个数据源。只有同步到对象存储的数据源才计入此限制,因此不包括媒体集或时间序列同步。
我可以在流式对象类型中使用 MDO 吗?¶
不可以,MDO 不支持流式对象类型。这是对象存储 V2 (Object Storage V2) 的一个已知限制。