カタログ、データベース、テーブル
StarRocks は内部カタログを使用して内部データを管理し、外部カタログを使用してデータレイク内の外部データにアクセスします。StarRocks に保存されているデータは、1つ以上のデータベースからなる内部カタログ内で管理されます。データベースは、データを保存、管理、操作するために、テーブル、マテリアライズドビュー、ビューなどのさまざまなオブジェクトを管理します。StarRocks は、オブジェクトに対する操作を行うユーザーの権限を制御する権限システムを採用しており、データセキュリティを強化しています。
カタログ
カタログは、内部カタログと外部カタログに分類されます。各クラスターには、1つ以上のデータベースを含むことができる唯一の内部カタログ default_catalog
があります。StarRocks クラスターの内部カタログは、クラスターにロードされたデータとマテリアライズドビューを管理します。StarRocks はデータウェアハウスとしてデータを保存するのに適しており、特に大規模データに対する複雑なクエリアナリティクスにおいてクエリパフォーマンスを大幅に向上させます。
一方、外部カタログは、データレイク内の外部データへのアクセスを可能にします。StarRocks をクエリエンジンとして使用し、データを StarRocks にロードせずに直接レイク内のデータをクエリできます。
データベース
データベースは、データを保存、管理、操作するためのテーブル、ビュー、マテリアライズドビューなどのデータオブジェクトの集合です。
テーブル
テーブルは、内部テーブルと外部テーブルに分類されます。
内部テーブル
内部テーブルは内部カタログで管理されます。内部テーブルのデータは StarRocks に保存されます。内部テーブルは内部カタログの下のデータベースで管理されます。内部テーブルは行と列で構成され、各行はレコードを表し、各列はデータ行の属性またはフィールドを表します。
ここでの内部テーブルの行と列は論理的な概念です。StarRocks はテーブルに列指向(カラムナ)ストレージを使用しています。物理的には、列内のデータはデータブロックに分割され、エンコード、圧縮され、ディスクに永続的に保存されます。
StarRocks は、Primary Key tables、Duplicate Key tables、Aggregate tables、Unique Key tables の4種類の内部テーブルを提供しており、生データ、リアルタイムデータ、集計データなど、さまざまなビジネスニーズに対応するデータを保存できます。
内部テーブルは、パーティショニング + バケッティングという2層のデータ分散戦略を採用しており、均等なデータ分散を実現しています。さらに、各バケットのレプリカは BEs 間で均等に分散され、高いデータ可用性を保証します。
外部テーブル
外部テーブルは外部カタログで管理されます。外部テーブルのデータは実際には外部データソースに保存されています。StarRocks はこれらの外部テーブルのメタデータのみを保存し、外部データソースからデータをクエリするためにこれらのテーブルを使用できます。
マテリアライズドビュー
マテリアライズドビューは、1つ以上のベーステーブルからの事前計算されたクエリ結果を保持する特別な物理テーブルです。マテリアライズドビューは、同期マテリアライズドビューと非同期マテリアライズドビューに分類されます。非同期マテリアライズドビューは、複数のベーステーブル(内部テーブルと外部テーブル)からの事前計算結果を保存でき、さまざまな集計演算子をサポートするため、より強力です。ベーステーブルに対して複雑なクエリが実行されると、StarRocks はマテリアライズドビューに保存された事前計算結果を自動的に再利用し、透明なクエリアクセラレーションを実現し、データレイクでのクエリを加速し、データモデリングを確立します。
ビュー
ビュー、または論理ビューは、データを保持しない仮想テーブルです。ビューは、他の既存の物理テーブルに対するクエリの結果としてのデータのみを表示します。ビューを定義するクエリは、クエリ内でビューが参照されるたびに実行されます。
権限
権限は、どのユーザーがどのオブジェクトに対してどの操作を行えるかを決定します。StarRocks は、アイデンティティベースのアクセス制御とロールベースのアクセス制御の2種類の権限モデルを採用しています。最初に権限をロールに割り当て、次にロールをユーザーに割り当てることができます。この場合、権限はロールを通じてユーザーに渡されます。または、ユーザーのアイデンティティに直接権限を割り当てることもできます。
ストレージとコンピュートの分離アーキテクチャにおけるデータストレージ
バージョン 3.0 以降、StarRocks は新しいストレージとコンピュートの分離(共有データ)アーキテクチャを導入しました。データストレージは BEs から分離されています。データはリモートのオブジェクトストレージまたは HDFS に永続的に保存され、ローカルディスクはホットデータのキャッシュに使用され、クエリを加速します。