KaiwuDB のアウトオブオーダーデータ処理機能の解釈

01 背景の概要

時系列データがデータベースに書き込まれるシナリオでは、ネットワーク遅延などの問題により、書き込まれるデータのタイムスタンプが、このタイプの書き込み済みデータの最大タイムスタンプよりも小さくなる場合があります。データは総称して順序外データと呼ばれます。順不同のデータの生成はほぼ避けられませんが、同時に、順不同のデータの書き込みはすべてのデータの並べ替えとクエリに影響を与えるため、順不同の書き込みをサポートする必要があります。データを順序付けするだけでなく、効率的なデータ クエリもサポートします。

02 プロセスの概要

順序不一致のデータを処理する場合、指定された時間枠 (10 分または 1 時間など) 内の順序不一致のデータは重複排除戦略に従って処理されて保存され、その時間外の順序不一致のデータは保存されます。ウィンドウは破棄されます。次の図は、順不同のデータを書き込む基本的なプロセスを示しています。

その中で、次の 3 つの重要な点を明確にする必要があります。

  • タイム ウィンドウは、テーブル内の最新のデータ タイムスタンプの時点よりも前の期間を指し、新しいデータがテーブルに書き込まれない場合、そのタイム ウィンドウは変更されません。
  • 構成ファイルには、ts_st_iot_disorder_interval というパラメーターがあります。これは、順不同のデータを書き込むための時間枠 (単位: 秒) をサポートするために使用されます。この構成項目の値は、パーティション間隔の値を超えることはできません。
  • データが不正であるかどうかを判断する基準は、書き込まれたデータのタイムスタンプが、書き込まれたテーブル オブジェクトに格納されているすべてのデータの最大タイムスタンプ以下であることです。    

03 シナリオ例

1. 通常の書き込みプロセス
時間は、システム時間とデータ時間の 2 つの行に分割されます。データ時間はテーブルごとに異なるため、テーブル 1 のデータ時間とテーブル 2 のデータ時間の 2 行に分かれています。

  • シナリオ 1: 2 日前のデータの連続書き込みのシナリオは、上の図に示すように、履歴パーティション 1 に連続的に書き込みます。書き込まれた連続データは、対応する履歴パーティションに保存されます。パーティションが失敗し、間違ったスローが行われます。

  • シナリオ 2: タイム ウィンドウ内で順不同のデータを書き込む 上の図に示すように、表 2 はタイム ウィンドウ内で順不同のデータを書き込みます。書き込まれたデータは、処理中のアクティブ パーティション 2 に保存されます。別のスレッドでは、書き込み操作も成功します。

  • シナリオ 3: 時間枠を超える順序どおりでないデータの書き込み データベースが圧縮機能をオンにし、順序どおりでない時間枠を 1 時間に構成すると、1 時間早い順序どおりでないデータが書き込まれます。テーブル内の最新のレコードのタイムスタンプよりも失敗します。書き込まれたデータはフィルタリングされて除外され、ログに書き込まれます。

2. データのインポート プロセス
インポートされたデータには順序が乱れているデータも含まれる場合があります。このシナリオでは、順序が乱れているデータの処理は、通常の書き込みプロセスと一致します。

  • データ自体の処理: CSV ファイル内のデータを 1 行ずつ解析し、データの最初の列が有効な時刻/タイムスタンプ タイプであるかどうかを判断し、有効な時刻データでない場合はエラーを返し、パーティションを決定します。データが属するパーティション bt を取得します。データのタイムスタンプが現在のパーティション内の既存データの最大タイムスタンプより大きい場合は、直接プッシュバックします。それ以外の場合は、順序が狂っているデータを重複排除構成ロジックに従って処理する必要があります。

  • ダウンサンプリングと事前計算のロジックを調整する: データのインポートのプロセス中に、インポートが完了した後、kaiwudb_jobs システム タスク テーブル内の URL のレコード ステータスを期限切れに更新し、事前計算/ダウンサンプリングを通知し、関連するデータを再計算/処理する必要があります。次のステップを待ちます。事前計算タスクは、システムによってスケジュールされたときに再計算されます。

インポートが完了すると、事前計算とダウンサンプリングが通知され、結果を再計算または更新し、lastbt を更新します。

3. ダウンサンプリング処理

アウトオブオーダーデータが書き込まれた後は、最新のデータに基づいてダウンサンプリング結果を更新する必要があります。

  • 履歴パーティションにインポートされた順序が狂ったデータの処理: 履歴パーティションに属する順序が狂ったデータをインポートするとき、kaiwudb_jobs システム タスク テーブルの url=[database/partition/table_name] のレコード ステータスを期限切れに更新します。その後、それに応じてパーティション テーブルが再ダウンロードされます。

  • 履歴パーティション データの挿入と書き込みの処理: 挿入データ テーブルの履歴パーティションを解凍するときに、kaiwudb_jobs システム タスク テーブルの url=[database/partition/table_name] のレコード ステータスを期限切れに更新します。これにより、パーティション テーブルが再作成されます。ダウンサンプリングルールの処理については今後対応予定です。

4. 事前計算プロセスで順序が狂ったデータが書き込まれた後、最新のデータに基づいて事前計算結果を更新する必要があります。

  • 順不同のデータの挿入と書き込みを処理する: 挿入に順不同のデータが現れるたびに挿入するこのアプローチにより、事前計算結果の精度を大幅に保証できます。

  • インポートされた順不同のデータの処理: 現在、インポートはパーティション テーブル単位で処理され、現在のパーティション テーブルのインポート後に、順不同の開始タイムスタンプと終了タイムスタンプが記録されます。パーティション テーブルが完成すると、再計算のために事前計算インターフェイスが呼び出されます。

04 まとめ

アウトオブオーダーのデータ処理のシナリオでは、同期と更新が必要な多くの関数とリンク モジュールが関係します。データベースが完全にアウトオブオーダーのデータ処理を行うと、ユーザーのビジネス シナリオによりよく適応でき、複数のシナリオにおけるデータベースの適用性が大幅に向上します。

私はオープンソースの産業用ソフトウェアを諦めることにしました - OGG 1.0 がリリースされ、Huawei がすべてのソース コードを提供しました。Google Python Foundation チームは「コード クソ マウンテン」によって解雇されました Fedora Linux 40が正式リリース。有名ゲーム会社がリリース 新規定:従業員の結婚祝儀は10万元を超えてはならない。チャイナユニコム世界初のオープンソースモデルLlama3 8B中国語版をリリース。Pinduoduoに賠償判決国内のクラウド入力方式に500万元の罰金- クラウドデータアップロードのセキュリティ問題がないのはファーウェイだけ
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/5148943/blog/11051217