問題タブ [propagation]
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.
tomcat - 複数の SOLR インスタンスの同期
私は奇妙な要件を持っています:
私の環境では専用の SOLR サーバーをセットアップすることはできません。Tomcat インスタンスを実行する JVM に組み込む必要があります。単一サーバーに最適です-しかし、同じデータベースを共有する負荷分散された複数のサーバーがあるため、それらの組み込みSOLRインスタンスを同期させる必要があります。各ローカル Tomcat インスタンスは、ローカル SOLR インデックスのクエリと更新を行いますが、何らかの方法で更新を他のノードに伝達する必要があります。そしてもちろん、ノードの 1 つがその時点で利用できない場合、オンラインに戻った後にバッチで更新を取得する必要があります。
これには単一のマスターが必要であり、lucene インデックス ファイルがプッシュされるため、標準レプリケーションは私にとっては解決策ではないようです。私が得た代替品は何ですか?
postgresql - 主キーを子テーブルに伝播する
新しい行を挿入するときに、主キー列の値を親テーブルから特定の子テーブルに伝達したいと考えています。
説明のために、次の表を作成しました。
RealMaterial
新しいマテリアルを挿入するとき、自動的に aまたは a VirtualMaterial
(新しい ID を参照)を追加したいと考えています。単一テーブル継承だけでなく、この共有主キー パターンを使用したいことを強調しておきます。
目的のためにトリガーを使用する必要がありますか?
spring - Spring トランザクションの伝播
Spring トランザクションの概念を理解しようとしています。以下に示すように、2 つの異なるデータベース (iSeries と DB2) にデータを挿入する必要がありますが、iSeries バージョンは 2 フェーズ コミットをサポートしていません。要件は、両方の挿入が成功した場合にのみトランザクションをコミットする必要があり、それ以外の場合はロールバックする必要があることです。
Propagation を REQUIRED または REQUIRES_NEW として使用すると、「既存の 2 フェーズ対応リソースで 1 フェーズ対応リソースをコミットしようとする不正な試みが発生しました」というエラーが表示されます。
しかし、NOT_SUPPORTED または SUPPORTS を使用すると、正常に動作します (つまり、挿入の 1 つが失敗した場合、トランザクションはロールバックし、そうでない場合は、両方の挿入が成功した場合にコミットします)。
私の理解では、Propagation = SUPPORTS / NOT_SUPPORTED の場合、以下のシナリオではトランザクションは開始されません。したがって、2 つの異なるデータベースで両方の挿入が独立して発生する可能性があり、いずれかが失敗した場合、トランザクション全体がロールバックされるべきではありません。
しかし、 Propagation = SUPPORTS / NOT_SUPPORTED は私の要件に従って機能します。誰かがこれを説明できますか?前もって感謝します。
javascript - コントローラを使用したスコープ ツリーを介した角度データの伝播
私は Angular を学習中ですが、ちょっとした問題に遭遇しました。JavaScript オブジェクト内のさまざまなレベルを表す一連のディレクティブを作成しようとしています。オブジェクトには、モデルの他の部分の状態に依存するさまざまなプロパティが含まれています。たとえば、サブ プロパティの 1 つがエラー状態にある場合、親もエラー状態になります。非常に単純化された例がHEREにあります。どんな助けでも大歓迎です。特に、誰かが例の何が問題なのかを説明し、Angular 設計の高レベルのベスト プラクティスについてアドバイスを提供できる場合。ありがとう。
sql - オブジェクト識別子への変更を追跡するためのデータ構造
一意の数値オブジェクト識別子への変更を追跡するためのシステムを実装する必要があります。システムが動作する環境は非常に制限されているため、問題に対処する便利なエンタープライズ クラスの RDBMS メソッドはすべて検討の対象外です。つまり、組み込みの変更追跡を有効にしたり、組み込みの監査を有効にしたり、出力をログ ファイルに書き込んだり、テーブルなどでトリガーを使用したりすることは、ソリューションの一部ではありません。変更は、アプリケーション レベルで書き込まれ、管理される「挿入のみ」のトランザクション テーブルに格納する必要があります。
変更を追跡する必要があるオブジェクトは、次の 2 つの方法で動作します。
- 1 つのオブジェクトを 2 つの新しいオブジェクトに分割できます
- 2 つのオブジェクトを結合して 1 つのオブジェクトにすることができます
特定のオブジェクトのコレクションの場合、オブジェクト ID は一意の長整数です。オブジェクトが分割 (分割) されると、対象オブジェクトに割り当てられた ID は廃止され、2 つの新しい ID に置き換えられます。したがって、オブジェクト 27 が分割されると、オブジェクト 57 および 58 に置き換えられます。57 および 58 は、その特定のシーケンスから取得できる次の番号です。
同様に、2 つのオブジェクトが 1 つにマージされると、サブジェクト オブジェクト ID は廃止され、シーケンス内で次に使用可能な番号に置き換えられます。したがって、オブジェクト 85 とオブジェクト 227 がマージされると、オブジェクト 357 に置き換えられます。オブジェクト 357 は、シーケンス内で次に使用可能な未使用の番号です。マージ操作では、2 つの親のうちの 1 つだけに関連付けられた属性を保持できるため、ユーザーはマージ時にどちらを保持するかを選択します。この場合は 85 または 227 です。この選択は、後で使用するために保存する必要があります。使用する。
トランザクション テーブルには、オブジェクトの分割とマージの完全な履歴を格納する必要があります。オブジェクトが対象となる分割と結合の数に制限はありません。
可能であれば、トランザクションを単一のテーブルに効率的に格納するために使用できる SQL データ構造に関する提案を探しています。
トランザクション テーブル構造が定義されたら、分割またはマージ トランザクションに関与した特定の ID の完全な ID 系列を取得できるように、SQL でクエリを実行できるようにする必要があります。この場合、物事はそれほど制限的ではないので、必要に応じてトランザクション データに 1 つ以上のビューを設定したり、必要に応じて新しいテーブルなどを作成したりできます。再帰的 SQL を使用して、ID リネージのクエリと表示を行うことができます。
トランザクションの記録が定義されたら、次の要件は、変更された ID を 1 つ以上の関連テーブルに非同期的に伝達することです。
分割の例
親テーブル ID 27 は ID 57 と ID 58 に分割されます。関連するテーブルでは、ID 27 のレコードが削除され、それぞれ ID 57 と 58 を持つ 2 つの (ID 27 と同じ) 新しいレコードに置き換えられます。
マージの例
親テーブル ID 327 と ID 959 は ID 1023 にマージされます。関連テーブルでは、ID 327 と ID 959 を持つレコードが削除され、1023 とマークされた新しいレコードに置き換えられます。新しいレコードで定義される属性値は、元のマージ トランザクションと共に格納された選択肢。
あなたの提案は非常に高く評価されています。前もって感謝します。
javascript - jQuery を使用したキャプチャとバブリング
私はjQueryが初めてで、キャプチャとバブリングの概念を理解しようとしています。
たくさんの記事を読みましたが、そのほとんどは Javascript のイベント伝搬について説明していました。
次の HTML コードがあるとします。
キャプチャは DOM 要素を下降するフェーズであり、バブリングは上昇するフェーズです。
Javascript では、どちらの方法に従うかを決定できます (true または false パラメーターを使用)。
jQuery が JavaScript の方法以外に従う方法を示すのに似たものはありますか?
また、jQuery はデフォルト フェーズを使用しますか? 例えばバブル?
これをテストするために次のコードを使用したためです。
CSS
jQuery
外側の div をクリックすると、その div だけが大きな div にアニメーション化されるようです。内側の div をクリックすると、両方の div がより大きな div にアニメーション化されます。
私が間違っているかどうかはわかりませんが、このテストでは、既定のブラウザーの伝播方法がバブルであることが示されています。
私が間違っている場合は、私を修正してください。