Architectural Models

Push vs. Pull Comparison

Side-by-side comparison of [[copy_property]] and [[link_resources]] to help choose the right data pattern.

Push vs. Pull Comparison

Choosing Between [[copy_property]] and [[link_resources]]

rescile provides two distinct mechanisms for moving data between resources. Understanding the difference is key to writing clear, maintainable models.

Feature [[copy_property]] [[link_resources]] (with copy_properties)
Operation Push: Pushes data from the origin_resource to a connected node. Pull: The origin_resource pulls data from a remote node.
Requirement An existing, direct connection must be present between the source and destination. No existing connection required. It finds the remote node via a join condition or filter.
Analogy Property Assignment / Inheritance: connected_object.property = self.property Database JOIN / Lookup: self.property = lookup_object(condition).property
Use Case Propagating context along an existing relationship graph (e.g., an application pushing its environment to its server). Enriching a resource with data from a central “lookup” source (e.g., a server looking up its location from a datacenter resource).
Can create new relations? No — operates on already-connected nodes only. Yes — create_relation creates a new relationship as part of the pull operation.
Conditional filtering match_on filters the destination (to) resource. match_on filters the origin_resource; match_with filters the with resource.

When to Use [[copy_property]]

Use [[copy_property]] when your graph already has a connection between two resource types and you want to propagate properties downstream. A classic example is pushing an application’s environment tag down to all its connected servers so that servers inherit the environment context without each server needing to define it independently.

See the full reference: [[copy_property]] Reference

Use [[link_resources]] when you need to discover the target resource first — i.e., when no direct relationship exists yet, or when you want to find a matching resource by a shared key or expression. This is the “lookup table” or “JOIN” pattern.

See the full reference: [[link_resources]] Reference