5種類のデータベースストレージモデル(行、列、キー値、ドキュメント、グラフ)

5種類のデータベースストレージモデル(行、列、キー値、ドキュメント、グラフ)

行ストレージ

定義:リレーショナルモデルは、ストレージにレコード(行またはタプル)を使用します。レコードは、スキーマによって定義されたテーブルに格納されます。テーブルの各列には名前とタイプがあり、テーブルのすべてのレコードはテーブルの定義に準拠している必要があります。SQLは、テーブル結合(結合)などの条件を満たすレコードを検索するための対応する構文を提供する特別なクエリ言語です。テーブル結合では、テーブル間の関係に基づいて、複数のテーブル間のレコードをクエリできます。

ストレージ形式:行データベースは、データ値を1つの行に一緒に保存してから、次の行にデータを保存します。

たとえば、次の表は次のとおりです。

EmpID 苗字 ファーストネーム 給料
1 スミス ジョー 40000
2 ジョーンズ メアリー 50000
3 ジョンソン キャシー 44000

特徴:スペース割り当てのための銀行関連のストレージアーキテクチャによると、それは主に小さなバッチデータ処理に適しており、オンライントランザクションデータ処理によく使用されます。後者の3つの要件は満たすことができません。データベースの高い同時読み取りおよび書き込み要件、大量のデータに対する高効率のストレージとアクセスの要件、およびデータベースの高いスケーラビリティと高い可用性です。1つの文は、分散型の高い同時実行性と大量の処理には適していません。

カラムストア

定義:柱状データベースとは何ですか?柱状データベースは、データストレージ用の列関連のストレージアーキテクチャを備えたデータベースです。列ストレージは、すべてのデータをストリーム内の列に格納します。これは、主にバッチデータ処理とアドホッククエリに適しています。

ストレージ形式:

列データベースは、データ値を1つの列にまとめて保存し、次の列にデータを保存します。

1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;

機能:クエリが読み取るブロックが少ないため、高速クエリが含まれます。同じタイプの列が一緒に格納されるため、データ圧縮率が高くなります。読み込みが速いです。データモデリングの複雑さを簡素化します。ただし、挿入の更新は遅く、データが常に変化するのには適していません。列に格納されます。現時点では、DSS(意思決定支援システム)に適しており、BI、データマート、データウェアハウスに最適であり、OLTPには適していません。

例としては、Sybase IQ、C-Store、Vertica、VectorWise、MonetDB、ParAccel、Infobrightなどがあります。

http://en.wikipedia.org/wiki/Column-ientified_DBMSを参照してください

キーバリューストア

つまり、Key-Valueストレージ、略してKVストレージです。これはNoSQLストレージの方法です。そのデータは、キーと値のペアの形式で編成、索引付け、および保存されます。KVストレージは、データ関係やビジネス関係が多すぎないビジネスデータに非常に適しています。同時に、ディスクへの読み取りと書き込みの数を効果的に削減でき、SQLデータベースストレージよりも読み取りと書き込みのパフォーマンスが向上します。

ソートされた文字列テーブルの典型的な例はSSTableです。実際、STLライブラリのmapとhash_map、Javaのhash_tableとhash_mapはキー値ストレージです。しかし、それらの値はメモリ操作のみをサポートし、マップのクエリ効率は低すぎます。重要なのは、それらが単純なデータ構造であり、大規模な保存と配布を実現できず、データ変更の効率が比較的低いことです。SSTalbeはこれらの問題を解決します。

キー値ストレージは、実際には一種の分散テーブルシステムです。

実装メカニズムは、

LevelDB / Sstable:http://blog.chinaunix.NET/uid-26111972-id-3342215.html

LevelDB:http//www.samecity.com/blog/Index.asp? SortID = 12

ドキュメントストレージ

ドキュメントストレージは、構造化データへのアクセスをサポートします。リレーショナルモデルとは異なり、ドキュメントストレージには必須のアーキテクチャはありません。

実際、ドキュメントストレージは、パッケージ化されたキーと値のペアの形式で保存されます。この場合、アプリケーションは、取得するパッケージにいくつかの規則を採用するか、ストレージエンジンの機能を使用して、さまざまなドキュメントをさまざまなセットに分割してデータを管理します。

リレーショナルモデルとは異なり、ドキュメントストレージモデルはネストされた構造をサポートします。たとえば、ドキュメントストレージモデルはXMLおよびJSONドキュメントをサポートし、フィールドの「値」をネストして他のドキュメントを保存できます。ドキュメントストレージモデルは、配列と列値キーもサポートします。

キー値ストレージとは異なり、ドキュメントストレージはドキュメントの内部構造を考慮します。これにより、ストレージエンジンはセカンダリインデックスを直接サポートできるようになり、任意のフィールドで効率的なクエリが可能になります。ドキュメントのネストされたストレージをサポートする機能により、クエリ言語はネストされたオブジェクトを検索できるようになります。XQueryはその一例です。MongoDBは、クエリでのJSONフィールドパスの指定をサポートすることにより、同様の機能を実現します。

MongoDBは、SQLとACIDをサポートするより包括的なデータベースです。ただし、それはログの収集と保存、小さなファイルの分散ストレージ、およびインターネットマイクロブログアプリケーションと同様のデータストレージに関するものです。

MongoDBとCassandraの比較:http
//www.csdn.net/article/2013-08-23/2816679-time-series-data-mongdb-vs-cassandra

グラフィックデータ

グラフデータベースには頂点とエッジの情報が格納され、コメントの追加をサポートするものもあります。

グラフデータベースを使用して、ソーシャルグラフや実世界のさまざまなオブジェクトなどをモデル化できます。IMDB(Internet MovieDatabase)サイトのコンテンツは、俳優と映画が絡み合った複雑なイメージを構成しています。

グラフデータベースのクエリ言語は、通常、グラフ中断ポイントのパス、またはエンドポイント間のパスの属性を見つけるために使用されます。Neo4jは典型的なグラフデータベースです。

おすすめ

転載: blog.csdn.net/killingbow/article/details/53809379