Tous les produits
Search
Centre de documentation

Tablestore:Create a data table

Dernière mise à jour :Aug 18, 2026

Cette rubrique explique comment créer une table de données Tablestore à l'aide du SDK PHP.

Remarques d'utilisation

Après la création d'une table de données, attendez qu'elle soit chargée avant d'effectuer des opérations sur les données, faute quoi ces dernières échoueront. Ce processus prend généralement quelques secondes.

Prérequis

Initialiser un client Tablestore

Description de la méthode

public function createTable(array $request)

Description du paramètre $request

  • table_meta (obligatoire) object : Informations sur la structure de la table, comprenant les paramètres suivants.

    Nom

    Type

    Description

    table_name (obligatoire)

    string

    Nom de la table de données.

    primary_key_schema (obligatoire)

    array

    Informations relatives à la clé primaire.

    • Vous pouvez configurer de 1 à 4 colonnes de clé primaire, triées par ordre croissant par défaut. La première colonne de clé primaire sert de clé de partition.

    • Les types de données de clé primaire incluent STRING, INTEGER et BINARY. Les colonnes de clé primaire de type entier qui ne sont pas des clés de partition peuvent être définies comme des colonnes de clé primaire à incrémentation automatique.

    defined_column (facultatif)

    array

    Informations sur les colonnes prédéfinies.

    • Les colonnes prédéfinies sont des colonnes d'attributs prédéfinies et peuvent être utilisées pour créer des index secondaires et des index de recherche.

    • Les types de données des colonnes prédéfinies incluent STRING, INTEGER, BLOB, DOUBLE ou BOOLEAN.

  • table_options (facultatif) object : Informations de configuration de la table, comprenant les paramètres suivants.

    Nom

    Type

    Description

    time_to_live (facultatif)

    int

    Durée de vie des données en secondes. Valeur par défaut : -1.

    • Si ce paramètre est défini sur -1, les données n'expirent jamais. Sinon, la valeur minimale est 86400 (1 jour). Les données dont la durée de vie est dépassée sont automatiquement supprimées.

    • Pour utiliser des index de recherche ou des index secondaires, vous devez définir la durée de vie des données sur -1 ou le paramètre allow_update sur false.

    max_versions (facultatif)

    int

    Nombre maximal de versions. Valeur par défaut : 1.

    • Pour utiliser des index de recherche ou des index secondaires, le nombre maximal de versions doit être défini sur 1.

    deviation_cell_version_in_sec (facultatif)

    int

    Décalage maximal de version en secondes. Valeur par défaut : 86400 (1 jour).

    • La différence entre l'horodatage des données écrites et l'heure système actuelle doit se situer dans la plage de décalage maximal de version, faute quoi l'écriture des données échouera.

    • La plage de versions valides pour les données de colonne d'attribut est [max(Data write time - Max version offset, Data write time - TTL value), Data write time + Max version offset).

    allow_update (facultatif)

    bool

    Indique si les mises à jour sont autorisées. Valeur par défaut : true.

    • Si ce paramètre est défini sur false, vous ne pouvez pas mettre à jour les données à l'aide de la méthode updateRow().

  • index_metas (facultatif) object : Liste des index secondaires. Chaque index comprend les paramètres suivants.

    Nom

    Type

    Description

    name (obligatoire)

    string

    Nom de l'index.

    primary_key (obligatoire)

    array

    Colonnes de clé primaire de l'index.

    • Les colonnes de clé primaire d'un index combinent les colonnes de clé primaire et les colonnes prédéfinies de la table de données.

    • Pour créer un index secondaire local, la première colonne de clé primaire de l'index doit correspondre à la première colonne de clé primaire de la table de données.

    defined_column (obligatoire)

    array

    Colonnes prédéfinies de l'index.

    • Les colonnes prédéfinies proviennent des colonnes prédéfinies de la table de données.

    index_type (facultatif)

    string

    Type d'index. Valeurs possibles :

    • GLOBAL_INDEX (valeur par défaut) : index secondaire global.

    • LOCAL_INDEX : index secondaire local.

    index_update_mode (facultatif)

    string

    Mode de mise à jour de l'index. Valeurs possibles :

    • ASYNC_INDEX (valeur par défaut) : mise à jour asynchrone. Le mode de mise à jour des index secondaires globaux doit être défini sur la mise à jour asynchrone.

    • SYNC_INDEX : mise à jour synchrone. Le mode de mise à jour des index secondaires locaux doit être défini sur la mise à jour synchrone.

  • stream_spec (facultatif) object : Informations de configuration Stream, comprenant les paramètres suivants.

    Nom

    Type

    Description

    enable_stream (facultatif)

    bool

    Indique si Stream est activé. Valeur par défaut : false.

    expiration_time (facultatif)

    int

    Délai d'expiration Stream, indiquant la période de conservation des journaux incrémentiels. Unité : heures. Valeur maximale : 168 (7 jours).

    • Si enable_stream est défini sur true, vous devez définir expiration_time.

  • reserved_throughput (obligatoire) object : débit réservé en lecture et en écriture, en CU. Seules les instances haute performance en mode CU peuvent être configurées avec des valeurs non nulles et prendre effet.

