.png/500px-ColumnFamily_(data_store).png)
標準列ファミリは、関連データの列を含むNoSQLオブジェクトです。これは、キーと値のペアで構成されるタプル(ペア) であり、キーは列のセットである値にマップされます。リレーショナル データベースと同様に、標準列ファミリは「テーブル」であり、各キーと値のペアは「行」です。[1]各列は、列名、値、およびタイムスタンプで構成されるタプル(トリプレット) です。[2]リレーショナルデータベース テーブルでは、このデータは、他の関連のないデータとともにテーブル内にグループ化されます。[3]
標準列ファミリーは、名前でソートされた列コンテナであり、行キーで参照およびソートできます。[4]
利点
分散 データ ストア内のデータがテーブル形式で保存されている場合、そのデータへのアクセスはコストがかかり (時間がかかります) ます。また、リレーショナル テーブルの行を構成するすべての列ファミリを読み取って 1 つの行にまとめるのは、データが多数のノードに分散されているため、非効率的です。そのため、ユーザーは必要な関連情報のみにアクセスします。
たとえば、リレーショナル テーブルは、UID、名、姓、生年月日、性別などの列で構成できます。分散データ ストアでは、同じテーブルを「UID、名、姓」、「生年月日、性別」などの列ファミリを作成することで実装できます。リレーショナル データベースのクエリで 1950 年から 1960 年の間に生まれた男性のみが必要な場合は、テーブル全体を読み取る必要があります。分散データ ストアでは、残りの情報は無関係であるため、2 番目の標準列ファミリのみにアクセスすれば十分です。
並べ替えとクエリ
分散データ ストアでは、列を並べ替えたり、任意のクエリを実行したりすることはできません。列は、列ファミリに追加されたときに並べ替えられます。並べ替えの方法は属性によって定義されます。たとえば、Apache Cassandraでは、次の値を持つことができる属性によって並べ替えが行われます。
CompareWith
AsciiTypeBytesTypeLexicalUUIDTypeLongTypeTimeUUIDTypeUTF8Type
ユーザー定義のソート属性を追加することも可能です。このソート方法を使用すると、処理が非常に速くなります。[5]
標準の列ファミリーと行
標準列ファミリはスキーマレスな性質を持っているため、各「行」には異なる数の列を含めることができ、各行に異なる列名を含めることもできます。[6]そのため、リレーショナルデータベース管理システム (RDBMS)の行とは非常に異なる概念です。これが、経験豊富な RDBMS の専門家にとってこの概念が簡単ではない理由の 1 つです。
例
JSONのような表記法では、列ファミリーの定義は次のようになります。[6]
UserProfile = { Cassandra = { emailAddress : "cassandra@apache.org" 、年齢: 20 }, TerryCho = { emailAddress : "terry.cho@apache.org" 、性別: "男性" }, Cath = { emailAddress : "cath@apache.org" 、年齢: 20 、性別: "女性" 、住所: "ソウル" }, }
ここで、「Cassandra」、「TerryCho」、「Cath」は行キーに対応し、「emailAddress」、「age」、「gender」、「address」は列名に対応します。
参照
参考文献
- ^ 「列ファミリ 101」。Max の出力。2010 年 11 月 2 日時点のオリジナルよりアーカイブ。2011 年 3 月 18 日閲覧。
- ^ Max の出力 (2010 年 7 月 9 日)。「Cassandra データ モデルの簡単な紹介: 1) Cassandra はキーと値のモデルに基づいています」。Max Grinev。2011年 3 月 18 日取得。
標準の列ファミリは、キーと値のペアのセットです。用語がわかりにくいことは承知していますが、これまでのところは基本的なキーと値のモデルにすぎません。リレーショナル データベースに例えると、標準の列ファミリをテーブル、キーと値のペアをテーブル内のレコードと考えることができます。
- ^ 「列ファミリ 101」。Toad for Cloud。2011年 3 月 18 日閲覧。
- ^ 「Cassandra のデータ モデル チート シート: 標準列ファミリ」。Chaker Nakhli のブログ - Yet another technical blog 。2011-03-29取得。
名前でソートされた列のコンテナー。列ファミリは行キーによって参照およびソートされます。
- ^ 「Java による Apache Cassandra のインストールと使用 パート 3 (データ モデル 2)」。 Sodeso - ソフトウェア開発ソリューション。2011 年 3 月 30 日取得。
ソートは ColumnFamily CompareWith 属性で指定できます。選択できるオプションは次のとおりです (カスタム ソート動作を作成することもできますが、これについては後で説明します)。BytesType、UTF8Type、LexicalUUIDType、TimeUUIDType、AsciiType、LongType
- ^ ab Terry (2010-03-22). 「Apache Cassandra クイック ツアー」。Terry.Cho のブログ。2011-03-25に取得。
興味深いことの 1 つは、各行が異なるスキームを持つことができることです。Cassandra の行には、「emailAddress」、「age」列があります。TerryCho の行には、「emailAddress」、「gender」列があります。この特性は、「スキームレス」と呼ばれます (標準列ファミリ内の各行のデータ構造は異なる場合があります)。
外部リンク
- Apache Cassandra データモデル
