Architecture Change - Central Resources - Add Graph Database
The addition of a Graph Database is required in order to support enhanced Entitlements and a new Entitlements Service based on Graph Database Functionality. This database has been determined to be a Cosmos Database and leverage the Azure Cosmos Graph API
The database for entitlements needs to be a single database for the OSDU stamp and is not part of a Data Partition and is planned to be a part of the Central Resources.
Design
Terraform Resources exist in AzureRM for managing a Gremlin Graph within a Cosmos Account. These resources are different than those used by a SQL Database and Container. Two options exist for the module work.
- Enhance the CosmosDB Module to support both SQL and Gremlin Databases.
- Create a separate module for each database type that is independent.
There are no known advantages at the moment as to why a single module would be of benefit so the default decision is to use a new module for this Graph API functionality.
Module Requirements
- The Module if possible should be as similar to Cosmos DB as possible.
Template Requirements
- Database will be named with the suffix of graph to distinguish from table or db
- Database will be created as part of the Central Resource Template
- Database will be locked
- Database location and replication location will be consistent in naming patterns to Data Partitions
- Database by default will use the same type of throughput settings as CosmosDB.
Acceptance Criteria
- Architecture Diagram Change
- Modify or create an infrastructure module responsible for adding Cosmos Graph Database.
- Modify Central Resources to add the additional database.
- Ensure all Module Unit Tests Pass
- Ensure all Template Unit Tests and Integration Tests Pass
- Update all required documentation