0

Oracle から VoltDB に移行していますが、すべてのビジネス ロジック (移行されたストアド プロシージャ) をデータベース内に配置する必要がありますか? それは最大のパフォーマンスを得るためのベストプラクティスですか?

4

1 に答える 1

1

VoltDBで働いています。あなたの質問に対する正解は 1 つではありません。それは特定のスキーマと手順に依存しますが、VoltDB のストアド プロシージャと Oracle との違いについて少し説明できます。

まず、VoltDB は Oracle のような汎用データベースではありませんが、OLTP および「高速データ」ワークロードに高いパフォーマンスとスケーラビリティを提供するように特別に設計されています。通常、これらのワークロードには小さなレコード セットでの個別のトランザクションが含まれますが、その速度は 1 秒あたり数千から数百万になります。ユースケースは、高速で移動するデータセットでのリアルタイム分析の提供から、ストリーミングデータの変換と強化、大規模なインタラクティブアプリケーションへのデータ駆動型の決定を伴うことが多い低レイテンシーの応答の提供まで、多岐にわたります。

VoltDB の手順は通常、アトミックな変更をレコードの小さなセットに適用することに重点を置いており、イベント駆動型の変更をリアルタイムで行うのに対して、Oracle でよく見られるように大量のデータに対してバッチ処理を実行するために使用されることがよくあります。VoltDB は、UPSERT を含むスキーマ内の各テーブルに対して CRUD スタイルのプロシージャを自動的に生成します。DDL で単一 SQL ステートメントのプロシージャーを宣言できます。複数の SQL ステートメントと制御フロー ロジックを含むプロシージャは、データベース上で実行される単純な Java クラスとして記述されます。VoltDB は、ネイティブ言語のクライアント ライブラリまたは JDBC または ODBC ドライバーを使用して、または組み込みの HTTP-JSON インターフェイスを介して、クライアントから直接送信されるアドホック SQL ステートメント (ANSI SQL-92 互換) もサポートします。

Oracle のストアド プロシージャが OLTP 操作用である場合、VoltDB プロシージャに多少直接変換される場合があります。データに対してバッチ操作を一括で実行している場合、多くの場合、これらのプロセスを再設計して、同じ結果を段階的に生成するイベント駆動型のリアルタイム プロセスにすることができます。それでも長時間実行するバッチとして実行する必要がある場合は、通常、クライアント プロセスによって駆動される個別のより個別の手順に分割されます。

于 2014-10-10T13:56:57.207 に答える