2010-12-16 2 views
13

記事から記事にジャンプすると、どこでも「バルクロード」という表現が見えます。「バルクロード」とはどういう意味ですか?

それは本当に(技術的に)何を意味するのでしょうか?

これは何を意味しますか?

ユースケースに基づく説明は大歓迎です。

答えて

18

インデックスは通常、1度に1つのローを挿入するために最適化されています。大量のデータを一度に追加する場合は、一度に1行ずつ挿入するのは非効率的な場合があります。たとえば、Bツリーの場合、単一のキーを挿入する最適な方法は、空のインデックスに多数のデータを追加するという非常に貧弱な方法です。

代わりに、あなたはBツリーと異なる戦略を追求しています。すべてのデータを事前にソートし、ブロック単位でグループ化します。ブロックをツリーノードに変換することによって、新しいBツリーを構築することができます。どちらの手法も同じ漸近性能O(n log(n))を持っていますが、バルクロード演算の方がはるかに小さくなります。

6

バルク・ロードは、「大きな塊」に(典型的にはデータベースに)データをロードする方法です。顧客や購入注文、在庫品​​目の情報を一度に1つずつシステムに入力する場合、バルクローディングでは、同じ種類の情報をファイルに取り込み、短時間で数百万/数千万件のレコードを読み込みます。

あなたは別のDBMSの一種から変換する場合は、古いDBから新しいDBにすべての情報を入力しないように望んでいるだろう。その代わりに、古いDBの情報を、新しいDBで簡単に読み取ることができる形式のファイルにダンプし、そのデータを新しいDBにインポートします。

2

バルクロードが/エクスポートに大量のデータをインポートするために使用されているもの(とにかく35Kの足のレベルで、)バルクロード伴います。通常、バルク操作はログに記録されず、トランザクションの整合性は期待どおりに機能しない可能性があります。多くの場合、一括操作はトリガーや制約のような整合性チェックをバイパスします。これにより、大量のデータではパフォーマンスが大幅に向上します。覚えておくべき

1

ことの一つは、バルク・ロードは、ソースからターゲットへのデータの内容は同じですが、ソースシステムが黙認されている場合、これが唯一の真実であることを意味していることです。任意のデータソースに対して、特に大きなデータの場合は、ソースデータが読み込まれ、データ転送が行われた後にソースデータが変更される可能性があります。伝統的に、オンラインシステムは、ソースと一致するタイムキャプチャが必要な正確なポイントが必要な場合、オフラインになるか更新を中断する必要があります。