:original_name: ddm_16_0001.html
.. _ddm_16_0001:
Creating a Schema
=================
Function
--------
This API is used to create a schema.
Constraints
-----------
Before creating a schema, ensure that you have associated RDS instances with your DDM instance and that the RDS instances are not associated with other DDM instances.
URI
---
POST /v1/{project_id}/instances/{instance_id}/databases
.. table:: **Table 1** Path parameters
=========== ========= ====== ==================================
Parameter Mandatory Type Description
=========== ========= ====== ==================================
project_id Yes String Project ID of a tenant in a region
instance_id Yes String DDM instance ID
=========== ========= ====== ==================================
Request Parameters
------------------
.. table:: **Table 2** Request header parameters
+-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+=================+=================+======================================================================================================================+
| X-Auth-Token | Yes | String | User token |
| | | | |
| | | | It can be obtained by calling an IAM API. The value of **X-Subject-Token** in the response header is the user token. |
+-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------+
.. table:: **Table 3** Request body parameters
+-----------+-----------+------------------------------------------------------------------------------------------+--------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+==========================================================================================+====================+
| databases | Yes | Array of :ref:`CreateDatabaseDetail ` objects | Schema information |
+-----------+-----------+------------------------------------------------------------------------------------------+--------------------+
.. _ddm_16_0001__request_createdatabasedetail:
.. table:: **Table 4** CreateDatabaseDetail
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+=================+==============================================================================================+===================================================================================================================================================================================================+
| name | Yes | String | Schema name, which: |
| | | | |
| | | | - Can include 2 to 48 characters. |
| | | | - Must start with a letter. |
| | | | - Contains only lowercase letters, digits, and underscores (_). |
| | | | - Cannot contain keywords **information_schema**, **mysql, performance_schema**, or **sys**. |
| | | | |
| | | | Minimum length: 2 characters |
| | | | |
| | | | Maximum length: 48 characters |
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| shard_mode | Yes | String | Sharding mode of the schema. The value can be: |
| | | | |
| | | | - **cluster**: indicates that the schema is in sharded mode. |
| | | | - **single**: indicates that the schema is in unsharded mode. |
| | | | |
| | | | Enumerated values: |
| | | | |
| | | | - **cluster** |
| | | | - **single** |
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| shard_number | Yes | Integer | Number of shards in the same working mode |
| | | | |
| | | | - If **shard_unit** is not empty, the value is the product of **shard_unit** multiplied by the associated RDS instances. |
| | | | - If **shard_unit** is left blank, the value must be greater than the number of associated RDS instances and less than or equal to the product of the associated RDS instances multiplied by 64. |
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| shard_unit | No | Integer | Number of shards per RDS instance This parameter is optional. |
| | | | |
| | | | - The value is **1** if the schema is unsharded. |
| | | | - The value ranges from **1** to **64** if the schema is sharded. |
| | | | |
| | | | Minimum value: **1** |
| | | | |
| | | | Maximum value: **64** |
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| used_rds | Yes | Array of :ref:`DatabaseInstabcesParam ` objects | RDS instances associated with the schema |
+-----------------+-----------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _ddm_16_0001__request_databaseinstabcesparam:
.. table:: **Table 5** DatabaseInstabcesParam
+---------------+-----------+--------+--------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===============+===========+========+========================================================+
| id | Yes | String | ID of the RDS instance associated with the schema |
+---------------+-----------+--------+--------------------------------------------------------+
| adminUser | Yes | String | Username for logging in to the associated RDS instance |
+---------------+-----------+--------+--------------------------------------------------------+
| adminPassword | Yes | String | Password for logging in to the associated RDS instance |
+---------------+-----------+--------+--------------------------------------------------------+
Response Parameters
-------------------
**Status code: 200**
.. table:: **Table 6** Response body parameters
+-----------+-------------------------------------------------------------------------------------------------------------+--------------------+
| Parameter | Type | Description |
+===========+=============================================================================================================+====================+
| databases | Array of :ref:`CreateDatabaseDetailResponses ` objects | Schema information |
+-----------+-------------------------------------------------------------------------------------------------------------+--------------------+
.. _ddm_16_0001__response_createdatabasedetailresponses:
.. table:: **Table 7** CreateDatabaseDetailResponses
========= ====== ===========
Parameter Type Description
========= ====== ===========
name String Schema name
========= ====== ===========
**Status code: 400**
.. table:: **Table 8** Response body parameters
=============== ====== ==================
Parameter Type Description
=============== ====== ==================
errCode String Service error code
externalMessage String Error message
=============== ====== ==================
**Status code: 500**
.. table:: **Table 9** Response body parameters
=============== ====== ==================
Parameter Type Description
=============== ====== ==================
errCode String Service error code
externalMessage String Error message
=============== ====== ==================
Example Request
---------------
The following is an example request of creating a schema and associating it with an existing DDM account.
.. code-block:: text
POST https://{endpoint}/v1/{project_id}/instances/{instance_id}/databases
{
"databases" : [ {
"name" : "mytestdb",
"shard_mode" : "cluster",
"shard_number" : 8,
"shard_unit" : 8,
"used_rds" : [ {
"id" : "f296c394f13f48449d715bf99af07e59in01",
"adminUser" : "root",
"adminPassword" : "PassWord_234"
} ]
} ]
}
Example Response
----------------
**Status code: 200**
OK
.. code-block::
{
"databases" : [ {
"name" : "mytestdb"
} ]
}
**Status code: 400**
bad request
.. code-block::
{
"externalMessage" : "Parameter error.",
"errCode" : "DBS.280001"
}
**Status code: 500**
server error
.. code-block::
{
"externalMessage" : "Server failure.",
"errCode" : "DBS.200412"
}
Status Codes
------------
=========== ============
Status Code Description
=========== ============
200 OK
400 bad request
500 server error
=========== ============
Error Codes
-----------
For details, see :ref:`Error Codes `.