問題タブ [isolation]
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.
java - Java でのスレッド分離
Javaで、スレッドが互いに分離されたままであることを確実にする確実な方法はありますか? さまざまなサード パーティのソース コードを実装するスレッドが、静的変数やその他の制御できないものが原因で衝突し続けるという問題が 1 週間半発生しました。
1 つのシステムで、現在取り組んでいるプロジェクトのインスタンスを必要なだけ実行できることを知っています。しかし、スレッド化された単一の実行可能ファイルにすべてを組み込もうとすると、常にエラーと例外が発生します。
必要なこのプログラムのインスタンスごとに新しいプロセスを起動する段階に近づいていますが、このルートをたどりたくはありません (収集した多くのリアルタイム データも削除されます)。対象のプロセスを強制終了する能力を妨げるため)。
提案?ありがとう!
mysql - MySQL トランザクション分離レベルが壊れていますか?
トランザクション分離レベルを尊重するために、32 ビット x86 Debian で MySQL 5.0.32 を取得できないようです。
問題を最も単純な形式にまとめ、mysql コマンドライン クライアントでテストしました。
おそらく関連していますが、ロールバック後も行が残っていることに気付きました!
だから私の質問は、自動コミットが実際には無効になっておらず、トランザクションの分離レベルが事実上無視されているということですか?
チャオ、シェルドン。
c# - ORM を使用しない N 層データベース アプリケーションで、UI は表示するデータに必要なものをどのように指定しますか?
ここでポインタと情報を探しています。正しい答えが 1 つもないと思われるので、この CW を作成します。これは C# 用であるため、以下で Linq を参照します。また、長文失礼いたしました。ここで質問を要約させてください。その後、完全な質問が続きます。
概要: UI/BLL/DAL/DB の 4 層アプリケーションで、ユーザー インターフェイスを変更して、より多くの列 (グリッドなど) を表示し、ビジネス ロジック層からデータ アクセス層へのリークを回避するにはどうすればよいでしょうか。表示するデータを取得します (既にデータベースにあると仮定します)。
3(4) 層の階層化されたアプリケーションを想定してみましょう。
- ユーザー インターフェイス (UI)
- ビジネス ロジック層 (BLL)
- データ アクセス層 (DAL)
- データベース(DB;第4層)
この場合、DAL は SQL ステートメントを作成し、データベースに対して実行してデータを返します。
そのようなレイヤーを「正しく」構築して常に「select *」を実行する唯一の方法はありますか? 私にはそれは大したことではありませんが、なぜ私が疑問に思っているのかを説明させてください.
UI に、有効な雇用記録を持つすべての従業員を表示したいとしましょう。「アクティブ」とは、雇用記録の from-to の日付に今日が含まれていることを意味します (または、ユーザー インターフェイスで設定できる日付も含まれている可能性があります)。
この場合、これらすべての人に電子メールを送信したいとします。そのため、BLL には、同じ人にまだ電子メールを送信していないことを確認するコードがあります。
BLL の場合、最小限のデータが必要です。おそらく、データ アクセス層を呼び出してアクティブな従業員のリストを取得し、次に、送信した電子メールのリストを取得する呼び出しを呼び出します。次に、それらを結合して新しいリストを作成します。おそらく、これはデータ アクセス層の助けを借りて行うことができますが、これは重要ではありません。
重要なことは、ビジネス層にとって必要なデータはそれほど多くないということです。おそらく、両方のリストの各従業員の一意の識別子が必要であり、一致してから、「これらはアクティブで、まだメールを送信していない従業員の一意の識別子です」と言うだけです。次に、ビジネス層が必要とするものだけを取得する SQL ステートメントを構築する DAL コードを構築しますか? すなわち。「SELECT id FROM employees WHERE ...」だけですか?
では、ユーザー インターフェイスはどうすればよいでしょうか。ユーザーにとっては、メールを送信する理由に応じて、より多くの情報を含めることがおそらく最善でしょう。たとえば、基本的な連絡先情報、勤務先の部署、マネージャーの名前などを含めたいと思うかもしれませんが、少なくとも名前と電子メール アドレスの情報を表示することは言うまでもありません。
UI はそのデータをどのように取得しますか? UI に十分なデータを返すように DAL を変更する必要がありますか? BLL を変更して、UI に十分なデータが返されるようにする必要がありますか? DAL から BLL に返されたオブジェクトまたはデータ構造を UI にも送信できる場合、おそらく BLL はあまり変更する必要はありませんが、UI の要件は、通信する必要があるレイヤーを超えてレイヤーに影響を与えます。 . また、2 つの世界が異なるデータ構造で動作する場合は、おそらく両方に変更を加える必要があります。
そして、UI が変更された場合、さらに列を追加してユーザーをさらに支援するには、UI を変更するためにどのくらい深くする必要がありますか? (データがデータベースに既に存在すると仮定しているため、そこで変更する必要はありません。)
出てきた 1 つの提案は、Linq-To-SQL と IQueryable を使用することです。これにより、何 (データの種類など) と理由 (WHERE 句など) を処理する DAL が IQueryable を返した場合、BLL はUI にそれらを返す可能性があり、必要なデータを取得する Linq クエリを作成できます。ユーザー インターフェイス コードは、必要な列を取得できます。IQuerables を使用すると、UI が実際にクエリを実行し、「select new { X, Y, Z }」を使用して必要なものを指定し、必要に応じて他のテーブルに結合できるため、これは機能します。
これは私には面倒に見えます。Linq フロントエンドの背後に隠されている場合でも、UI が SQL コード自体を実行すること。
ただし、これを行うには、BLL または DAL がデータベース接続を閉じることを許可しないようにする必要があります。また、IoC タイプの世界では、DAL サービスは UI コードが望むよりも少し早く破棄される可能性があります。 Linq クエリは、「破棄されたオブジェクトにアクセスできません」という例外で終了する場合があります。
だから私はポインタを探しています。私たちはどれくらい離れていますか?これにどう対処していますか?UI の変更が BLL を介して DAL に漏れるという事実は、非常に悪い解決策だと思いますが、今のところ、改善できるようには見えません。
私たちがどれほど愚かであるか教えてください。私が間違っていることを証明してください。
また、これはレガシー システムであることに注意してください。データベース スキーマの変更はまだ何年も前から行われていないため、「select *」と本質的に同等の処理を行う ORM オブジェクトを使用するソリューションは、実際にはオプションではありません。レイヤーのリスト全体をプルアップしたくない大きなテーブルがいくつかあります。
mysql - mysql 分離レベル
ここのドキュメントに少し混乱しています。私はトランザクションを持っています。
- 取引開始
- いくつかの更新を行います
- いくつかの選択を行います
- さらにいくつかの更新を行います
- 専念
ステップ3の選択でステップ2の更新の結果を確認したいのですが、すべてをロールバックできるようにしたいと考えています。
コミットされた読み取りは、選択がコミットされたデータのみを表示することを暗示しているようであり、反復可能な読み取りは、後続のすべての選択が最初の選択時に存在していたのと同じデータを参照することを暗示しているようです。したがって、私の更新は無視されます。read uncommittedは正しいことをしているように見えますが、「しかし、行の以前のバージョンが使用される可能性があります」 - これも受け入れられません。
ここで本当に私の唯一の希望はシリアル化可能ですか?
ここでドキュメントに取り組んでいます
ruby-on-rails - 分離モードとレンダー :update のコントローラー仕様
コントローラーのテスト/仕様を書くために RSpec を使用しています。
次のコードがレンダリングされるという問題に直面しました。
分離モードがデフォルトですね。
どうすればこれを修正できますか、それとも何か間違っていますか?
たとえば、失敗したコントローラーの仕様は次のとおりです。
エラーメッセージ:
管理パーシャルは、ショー パーシャルでレンダリングされます。
よろしくお願いします
編集: この問題を RSpec の lighthouse アカウントに投稿しました。
c# - 抽象基本クラスとアプリケーション ドメイン
今後の説明が十分に意味をなさない場合は、申し訳ありません。私はそれで有名ですが、別のことをしようとしています。
ユーザー定義のプラグインを利用するサービスを作成しています。共有アセンブリで定義されたインターフェイスを利用して、アセンブリをサービスのappdomainから除外して、それらを分離しようとしています。
私を殺しているのは、抽象基本クラスの使用です。一部のインターフェースのすべての実装に共通する機能があるため、抽象基本クラスは理にかなっています。抽象ベースがサービス アセンブリにある場合、それをサブクラス化するプラグインはすべて、そのアセンブリをサービスの appdomain にドラッグします。ただし、サービスが使用する抽象ベース (内部セッターとパブリック ゲッターを持つプロパティ) には内部メンバーがあるため、それを可能にするには、サービスと同じアセンブリにある必要があります。
私が望んでいることは不可能のようですが、それは私が間違ったアプローチを取っているからだとも信じています. 私は必死に、この演習で良いパターンとプラクティスをより有効に活用し、その過程で学習しようとしています。
performance - オンライン審査サイトはどのようにプログラムのパフォーマンスを分離しますか?
その出力を正解と比較することによってあなたのプログラムを検証することができる多くのオンライン裁判官サイトがあります。さらに、実行時間をチェックして、プログラムの実行時間が最大制限を超えていないことを確認します。
これが私の質問です。一部のオンライン審査サイトは同時に複数のテストプログラムを実行しているため、パフォーマンスの分離をどのように実現しますか。つまり、高負荷の環境で実行されているユーザープログラムが同じ範囲内で終了することを確認するにはどうすればよいですか。時間、アイドル環境で実行されているときのように?
mysql - なぜmysqlクエリはコミットされていない読み取りを分離してテーブルロックを取得するのですか?
mysqlクエリを取得してmyisamテーブルをロックしないようにする方法はありますか?
私の問題は、Sphinx Searchインデクサーがmyisamテーブルの1つを60秒以上ロックし、更新ステートメントがロックの解放を待機するように見えることです。これにより、他のクエリが更新ステートメントの完了を待機します。インデクサーはmysql_use_resultを使用し、mysql_free_resultを呼び出す前にインデックス作成作業の多くを実行します。これは少なくとも何が起こっているかについての私の最善の推測ですが、これがあなたにとって間違っていると思われる場合は私に知らせてください。
この問題を解決する1つの方法は、インデクサークエリをID範囲で細分化することだと思われます。しかし、他のクエリが同時に実行されるのを防ぐためにこのクエリは本当に必要ないので、これを行う必要はないようです。このユースケースでは、一貫性よりもパフォーマンスの方がはるかに重要です。
ありがとう!
jboss - JBoss 5.1 への移行 - 新しい SAX パーサーの作成に失敗しました
JBoss 4.2.3 で正しく動作するアプリケーション (.war ファイルにパック) を JBoss 5.1 (Java 5 を使用) にデプロイしようとしています。
現在、展開時に server.log に次のエラーが表示されます。
... 原因: org.jboss.xb.binding.JBossXBRuntimeException: 新しい SAX パーサーの作成に失敗しました
... 原因: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration
JBoss フォーラムのこのスレッドによると、アプリケーションを分離する必要があります。私の質問:
- JBoss 5.1 リリース ノートによると-既存の設定との主な違いは、値による呼び出しとデプロイメントの分離がデフォルトで有効になっていることです。したがって、アプリケーションを分離するように暗黙的に設定する必要は本当にあるのでしょうか?
- 同じアプリケーション サーバーが互いに衝突する複数のアプリケーションを実行している場合、主に分離が必要であると考えました。私の場合、アプリケーションを 1 つだけ実行しようとしています。では、やはり隔離が必要ですか?
- 上記の質問に対する答えが肯定的で、分離を強制する必要がある場合、どのように構成できますか? 私のwarファイルが「foo」と呼ばれているとします。次のセクションを jboss-web.xml に挿入する必要がありますか?
database - 選択、挿入、削除時のトランザクション分離
READ COMMITTED のデフォルトの分離レベルで同時ユーザーが実行した場合、次のトランザクションで何が問題になる可能性がありますか?