問題タブ [change-data-capture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - CDC ワークフローで元のテーブルを更新する方法 (SSIS 経由)?
TableA の追加の行 (または更新) が ETL によって自動的に取得され、TableB に配置される CDC プロセスのセットアップがあります。
表A >>CDC >> 表B
CDC プロセスが終了したら、最初のテーブルを更新することを除いて、CDC は正常に動作します。「抽出日」を入力してテーブルを更新したい。つまり、私の tableA には、Name、Age、OtherInfo、ExtractionDate があります。CDC は Name、Age、および OtherInfo 列に設定されます (extractionDate 列は明らかな理由で除外されます)。次に、CDC が TableA で実行され、それが TableB に取得されたら、TableA の "extractionDate" に現在の日付を入力したいと思います。ただし、どの行が移動されているのかわからないため、列に入力するのに苦労しています。具体的には、「変更された」行を選択するための「選択的な」WHERE句を作成するにはどうすればよいですか?それがSSISだけに知られている場合です。
apache-kafka - Kafka のベスト プラクティスを使用した Oracle の変更データ キャプチャ
私は、Oracle から一連のシステム (Cassandra、Hadoop、リアルタイム処理など) にリアルタイムの更新をストリーミングする必要があるプロジェクトに取り組んでいます。ゴールデン ゲートを使用して Oracle から変更をキャプチャし、それらを Kafka に書き込み、その後、さまざまなターゲット システムが Kafka からイベントを読み取れるようにする予定です。行う必要がある設計上の決定事項がかなりあります。
更新時に Kafka に書き込むデータは?
GoldenGate は、レコード ID と更新されたフィールドの形式で更新を発行します。これらの変更は、次の 3 つの方法のいずれかで Kafka に書き込むことができます。
- 全行: フィールドが変更されるたびに、全行を発行します。これにより、「オブジェクト」の完全な表現が得られますが、おそらく行全体を取得するにはクエリを作成する必要があります。
- 更新されたフィールドのみ: 最も簡単ですが、簡単にアクセスできるオブジェクトの完全な表現がないため、操作が少し奇妙です。これをどのように Hadoop に書き込むのでしょうか?
- イベント: おそらく最もクリーンな形式 (そして Kafka に最適) ですが、db フィールドの更新をイベントに変換するには多くの作業が必要です。
データの変換とクリーンアップを実行する場所
Oracle DB のスキーマはサード パーティの CRM ツールによって生成されるため、使用するのは簡単ではありません。変なフィールド名、変換テーブルなどがあります。このデータは、(a) ソース システム ( b) ストリーム処理を使用する Kafka、(c) 各ターゲット システム。
並列コンシューマの順序どおりの処理を保証するには?
Kafka では、各コンシューマーが異なるパーティションを読み取ることができます。各パーティションは順序どおりであることが保証されています。トピックとパーティションは、各パーティションのメッセージが完全に独立していることを保証する方法で選択する必要があります。テーブルごとにトピックを選択し、record_id に基づいてレコードをパーティションにハッシュすると、ほとんどの場合はうまくいくはずです。しかし、新しい子オブジェクトが追加されるとどうなるでしょうか? 親がforeign_idを使用する前に、それが処理されることを確認する必要があります
sql-server - SQL Server 2012 - CDC の有効化に関する問題
「SYSADMIN」権限を持つ Windows 認証ユーザーを使用してデータベースで CDC を有効にしようとしていますが、SQL Server (2012) で次のエラーが発生します (詳細については、添付のエラーのスナップショットを参照してください)。
次の順序でスクリプトを実行しています。
- 「EXEC sys.sp_cdc_disable_DB」を使用して cdc スクリプトを無効にします。
- cdc スクリプトを有効にする
この問題の原因を特定するのを手伝ってくれる人はいますか?
sql-server - CDC (Change Data Capture) がログを収集せず、ログ ファイルが大きくなり続ける
I am in a Windows environment running a MSsql server 2014 enterprise. I am running CDC on a DB with Always On High Availability Groups. When I first enabled CDC the log files were being harvested and CDC was working well. One day I noticed that my log file was growing very large. I noticed that no new changes ha been captured for the last day. I looked up a few reasons that would prevent CDC from harvesting logs and most point to long running transactions preventing the logs from hardening. When I run DBCC OpenTrans I get.
I understand when using always on high availability groups that CDC should use the log reader instead of its normal capture job, however I have dropped and re-added the capture job and it is running. I have tried to fully disable and re-enable CDC on the DB but it still does not want to harvest.
Any thoughts on how to restart harvesting of the logs?
sql-server - SQLサーバーからmongodbにデータレプリケーターを書き込むためのSqldependencyとCDC
SQL Server データベースから mongodb データベースにデータをレプリケートする単純なレプリケーターを書きたいと思います。
次以外のオプションは何ですか。
a) 変更データ キャプチャ
b) Sql依存関係
- 各オプションが sql-server db のパフォーマンスに与える影響は何ですか?
- テーブルに毎分 50 回の書き込みがある場合、どのオプションがより適切な候補であり、その理由は?
- 問題が発生してマシン/サーバーが再起動した場合のリカバリに適したオプションはどれですか?
c# - SQL Server は、同じ場所で監査、行更新、およびスキーマ変更の両方を追跡する機能をサポートしていますか?
現在、行の更新/挿入に関する SQL Server データベースの請求変更テーブル データの監査履歴を取得しています。この質問/回答は打ちのめされました (ただし、Microsoft SQL Server の機能とユーザー定義ソリューションの機能の両方から進化しました)。
ただし、私のシナリオでは、スキーマが頻繁に変更されています。そのため、シャドウ監査テーブルを手動で削除して再作成していますが、これは多くのテーブルで面倒になっています。
開発者の観点から/データベース管理者以外から両方を簡単に行う、つまりメタ変更と完全な行の更新/トランザクションの両方を同じ場所/ワンストップショッピングでキャプチャする、SQL Server のターンキー機能またはプラグインはありますか?
方法はたくさんあるようですが、私が望む解決策は 1 つです。私が今これを行う方法は、スキーマが大きくなるにつれてシャドウテーブルに新しい列を追加し、監査テーブルでスキーマがいつ変更されたかを探すことです。
sql - 履歴テーブルへの MS SQL Server CDC クリーンアップ ジョブ
CDC が有効になっている DB があります。たとえば、単純な顧客テーブルを見てみましょう。
dbo.顧客
このテーブルで cdc を有効にすると、以下が得られます。
cdc.Customer_CT
SQL Server エージェントはキャプチャ ジョブとクリーンアップ ジョブを実行し、パラメーターを設定できます。
ただし、_CT 内に少量のデータのみを保持し、残りはアクセス頻度の低い履歴テーブルに移動したいと考えています。
つまり、以下も必要になります。
cdc.Customer_CT_History
CDC クリーンアップ ジョブを構成して、cdc.Customer_CT からレコードを削除し、cdc.Customer_CT_Historyに挿入する方法に興味があります。
これが履歴データを保存するための最善の方法ではないことは理解していますが、私の質問とこれを達成する方法を試してみてください. ありがとう!