Abstract:
Described herein are systems and methods for providing access to a database in a multi-tenant environment, including the use of a connection pool, with support for efficient repurposing of connections. In accordance with an embodiment, a software application can request that a connection be provided, to enable access to the database. In response to receiving the request, the connection pool can first determine if a particular connection with the exact desired attributes already exists within the pool, but is borrowed at the time of the request. If such a connection exists, then the connection pool can wait a period of time for that particular connection to become available, referred to herein as a double-wait. Subsequently, if the particular connection is not made available within the double-wait time period, the connection pool resumes its usual operation, for example by repurposing other connections.
Abstract:
Described herein are systems and methods for providing access to a database in a multi-tenant environment, including the use of a connection pool, and support for dynamic relocation of tenants. In accordance with an embodiment, a software application can obtain a connection from the connection pool, on behalf of a tenant, which enables the software application or tenant to access the database. A relocation process enables a tenant which is associated with a multi-tenant or other client application, to be relocated within the database environment, for example across a plurality of container databases, with near-zero downtime to the client application, including managing the draining of existing connections, and the migrating of new connections, without requiring changes to the underlying application.
Abstract:
Techniques are provided for creating, organizing, and maintaining a sharded database. A sharded database can be created using user-defined sharding, system-managed sharding, or composite sharding. The sharded database is implemented with relational database techniques. The techniques described provide improvements to load distribution, organization, query processing, and schema propagation in a sharded database.
Abstract:
In accordance with an embodiment, the system enables access to a sharded database. A shard-aware client application connecting to a sharded database can use a connection pool (e.g., a Universal Connection Pool, UCP), to store or access connections to different shards or chunks of the sharded database within a shared pool. As new connections are created, a shard topology layer can be built at the database driver layer, which learns and caches shard key ranges to locations of shards, and enables subsequent connection requests from a client application to use a fast key path access to the appropriate shard or chunk. A connection pool and database driver can be configured to allow a client application to provide a shard key, either during connection checkout or at a later time; recognize shard keys specified by the client application; and enable connection by the client application to a particular shard or chunk.