Upgrade to Pro — share decks privately, control downloads, hide ads and more …

3. ScalarDB Cluster Deployment - ScalarDB Objects

3. ScalarDB Cluster Deployment - ScalarDB Objects

本スライドは、「ScalarDB Cluster」の設定において必要となる構成要素(オブジェクト)について解説する資料です。

ScalarDBを構成する「Storages」「Namespaces」「Tables」「Partitions」「Records」の階層構造や、バックエンドデータベースとのマッピングについて体系的に学ぶことができます。また、大規模データ環境に向けたパーティション分割テーブルの特徴や、ScalarDBが独自に管理するシステムネームスペースの役割についても詳しく説明しています。

【主な内容】
・ScalarDBオブジェクトの概要と階層構造
・StoragesとDatabases、およびNamespacesとの関係性
・単一テーブルとパーティション分割されたテーブルの比較(メリット・デメリット)
・パーティションテーブルへのレコード格納の仕組み
・システムネームスペース(coordinator, scalardb)と各種システムテーブル(coordinator.state, scalardb.metadata)の役割

ScalarDBのデータモデリングや運用設計を行う際の参考資料としてご活用ください。

Avatar for Scalar, Inc.

Scalar, Inc. PRO

May 14, 2026

More Decks by Scalar, Inc.

Other Decks in Technology

