16

ここでの講義中に私が遭遇したこれらの2つのステートメントの違いと意味は何ですか?

1. Traditional databases enforce schema during load time.

2. Hive enforces schema during read time.
4

1 に答える 1

42

Hadoopやその他のNoSQL戦略が成功した理由の1つに触れているので、論文を取得することを期待していたかどうかはわかりませんが、ここにあります。データ分析の柔軟性と敏捷性は、大規模なデータ分析を一般的に容易にするという理由だけで、おそらく「データサイエンス」の爆発的な増加に貢献しています。

従来のリレーショナルデータベースは、スキーマを念頭に置いてデータを格納します。2番目の列が整数であること、40列あることなどを認識しています。したがって、事前にスキーマを指定し、十分に計画する必要があります。これは「書き込み時のスキーマ」です。つまり、データがデータストアに書き込まれるときにスキーマが適用されます。

Hive(場合によっては)、Hadoop、およびその他の多くのNoSQLシステムは、一般に「読み取り時のスキーマ」に関するものです。データストアからデータが読み取られるときにスキーマが適用されます。次の生のテキスト行について考えてみます。

A:B:C~E:F~G:H~~I::J~K~L

これを解釈する方法はいくつかあります。~区切り文字である場合もあれば、区切り文字である場合:もあります。知るか?読み取り時にスキーマがあれば、それは問題ではありません。データを書き込むときではなく、データを分析するときにスキーマを決定します。この例は、おそらくこのケースに遭遇することはないという点で少しばかげていますが、うまくいけば意味がわかります。

スキーマの読み取りでは、データをデータストアにロードし、後で解析および解釈する方法を検討するだけです。この説明の核となるのは、読み取りのスキーマとは、最初にデータを書き込み、後でそれが何であるかを理解することを意味します。書き込み時のスキーマとは、データが最初に何であるかを把握し、その後に書き込むことを意味します。


ここにはトレードオフがあります。これらのいくつかは主観的であり、私自身の意見です。

書き込み時のスキーマの利点:

  • 安静時のデータに対して行われるより良い型安全性とデータクレンジング
  • データはすでに解析されているため、通常はより効率的です(ストレージサイズと計算上)

書き込み時のスキーマの欠点:

  • データを保存する前に、スキーマが何であるかを事前に計画する必要があります(つまり、ETLを実行する必要があります)
  • 通常、元のデータを破棄しますが、取り込みプロセスにバグがある場合は問題になる可能性があります
  • 同じデータの異なるビューを持つことはより困難です

読み取り時のスキーマの利点:

  • ロード時にデータがどのように解釈されるかを定義する際の柔軟性
    • これにより、時間が経つにつれて「スキーマ」を進化させることができます。
    • これにより、「スキーマ」のさまざまなバージョンを使用できます
    • これにより、1つのデータ形式に統合することなく、元のソースデータ形式を変更できます。
  • 元のデータを保持することができます
  • 何をすべきかを知る前にデータをロードすることができます(したがって、データを地面に落とさないでください)
  • 構造化されていない、クリーンでない、および/または組織化されていないデータを保存できる柔軟性を提供します

読み取り時のスキーマの欠点:

  • 毎回データを再解析して再解釈する必要があるため、通常は効率が低下します(これは、XMLなどの形式ではコストがかかる可能性があります)
  • データは自己文書化されていません(つまり、スキーマを見てデータが何であるかを理解することはできません)
  • エラーが発生しやすく、分析ではダーティデータを考慮する必要があります
于 2012-08-01T17:32:54.997 に答える