すべてのプロダクト
Search
ドキュメントセンター

PolarDB:概要

最終更新日:May 29, 2024

PolarDB-X 1.0は、データベースシャーディングとテーブルシャーディングの両方をサポートするデータベースサービスです。 このトピックでは、PolarDB-X 1.0のシャーディング関数について説明します。

シャーディング法

PolarDB-X 1.0では、論理テーブルのシャーディング方法は、シャーディング関数とシャーディングキー (キーのMySQLデータ型を含む) によって定義されます。 シャーディング関数には、シャードの数とルーティングアルゴリズムが含まれます。 PolarDB-X 1.0の論理テーブルのデータベースシャードとテーブルシャードは、同じシャーディング関数とシャーディングキーが使用されている場合にのみ、同じシャーディング方法で生成されます。 データベースシャードとテーブルシャードが同じシャーディング方法で生成されている場合、PolarDB-X 1.0は、シャーディングキーの値に基づいて一意の物理データベースシャードと物理テーブルシャードを見つけることができます。 論理テーブルのデータベースシャーディングとテーブルシャーディングに使用されるシャーディング方法が異なり、SQL文でデータベースシャーディングとテーブルシャーディングに条件が指定されていない場合、PolarDB-X 1.0はすべてのデータベースシャードまたはすべてのテーブルシャードをスキャンしてデータを照会します。

データベースシャーディングとテーブルシャーディングのサポート

シャーディング機能説明サポートデータベースshardingサポートテーブルsharding
ハッシュ単純なモジュロ演算を実行します。
STR_HASH部分文字列を返します。
UNI_ハッシュ単純なモジュロ演算を実行します。
右_シフトデータベースシャードキーの値に対して、符号付き右シフトを実行します。
レンジ_ハッシュ2つのシャーディングキーが必要なときにハッシュを実行します。
MM月ごとにハッシュを実行します。任意
DD日付によるハッシュを実行します。任意
週ごとにハッシュを実行します。任意
MMDD月と日付によるハッシュを実行します。任意
YYYYMM年と月ごとにハッシュを実行します。
YYYYWEEK年と週ごとにハッシュを実行します。
YYYYDD年と日付でハッシュを実行します。

グローバルセカンダリインデックスのサポート

  • PolarDB-X 1.0は、グローバルセカンダリインデックスをサポートしています。 データストレージに関して、各GSIは、インデックスデータを格納する論理テーブルに対応します。 このテーブルをインデックステーブルと呼ぶ。
  • PolarDB-X 1.0では、GSIの作成時にインデックステーブルのシャーディングメソッドを指定することもできます。 インデックステーブルと通常の論理テーブルは同じシャーディング機能をサポートします。 詳細については、「グローバルセカンダリインデックスの使用」をご参照ください。

サポートしているデータ型

シャーディング機能データ型
INTビギントMEDIUMINTSMALLINTTINYINTVARCHARCHAR日付DATETIMEタイムスタンプ他のタイプ
ハッシュ××××
UNI_ハッシュ××××
レンジ_ハッシュ××××
右_シフト××××××
STR_HASH×××××××××
MM××××××××
DD××××××××
××××××××
MMDD××××××××
YYYYMM××××××××
YYYYWEEK××××××××
YYYYDD××××××××

シャーディング関数の構文

PolarDB-X 1.0は、MySQLのデータ定義言語 (DDL) テーブルステートメントと互換性があります。 また、次のステートメントに示すように、データベースシャーディングとテーブルシャーディングのdrds_partition_optionsキーワードも提供します。

CREATE [一時] TABLE [存在しない場合] tbl_name
    (create_definition,...)
    [table_options]
    [drds_partition_options]
    [partition_options]

作成 [一時] テーブル [存在しない場合] tbl_name
    [(create_definition,...)]
    [table_options]
    [drds_partition_options]
    [partition_options]
    select_statement

drds_partition_options:
    DBPARTITIONによる
        { {HASH | YYYYMM | YYYYWEEK | YYYYDD |...}([列])}
        [TBPARTITION BY]
            { {HASH | MM | DD | WEEK | MMDD | YYYYMM | YYYYWEEK | YYYYDD |...}(列)}
          [TBPARTITIONS num]
        ]