Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,29 @@
- [Failover Plugin](using-the-python-wrapper/using-plugins/UsingTheFailoverPlugin.md)
- [Failover v2 Plugin](using-the-python-wrapper/using-plugins/UsingTheFailover2Plugin.md)
- [Failover Configuration Guide](using-the-python-wrapper/FailoverConfigurationGuide.md)
- [Global Database Failover Plugin](using-the-python-wrapper/using-plugins/UsingTheGdbFailoverPlugin.md)
- [Host Monitoring Plugin](using-the-python-wrapper/using-plugins/UsingTheHostMonitoringPlugin.md)
- [Aurora Connection Tracker Plugin](using-the-python-wrapper/using-plugins/UsingTheAuroraConnectionTrackerPlugin.md)
- [Aurora Initial Connection Strategy Plugin](using-the-python-wrapper/using-plugins/UsingTheAuroraInitialConnectionStrategyPlugin.md)
- [Host Availability Strategy](using-the-python-wrapper/HostAvailabilityStrategy.md)
- [Custom Endpoint Plugin](using-the-python-wrapper/using-plugins/UsingTheCustomEndpointPlugin.md)
- [IAM Authentication Plugin](using-the-python-wrapper/using-plugins/UsingTheIamAuthenticationPlugin.md)
- [AWS Secrets Manager Plugin](using-the-python-wrapper/using-plugins/UsingTheAwsSecretsManagerPlugin.md)
- [Federated Authentication Plugin](using-the-python-wrapper/using-plugins/UsingTheFederatedAuthenticationPlugin.md)
- [Okta Authentication Plugin](using-the-python-wrapper/using-plugins/UsingTheOktaAuthenticationPlugin.md)
- [Read Write Splitting Plugin](using-the-python-wrapper/using-plugins/UsingTheReadWriteSplittingPlugin.md)
- [Reader Selection Strategies](using-the-python-wrapper/ReaderSelectionStrategies.md)
- [Simple Read Write Splitting Plugin](using-the-python-wrapper/using-plugins/UsingTheSimpleReadWriteSplittingPlugin.md)
- [Global Database Read/Write Splitting Plugin](using-the-python-wrapper/using-plugins/UsingTheGdbReadWriteSplittingPlugin.md)
- [Fastest Response Strategy Plugin](using-the-python-wrapper/using-plugins/UsingTheFastestResponseStrategyPlugin.md)
- [Blue/Green Deployment Plugin](using-the-python-wrapper/using-plugins/UsingTheBlueGreenPlugin.md)
- [Limitless Connection Plugin](using-the-python-wrapper/using-plugins/UsingTheLimitlessPlugin.md)
- [Developer Plugin](using-the-python-wrapper/using-plugins/UsingTheDeveloperPlugin.md)
- [Host Availability Strategy](using-the-python-wrapper/HostAvailabilityStrategy.md)
- [Plugins Compatibility](using-the-python-wrapper/compatibility/Compatibility.md)
- [Database Type Compatibility](using-the-python-wrapper/compatibility/CompatibilityDatabaseTypes.md)
- [Database URL Type Compatibility](using-the-python-wrapper/compatibility/CompatibilityEndpoints.md)
- [Cross Plugin Compatibility](using-the-python-wrapper/compatibility/PluginChainCompatibility.md)
- [Development Guide](./development-guide/DevelopmentGuide.md)
- [Setup](./development-guide/DevelopmentGuide.md#setup)
- [Testing Overview](./development-guide/DevelopmentGuide.md#testing-overview)
Expand Down
49 changes: 0 additions & 49 deletions docs/using-the-python-wrapper/PluginChainCompatibility.md

This file was deleted.

23 changes: 23 additions & 0 deletions docs/using-the-python-wrapper/compatibility/Compatibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Plugins compatibility

The AWS Advanced Python Wrapper uses plugins to execute database method calls. You can think of a plugin as an extensible code module that adds additional logic around driver method calls. Plugins are designed with the intention of being compatible with each other; however, there are logical constraints related to database type or database features that can make plugins inefficient in certain configurations.

For example, RDS Single-AZ Instance deployments do not support failover, so the `failover` and `failover_v2` plugins are marked as incompatible with that deployment. If either of these plugins is included in the driver configuration, there will be no added value. However, these unnecessary plugins will function without errors and will simply consume additional resources.

The following matrices help verify plugin compatibility with other plugins and with various database types. Some plugins are sensitive to the database URL provided in the connection string, and this is also presented below.

We encourage users to verify their configurations and ensure that their configuration contains no incompatible components.

- [Database type compatibility](./CompatibilityDatabaseTypes.md)
- [Database URL type compatibility](./CompatibilityEndpoints.md)
- [Cross plugin compatibility](./PluginChainCompatibility.md) — the plugin-vs-plugin matrix plus driver/runtime constraints, plugin ordering, and canonical chains

## Universally Compatible Plugins

The following plugins operate independently of connection management and are compatible with all plugins, database types, and endpoint types:

| Plugin | Description |
|----------------|----------------------------------------------------|
| [dev](../using-plugins/UsingTheDeveloperPlugin.md) | Developer utility plugin for debugging and diagnostics. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| [dev](../using-plugins/UsingTheDeveloperPlugin.md) | Developer utility plugin for debugging and diagnostics. |
| [`dev`](../using-plugins/UsingTheDeveloperPlugin.md) | Developer utility plugin for debugging and diagnostics. |

It might help if it looks the same as the others

| `connect_time` | Logs the time taken to establish a connection. |
| `execute_time` | Logs the time taken to execute any driver method. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Database type compatibility

This document is part of the [Compatibility Guide](./Compatibility.md) and explains plugin compatibility with various database types and deployments. Some plugins require specific metadata from particular database types to function properly.

For example, the `limitless` plugin is incompatible with [Aurora Global Database](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) because it's built on different architectural principles than [Limitless Database](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless-architecture.html). Aurora Global Database doesn't use transaction routers and doesn't provide the transaction routers' metadata. This lack of required metadata makes it incompatible with the `limitless` plugin.

For Aurora Global Database configuration details, see [Aurora Global Databases](../GlobalDatabases.md).

Legend: ✅ compatible  |  ❌ incompatible / no added value

| Plugin code / Database type | Aurora Global Database <br>(MySQL and PG) | Aurora Cluster <br>(MySQL and PG) | RDS Multi-AZ DB Cluster (3 instances) <br>(MySQL and PG) |
|---|:---:|:---:|:---:|
| [custom_endpoint](../using-plugins/UsingTheCustomEndpointPlugin.md) | ✅ | ✅ | ✅ |
| [host_monitoring](../using-plugins/UsingTheHostMonitoringPlugin.md) (EFM v1) | ✅ | ✅ | ✅ |
| [host_monitoring_v2](../using-plugins/UsingTheHostMonitoringPlugin.md) (EFM v2) | ✅ | ✅ | ✅ |
| [failover](../using-plugins/UsingTheFailoverPlugin.md) | ✅ | ✅ | ✅ |
| [failover_v2](../using-plugins/UsingTheFailover2Plugin.md) | ✅ | ✅ | ✅ |
| [gdb_failover](../using-plugins/UsingTheGdbFailoverPlugin.md) | ✅ | ✅ | ✅ |
| [iam](../using-plugins/UsingTheIamAuthenticationPlugin.md) | ✅ | ✅ | ✅ |
| [aws_secrets_manager](../using-plugins/UsingTheAwsSecretsManagerPlugin.md) | ✅ | ✅ | ✅ |
| [federated_auth](../using-plugins/UsingTheFederatedAuthenticationPlugin.md) | ✅ | ✅ | ✅ |
| [okta](../using-plugins/UsingTheOktaAuthenticationPlugin.md) | ✅ | ✅ | ✅ |
| stale_dns | ✅ | ✅ | ✅ |
| [read_write_splitting](../using-plugins/UsingTheReadWriteSplittingPlugin.md) | ✅ | ✅ | ✅ |
| [srw](../using-plugins/UsingTheSimpleReadWriteSplittingPlugin.md) | ✅ | ✅ | ✅ |
| [gdb_rw](../using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) | ✅ | ✅ | ✅ |
| [aurora_connection_tracker](../using-plugins/UsingTheAuroraConnectionTrackerPlugin.md) | ✅ | ✅ | ✅ |
| connect_time | ✅ | ✅ | ✅ |
| [fastest_response_strategy](../using-plugins/UsingTheFastestResponseStrategyPlugin.md) | ✅ | ✅ | ✅ |
| [initial_connection](../using-plugins/UsingTheAuroraInitialConnectionStrategyPlugin.md) | ✅ | ✅ | ✅ |
| [limitless](../using-plugins/UsingTheLimitlessPlugin.md) | ❌ | ✅ (PostgreSQL only) | ✅ |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second check mark should say PG only as well

| [bg](../using-plugins/UsingTheBlueGreenPlugin.md) | ❌ | ✅ | ❌ |

<br>

| Plugin code / Database type | RDS Multi-AZ DB Instance (2 instances) <br>(MySQL and PG) | RDS Single-AZ Instance (1 instance) <br>(MySQL and PG) | Community Database <br>(MySQL and PG) |
|---|:---:|:---:|:---:|
| [custom_endpoint](../using-plugins/UsingTheCustomEndpointPlugin.md) | ❌ | ❌ | ❌ |
| [host_monitoring](../using-plugins/UsingTheHostMonitoringPlugin.md) (EFM v1) | ✅ | ✅ | ✅ |
| [host_monitoring_v2](../using-plugins/UsingTheHostMonitoringPlugin.md) (EFM v2) | ✅ | ✅ | ✅ |
| [failover](../using-plugins/UsingTheFailoverPlugin.md) | ❌ | ❌ | ❌ |
| [failover_v2](../using-plugins/UsingTheFailover2Plugin.md) | ❌ | ❌ | ❌ |
| [gdb_failover](../using-plugins/UsingTheGdbFailoverPlugin.md) | ❌ | ❌ | ❌ |
| [iam](../using-plugins/UsingTheIamAuthenticationPlugin.md) | ✅ | ✅ | ❌ |
| [aws_secrets_manager](../using-plugins/UsingTheAwsSecretsManagerPlugin.md) | ✅ | ✅ | ❌ |
| [federated_auth](../using-plugins/UsingTheFederatedAuthenticationPlugin.md) | ✅ | ✅ | ❌ |
| [okta](../using-plugins/UsingTheOktaAuthenticationPlugin.md) | ✅ | ✅ | ❌ |
| stale_dns | ❌ | ❌ | ❌ |
| [read_write_splitting](../using-plugins/UsingTheReadWriteSplittingPlugin.md) | ❌ | ❌ | ❌ |
| [srw](../using-plugins/UsingTheSimpleReadWriteSplittingPlugin.md) | ✅ | ❌ | ✅ |
| [gdb_rw](../using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) | ❌ | ❌ | ❌ |
| [aurora_connection_tracker](../using-plugins/UsingTheAuroraConnectionTrackerPlugin.md) | ❌ | ❌ | ❌ |
| connect_time | ✅ | ✅ | ✅ |
| [fastest_response_strategy](../using-plugins/UsingTheFastestResponseStrategyPlugin.md) | ❌ | ❌ | ❌ |
| [initial_connection](../using-plugins/UsingTheAuroraInitialConnectionStrategyPlugin.md) | ❌ | ❌ | ❌ |
| [limitless](../using-plugins/UsingTheLimitlessPlugin.md) | ❌ | ❌ | ❌ |
| [bg](../using-plugins/UsingTheBlueGreenPlugin.md) | ✅ | ✅ | ❌ |

> The `connect_time`, `execute_time`, and [`dev`](../using-plugins/UsingTheDeveloperPlugin.md) plugins are compatible with every database type (see [Universally Compatible Plugins](./Compatibility.md#universally-compatible-plugins)).
Loading