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
When to Use [[link_resources]]
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