ビデオ: What is a Columnar Database? 2024
NoSQLの列ストアは、従来のリレーショナルDBMSに初めて登場したときと似ています。行と列の概念はまだそこにあります。また、データベースにデータをロードする前に列ファミリを定義します。つまり、データの構造を事前に知っておく必要があります。
しかし、列ストアは、リレーショナルデータベースとは異なる方法でデータを整理します。高速アクセスのために行にデータを格納する代わりに、データは高速な列操作のために編成されます。この列中心のビューは、集計関数の実行や複数の列に一致するレコードの検索に、列ストアを理想的にします。
<! - 1 - >集計関数は、データの組み合わせまたは解析関数です。結果の数を数えたり、それらを合計したり、平均の平均を計算するなどの単純な操作が可能です。しかし、複雑なものになる可能性もあります(例えば、時間の重要な範囲を表す複雑な値を返すなど)。
列ストアは、共通の祖先であるGoogleのBigtableを反映して、Big TablesまたはBig Tableのクローンと呼ばれることもあります。
<!列ストアでは、各レコード(RDBMS内の行 )は単一の値を必要としないと考えられます列ごとに。代わりに、列ファミリをモデル化することは可能です。単一のレコードは、IDフィールド、「顧客」情報の列ファミリ、および「注文アイテム」情報のための別の列ファミリで構成されます。 これらの列ファミリはそれぞれ、複数のフィールドで構成されています。これらの列ファミリの1つは、それ自体が複数の「行」を持つことがあります。たとえば、注文明細情報には複数の行があります(各明細に1つずつ)。これらの行には、アイテムID、数量、単価などのデータが含まれます。
<! - 3 - >
RDBMSを介した列ストアの主な利点は、列ストアはフィールドが常に存在する必要はなく、RDBMSのように空白のパディングNull値を必要としないことです。この機能は、ディスクスペースを維持しながら、データの疎な問題を防ぎます。変数と疎なデータセットの例をここに示します。列ストアの優れた点は、RDBMSのように複雑なSQL(Structured Query Language)結合を使用するのではなく、単一のレコードIDを使用してすべての関連情報を取得できることです。しかし、これを行うには少し前向きのモデリングとデータ解析が必要です。
この例では、単一の列ストア行を選択することによってすべての注文情報を取得できます。つまり、開発者は列ストア内のクエリの複雑な結合構文を正確に認識する必要はありません。 RDBMSで複雑なSQL結合を使用する必要があります。したがって、複雑で可変的なリレーショナル・データ構造の場合、列ストアは、RDBMSの祖先よりもストレージで効率的であり、開発でエラーが発生しにくい可能性があります。
項目
列ファミリでは、各項目のIDがキー内で表され、値は注文数量であることに注意してください。この設定では、このアイテムIDを含むすべてのオーダーをすばやく参照することができます。 データフィールドが前面にあることがわかっていて、関連するデータを単一のレコードとしてすばやく検索する必要がある場合は、列ストアを検討してください。