Cassandra-data-model
Cassandra-データモデル
Cassandraのデータモデルは、RDBMSで通常見られるものとは大きく異なります。 この章では、Cassandraがデータを保存する方法の概要を示します。
クラスタ
Cassandraデータベースは、一緒に動作する複数のマシンに分散されています。 最も外側のコンテナは、クラスタとして知られています。 障害処理のために、すべてのノードにレプリカが含まれており、障害が発生した場合はレプリカが担当します。 Cassandraは、クラスター内のノードをリング形式で配置し、データを割り当てます。
キースペース
キースペースは、Cassandraのデータの最も外側のコンテナーです。 Cassandraのキースペースの基本的な属性は次のとおりです-
- 複製係数-同じデータのコピーを受信するクラスター内のマシンの数です。
- レプリカ配置戦略-リングにレプリカを配置する戦略に他なりません。 単純な戦略(ラック対応戦略)、古いネットワークトポロジ戦略(ラック対応戦略)、ネットワークトポロジ戦略(データセンター共有戦略)などの戦略があります。
- 列ファミリ-キースペースは、1つ以上の列ファミリのリストのコンテナです。 列ファミリは、行のコレクションのコンテナです。 各行には順序付けられた列が含まれます。 列ファミリは、データの構造を表します。 各キースペースには、少なくとも1つ、多くの場合、多くの列ファミリがあります。
キースペースを作成する構文は次のとおりです-
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
次の図は、キースペースの概略図を示しています。
列ファミリー
列ファミリは、順序付けされた行のコレクションのコンテナです。 各行は、順番に列の順序付けられたコレクションです。 次の表は、列ファミリをリレーショナルデータベースのテーブルと区別するポイントを示しています。
Relational Table | Cassandra column Family |
---|---|
A schema in a relational model is fixed. Once we define certain columns for a table, while inserting data, in every row all the columns must be filled at least with a null value. | In Cassandra, although the column families are defined, the columns are not. You can freely add any column to any column family at any time. |
Relational tables define only columns and the user fills in the table with values. | In Cassandra, a table contains columns, or can be defined as a super column family. |
Cassandra列ファミリーには、次の属性があります-
- keys_cached -SSTableごとにキャッシュを保持する場所の数を表します。
- rows_cached -コンテンツ全体がメモリにキャッシュされる行の数を表します。
- preload_row_cache -行キャッシュに事前入力するかどうかを指定します。
- 注意-*列ファミリのスキーマが固定されていないリレーショナルテーブルとは異なり、Cassandraは個々の行にすべての列を強制しません。
次の図は、Cassandra列ファミリーの例を示しています。
カラム
列は、キーまたは列の名前、値、タイムスタンプの3つの値を持つCassandraの基本的なデータ構造です。 以下に列の構造を示します。
スーパーコラム
スーパー列は特別な列であるため、キーと値のペアでもあります。 ただし、スーパー列にはサブ列のマップが格納されます。
通常、列ファミリはディスク上の個々のファイルに保存されます。 そのため、パフォーマンスを最適化するには、同じ列ファミリで一緒にクエリを実行する可能性のある列を保持することが重要であり、ここではスーパー列が役立ちます。スーパー列の構造を次に示します。
CassandraおよびRDBMSのデータモデル
次の表に、CassandraのデータモデルとRDBMSのデータモデルを区別するポイントを示します。
RDBMS | Cassandra |
---|---|
RDBMS deals with structured data. | Cassandra deals with unstructured data. |
It has a fixed schema. | Cassandra has a flexible schema. |
In RDBMS, a table is an array of arrays. (ROW x COLUMN) | In Cassandra, a table is a list of “nested key-value pairs”. (ROW x COLUMN key x COLUMN value) |
Database is the outermost container that contains data corresponding to an application. | Keyspace is the outermost container that contains data corresponding to an application. |
Tables are the entities of a database. | Tables or column families are the entity of a keyspace. |
Row is an individual record in RDBMS. | Row is a unit of replication in Cassandra. |
Column represents the attributes of a relation. | Column is a unit of storage in Cassandra. |
RDBMS supports the concepts of foreign keys, joins. | Relationships are represented using collections. |