- 
                Notifications
    
You must be signed in to change notification settings  - Fork 16
 
Design for moving the app graph to actual graph storage #97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
        
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📈 🚀
        
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will need to do another round of review for this doc.
        
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      | 
           Do we need to write all the resources to Kuzu too? Are we using Kuzu as the main data store now?  | 
    
        
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                architecture/2025-06-non-k8s-controlplane/2025-06-graph-db-replace-planes.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
…fic radius scenarios Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
…clearly, made migration tool a requirement. Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
…oing all data storage via graph today with multiple RPs writing to the same data store. Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
Signed-off-by: Sylvain Niles <sylvain.niles@gmail.com>
| **Note: This design doc has been ported over from an old design doc and might not match Note that here we are using the Radius resource group to construct the key of the tracking entry instead of the AWS `resourceID`. The deployment engine provides the resource group information from the deployment's resource group during the POST call that it makes to UCP to create/update the resource. This will associate the AWS resource with the Radius resource group, and thus allow the user to list AWS resources deployed within a Radius resource group.he template completely** | ||
| 
               | 
          ||
| * **Author**: Vinaya Damle (vinayada) | ||
| 
               | 
          
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this doc was added by mistake?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes sorry I said that at the beginning of the meeting my copilot accidentally modified, will remove changes :)
| 
               | 
          ||
| ### User Scenarios (optional) | ||
| 
               | 
          ||
| * **Scenario 1 (Developer):** A Radius developer needs to address performance issues for application graphs containing many resources. Retrieving all resources connected to a specific environment, which is a very expensive operation. Using Cypher through the GAL would be more expressive and orders of magnitude faster than multiple etcd calls and client-side filtering. | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We would still take care to support only the read operations correct?
| ```bash | ||
| rad resource inspect gateway api-gateway --show-dependencies --type secret | ||
| ``` | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--show-dependencies is awesome :)
| 4. **Schema Definition:** A formal schema for application graph entities (Applications, Environments, Resources as nodes) and their relationships (as edges with types and properties) will be defined and enforced in PostgreSQL + AGE. | ||
| 5. **Component Updates:** Radius components that currently perform application graph operations (traversals, relationship queries) will be updated to use the GAL for graph queries while maintaining existing functionality through current storage mechanisms during the transition period. | ||
| **Architecture Rationale:** PostgreSQL with Apache AGE provides a strategic foundation that can serve both immediate graph database needs and future storage consolidation. Unlike embedded solutions, a containerized PostgreSQL deployment offers: (1) Production-ready operational patterns familiar to most teams; (2) Native support for both relational and graph data models; (3) Established ecosystem of monitoring, backup, and scaling tools; (4) The flexibility to migrate additional Radius storage needs to the same technology stack over time, reducing operational complexity. **Note: This proposal is scoped specifically to graph operations via the GAL. Future work would involve migrating key-value operations from etcd to PostgreSQL and renaming the GAL to DAL (Data Access Layer) to reflect its expanded role as the unified data access interface for all Radius storage operations.** | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: This proposal is scoped specifically to graph operations via the GAL. Future work would involve migrating key-value operations from etcd to PostgreSQL and renaming the GAL to DAL (Data Access Layer) to reflect its expanded role as the unified data access interface for all Radius storage operations.
Will data be duplicated across both etcd and the graph database in the meantime?
| 
           This pull request has been automatically marked as stale because it has been inactive for 90 days. Remove stale label or comment or this will be closed in 7 days.  | 
    
| 
           This pull request has been closed due to inactivity. Feel free to reopen if you are still working on it.  | 
    
This design adds a new component to Radius, the graph abstraction layer, and allows for app graph functionality to leverage the performance and simplicity of a graph db rather than the imperative graph traversal logic currently implemented in CoreRP.