VoltDBパスは、1回の呼び出しで複数の挿入を実行します。C++ API

マーティ

現在、同じテーブルで(起動時ではなく)多数の挿入を実行する必要があるモデルがあります。とりあえず、C ++コード内に設定された挿入値を準備してから、挿入ストアドプロシージャを個別に呼び出します。

例えば

INSERT ... VALUES ('1','2')
INSERT ... VALUES ('3','4')
INSERT ... VALUES ('5','6')

(VoltDBとC ++クライアントを使用して)次のいずれかが可能かどうかを知りたいです。

1)バルクインサートを行います。

INSERT ... VALUES ('1','2'), ('3','4'), ('5','6')

または

2)カスタム区切り文字を含む配列または文字列をストアドプロシージャに渡し、それを内部で解析して、ストアドプロシージャ自体の内部で個々の挿入を呼び出します。

INSERT ... VALUES ('1,2|3,4|5,6') or similar

次に、プロシージャ内で文字列を分割します。

どちらかが可能であれば、例、または実装を容易にするC ++ API構文のいずれかを教えてください。(たとえば、文字列および/または文字列操作関数を解析するためのストアドプロシージャのループなど)

相対的なパフォーマンスをテストするために、これらのオプションの1つを試してみたいと思います。個々の挿入は十分に高速である必要があることを読みましたが、これはユースケースによって異なる可能性があると思います。

ベンジャミンバラード

テーブルのデフォルトの挿入プロシージャを呼び出すと、個々の挿入が高速になります。たとえば、「TABLENAME .insert」は、INSERT ... VALUESと同じ値を取りますが、AdHoc SQLパーサーをバイパスし、パーティションに直接ルーティングされます。これにより、行ごとに個別のプロシージャ呼び出しを使用してレコードを挿入するのに最高のパフォーマンスが得られます。

Javaクライアントには、テーブルの一括読み込みを容易にするAPIがあります。ここにサンプルチュートリアルがあります:https//github.com/VoltDB/voltdb/tree/master/examples/HOWTOs/bulkloader

データがCSVまたは区切りファイルに存在する場合は、同じバルクローダーAPIを使用するcsvloaderアプリケーションを利用できます。

C ++クライアントにはバルクローダーAPIの実装がないため、不可能ではありませんが、はるかに困難になります。

INSERT ... VALUES( '1'、 '2')、( '3'、 '4')、...の形式の一括挿入は、VoltDBではサポートされていません。

あなたが説明する他のアプローチが可能です。VoltTableを入力パラメーターとして受け取るJavaストアドプロシージャを記述し、C ++クライアントからJavaのVoltTableに対応するTableオブジェクトを作成できます。または、値の配列を渡すこともできます。ただし、VoltTableも配列も、プロシージャーのパーティション化キー・パラメーターにすることはできません。したがって、大規模な処理を実行しようとしている場合は、パーティションキーに個別のパラメーター値を設定する必要があり、すべて同じパーティションに属するレコードのセットを送信する必要があります。それは難しいかもしれません。最も簡単な方法は、独自の単純なハッシュ関数を作成することです。新しいレコードを生成または受信するときに、関数でそれらをハッシュしてバケットにグループ化し、これらのレコードのセットをデータベースにまとめて送信できます。パーティションキーとしてハッシュ値を使用します。ただし、このハッシュ値の列をテーブルに含める必要があります。したがって、同じハッシュ値を持つレコードは同じパーティションに属します。

開示:私はVoltDBで働いています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MySQL Connector C ++ APIで1回の関数呼び出しで複数のクエリを実行する適切な方法は何ですか?

分類Dev

Vimeo apiは、1回の呼び出しで複数のビデオのビデオ詳細を取得します

分類Dev

RXJS reduxobservableは複数のAPI呼び出しを実行します

分類Dev

Shopify API:1回の呼び出しでIDを介して複数のレコードを取得します

分類Dev

Laravelを使用した1回の呼び出しで複数のAPIリソース

分類Dev

複数のコンポーネントで1回API呼び出しを行う方法

分類Dev

複数のAPI呼び出しの1つの配列を返します

分類Dev

Graph Api 2.7を使用して、1回の呼び出しで複数の投稿の投稿インサイトを取得します

分類Dev

サイプレスはブラウザの外部でAPI呼び出しを実行します

分類Dev

複数のAPI呼び出し時に応答インターセプターを1回だけ実行する

分類Dev

1回のAPI呼び出しで複数のDocuSignエンベロープを作成して送信することは可能ですか?

分類Dev

機能的な方法で複数のAPI呼び出しを行う

分類Dev

Djangoを使用して、複数のAPI呼び出しを行い、ループで更新します