Transcript

  1. 3 変更履歴 Version Date Name Supported products and versions Description

    1.0 2025-02-21 Satoshi Hikida ScalarDB Cluster 3.15.1 First draft 1.1 2025-05-15 Yuji Ochiai ScalarDB Cluster 3.15.1 Re-edited
  2. ScalarDB オブジェクトの概要 Storage (database) Namespace Table Namespace Table Namespace Table

    Table Table Partition 5 ScalarDB オブジェクトの階層構造 Storages(databases) Namespaces Tables Partitions Records
  3. Storages(databases) Namespaces Tables Partitions Records ScalarDB オブジェクトの概要 PostgreSQL postgres Storage

    Database Mapping Storage Name: postgres storage=jdbc contact_points=jdbc:postgresql: ... username=scalaradmin password=scalaradmin 6 ストレージ名には、任意の名称を設定できます。 例: storage_postgres, st_postgres, st_div1, etc. StoragesとDatabases
  4. Storages(databases) Namespaces Tables Partitions Records ScalarDB オブジェクトの概要 postgres Storage Namespace

    Single Storage - Single Namespace 8 StoragesとNamespaces 単⼀のストレージで単⼀のネームスペースを管理 ✔
  5. Storages(databases) Namespaces Tables Partitions Records ScalarDB オブジェクトの概要 postgres Storage Namespace

    postgres Storage Namespace Namespace Namespace Single Storage - Single Namespace Single Storage - Multiple Namespaces 9 StoragesとNamespaces 単⼀のストレージで複数のネームスペースを管理 ✔
  6. Storages(databases) Namespaces Tables Partitions Records ScalarDB オブジェクトの概要 postgres Storage Namespace

    postgres Storage Namespace Namespace postgres Storage cassandr a Storage Namespace Namespace Namespace Namespace Namespace 単⼀ストレージで単⼀ネームスペース 単⼀ストレージで複数ネームスペース ストレージ毎に複数のネームスペース 10 StoragesとNamespaces
  7. Storages(databases) Namespaces Tables Partitions Records Namespace NS Namespace 11 NS

    Table NamespacesとTables 1つのネームスペース内で1つ以上のテーブルを管理 ScalarDB オブジェクトの概要
  8. 特性 すべてのデータが 1つのテーブル に格納される。 クエリの実⾏時に 全データを対象 に検索‧処理する。 シンプルな設計で、管理が容易。 メリット ✅

    設計が簡単 ‒ テーブル構造が単純で、管理しやすい。 ✅ クエリが直感的でシンプルな検索が可能。 ✅ ⼩規模データに適している。 デメリット ❌ パフォーマンスの低下 ‒ データ量が増えると、検索や更新の速度が低下す る。 ❌ スケーラビリティが低い ‒ ⼤規模データでは、インデックスの管理やI/O負荷 が増⼤。 ❌ メンテナンスが難しくなる ‒ 古いデータの削除やアーカイブが⼿間になる。 12 単⼀テーブル 特性 データを 複数のパーティション に分割して管理。 クエリ実⾏時に 特定のパーティションのみを検索 できる。 データの分散により、パフォーマンス向上が期待できる。 メリット ✅ 検索速度の向上 ‒ 必要なパーティションのみを検索するため、クエリの処理速 度が向上。 ✅ スケーラビリティが⾼い ‒ データ量が増えても、パーティション単位で管理で きるため、負荷分散が可能。 ✅ ディスクI/Oの分散 ‒ 異なるディスクにパーティションを配置することで、並 列処理が可能。 デメリット ❌ 設計が複雑 ‒ パーティションキーの選定や管理が必要。 ❌ INSERTの負荷 ‒ データの振り分け処理が発⽣するため、INSERTの速度が低下 することがある。 ❌ パーティション間のクエリが複雑 ‒ 複数のパーティションをまたぐ検索では、 最適化が必要。 パーティション分割されたテーブル ScalarDB のテーブル
  9. 単⼀テーブル ❌ パフォーマンスの低下 ‒ データ量が増えると、検索や更新の速 度が低下 ❌ スケーラビリティが低い ‒ ⼤規模データでは、インデックスの

    管理やI/O負荷が増⼤ パーティション分割されたテーブル ✅ 検索速度の向上 ‒ 必要なパーティションのみを検索するため、 クエリの処理速度が向上 ✅ スケーラビリティが⾼い ‒ データ量が増えても、パーティショ ン単位で管理できるため、負荷分散が可能 ✅ ディスクI/Oの分散 ‒ 異なるディスクにパーティションを配置 することで、並列処理が可能 パーティション分割された テーブル 単⼀テーブル 13 ⼤規模データ環境では ※図はイメージで、実際のパーティショニングとは異なります。 ScalarDB のテーブル
  10. Partition 対象テーブル: Insertしたいレコード: 14 パーティションテーブルへのレコード格納イメージ pk value er6p9a553sgu 494 pk

    value 6t42bjgnnck9 477 nseusupe5i8p 473 9uhn8buimdwt 989 6jtg5aftcys7 806 9xyyzy27z5x3 749 Partition Partition pk value 6t42bjgnnck9 993 nseusupe5i8p 962 9uhn8buimdwt 616 6jtg5aftcys7 570 9xyyzy27z5x3 922 pk value 6t42bjgnnck9 753 nseusupe5i8p 427 9uhn8buimdwt 800 6jtg5aftcys7 327 er6p9a553sgu 494 f(x): Hash Function 1.レコード追加操作 2.パーティションキーから、 ハッシュ値を計算、格納先 パーティションを決定 3.パーティションに格納 ScalarDB のテーブル
  11. Namespace NS Namespace 15 NS  Table 0 1 0 0

    4 902 0 1 0 1 5 3 0 1 1 0 6 470 0 1 1 1 7 121 PartitionsとRecords この図の例では、p1, p2をPartitionKey、c1, c2をClusteringKeyとしています。 レコードは、パーティションキーを使ってレコードを分割管理します。 ※ パーティショニングの有効‧無効はバックエンドデータベースに依存します。 p1 p2 c1 c2 si v 0 0 0 0 0 494 0 0 0 1 1 809 0 0 1 0 2 529 0 0 1 1 3 675 レコード • Primary keyにより⼀意に特定 • Primary key:Partition key+Clustering key Partition keyとClustering keyは、単⼀ or 複数のカラムで指定可能 ScalarDB オブジェクトの概要 Storages(databases) Namespaces Tables Partitions Records
  12. ScalarDB管理されるネームスペース coordinator scalardb ユーザ管理ネームスペース There is only one coordinator namespace

    in the system. scalardb metadata NS point summary NS history システムネームスペースとテーブル 17 coordinator state scalardb metadata NS NS shopping order NS item stock Storage NS NS Storage other system tables other system tables
  13. Storage システムネームスペースとテーブル 18 coordinator NS state state tx_id tx_state tx_created_at

    15c4f4cb... committed 5/17/2024 24508ce2... committed 5/18/2024 2bf811b1... committed 5/19/2024 2d9599ca... aborted 5/20/2024 32f3073f... committed 5/21/2024 coordinator.state coordinator.stateテーブル • すべてのトランザクション状態を⼀元管理 • 中断されたトランザクションの状態を回復 するためにも利⽤ coordinatorストレージに関する推奨事項 • ⾼可⽤性 • 良好なパフォーマンス • ⼗分な容量
  14. scalardb NS システムネームスペースとテーブル 19 metadata metadata full_table_name column_name data_type key_type

    ... coordinator.state tx_created_at BIGINT coordinator.state tx_id TEXT PARTITION coordinator.state tx_state INT shopping.order order_id TEXT PARTITION shopping.order order_item_id TEXT CLUSTERING shopping.order order_qty INT Storage scalardb.metadata scalardb.metadata テーブル • ScalarDBが管理するテーブルのカラム情報を記録 coodinator.stateテーブル等、システムで利⽤するテーブル と、ユーザが定義したテーブルが同じストレージを利⽤す る場合、scalardb.metadata テーブルは、システム テーブ ルとユーザー テーブル両⽅のテーブル定義情報を管理