Exemple de code

Créer une table de données

L'exemple de code suivant crée une table test_table contenant une clé primaire de type String.

$request = array (
    // Table structure information
    'table_meta' => array (
        'table_name' => 'test_table',
        // At least one primary key is required to create a data table
        'primary_key_schema' => array (
            array('id', PrimaryKeyTypeConst::CONST_STRING)
        ),
        // (Optional) Add predefined columns
        'defined_column' => array (
            array('name', DefinedColumnTypeConst::DCT_STRING)
        )
    ), 
    // (Optional) Table configuration information
    'table_options' => array (
        // (Optional) Data lifecycle, -1 indicates that data never expires
        'time_to_live' => -1,
        // (Optional) Maximum number of versions
        'max_versions' => 1,
        // (Optional) Maximum version offset
        'deviation_cell_version_in_sec' => 86400,
        // (Optional) Whether to allow updates
        'allow_update' => true
    ), 
    // (Optional) Set Stream information
    'stream_spec' => array (
        'enable_stream' => true,
        'expiration_time' => 168
    ),
    // Reserved read and write throughput must be set when creating a data table (only high-performance instances in CU mode support setting non-zero values for reserved read and write throughput)
    'reserved_throughput' => array (
        'capacity_unit' => array (
            'read' => 0,
            'write' => 0
        )
    )
);

try{
    $client->createTable( $request );
    echo "Create table succeeded.";
} catch (Exception $e) {
    echo "Create table failed.";
}

Créer une table de données avec des index secondaires

L'exemple de code suivant crée une table de données avec des index secondaires.

$request = array (
    // Table structure information
    'table_meta' => array (
        'table_name' => 'test_table',
        // Primary key
        'primary_key_schema' => array (
            array('id', PrimaryKeyTypeConst::CONST_STRING)
        ),
        // Predefined columns
        'defined_column' => array (
            array('name', DefinedColumnTypeConst::DCT_STRING)
        )
    ), 
    // Reserved read and write throughput (only high-performance instances in CU mode support setting non-zero values for reserved read and write throughput)
    'reserved_throughput' => array (
        'capacity_unit' => array (
            'read' => 0,
            'write' => 0
        )
    ),
    // Secondary index information
    'index_metas' => array(
        array(
            'name' => 'test_table_index',
            'primary_key' => array('id'),
            'defined_column' => array('name'),
            'index_type' => IndexTypeConst::LOCAL_INDEX,
            'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
        )
    )
);

try{
    $client->createTable( $request );
    echo "Create table succeeded.";
} catch (Exception $e) {
    echo "Create table failed.";
}

Références