分類Dev

React-Nativeのフェッチを使用してComponentDidMount内で複数のAPI呼び出しを実行するにはどうすればよいですか?

分類Dev

1回のAPI呼び出しで複数のドキュメントをElasticに送信するにはどうすればよいですか?

分類Dev

1回のAPI呼び出しで複数のチェンジセットの詳細を取得できるTFSAPIに何かありますか?

分類Dev

Pythonリクエストで複数のAPI呼び出しを行う方法

分類Dev

NodeJでリクエストを使用して複数のAPI呼び出しを行う方法は?

分類Dev

Vert.x. update()への1回の呼び出しで複数の挿入を実行します

分類Dev

マニフェスト全体を1回のAPI呼び出しで適用することは可能ですか?

分類Dev

djangoで30分のAPI呼び出しを実行する方法

分類Dev

chakramとmochaを使用して複数のAPI呼び出しを実行するにはどうすればよいですか?

分類Dev

RxJava + Retrofit:複数のリクエスト呼び出しAPIで各リクエストを区別します

分類Dev

API呼び出しのJSONでは再生回数は常にnullですか?

分類Dev

1つのajaxで複数のAPIを呼び出す

分類Dev

Java APIを使用して1回の呼び出しで複数のファイルをGoogle Cloud Storageにアップロードする方法

分類Dev

REST APIへの複数の呼び出し、またはJavascriptを使用した大きな応答本文を使用した1つの呼び出し

分類Dev

複数のAPIリクエストをフェッチし、1回解析し、GoogleAppsスクリプトで実行します。

分類Dev

複数のAPIを呼び出してAngular6でサブスクライブする方法は?

Related 関連記事

  1. 1

    MySQL Connector C ++ APIで1回の関数呼び出しで複数のクエリを実行する適切な方法は何ですか?

  2. 2

    Vimeo apiは、1回の呼び出しで複数のビデオのビデオ詳細を取得します

  3. 3

    RXJS reduxobservableは複数のAPI呼び出しを実行します

  4. 4

    Shopify API:1回の呼び出しでIDを介して複数のレコードを取得します

  5. 5

    Laravelを使用した1回の呼び出しで複数のAPIリソース

  6. 6

    複数のコンポーネントで1回API呼び出しを行う方法

  7. 7

    複数のAPI呼び出しの1つの配列を返します

  8. 8

    Graph Api 2.7を使用して、1回の呼び出しで複数の投稿の投稿インサイトを取得します

  9. 9

    サイプレスはブラウザの外部でAPI呼び出しを実行します

  10. 10

    複数のAPI呼び出し時に応答インターセプターを1回だけ実行する

  11. 11

    1回のAPI呼び出しで複数のDocuSignエンベロープを作成して送信することは可能ですか?

  12. 12

    機能的な方法で複数のAPI呼び出しを行う

  13. 13

    Djangoを使用して、複数のAPI呼び出しを行い、ループで更新します

  14. 14

    React-Nativeのフェッチを使用してComponentDidMount内で複数のAPI呼び出しを実行するにはどうすればよいですか?

  15. 15

    1回のAPI呼び出しで複数のドキュメントをElasticに送信するにはどうすればよいですか?

  16. 16

    1回のAPI呼び出しで複数のチェンジセットの詳細を取得できるTFSAPIに何かありますか?

  17. 17

    Pythonリクエストで複数のAPI呼び出しを行う方法

  18. 18

    NodeJでリクエストを使用して複数のAPI呼び出しを行う方法は?

  19. 19

    Vert.x. update()への1回の呼び出しで複数の挿入を実行します

  20. 20

    マニフェスト全体を1回のAPI呼び出しで適用することは可能ですか?

  21. 21

    djangoで30分のAPI呼び出しを実行する方法

  22. 22

    chakramとmochaを使用して複数のAPI呼び出しを実行するにはどうすればよいですか?

  23. 23

    RxJava + Retrofit:複数のリクエスト呼び出しAPIで各リクエストを区別します

  24. 24

    API呼び出しのJSONでは再生回数は常にnullですか?

  25. 25

    1つのajaxで複数のAPIを呼び出す

  26. 26

    Java APIを使用して1回の呼び出しで複数のファイルをGoogle Cloud Storageにアップロードする方法

  27. 27

    REST APIへの複数の呼び出し、またはJavascriptを使用した大きな応答本文を使用した1つの呼び出し

  28. 28

    複数のAPIリクエストをフェッチし、1回解析し、GoogleAppsスクリプトで実行します。

  29. 29

    複数のAPIを呼び出してAngular6でサブスクライブする方法は?

ホットタグ

アーカイブ