問題タブ [data-integrity]

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.

0 投票する
1 に答える
102 参照

linux - SSH を介して複数のリモート ホストから STDOUT を収集する際のデータ整合性の問題

次のコマンドを実行するとします。

出力は次のようになります。

しかし、私がそれを

各ホストからの stdout が単一のバッファに収まらないようにするには? この場合、順序ではなく file[1-3].txt のデータの整合性は維持されますか? このように、他のファイルのファイルの断片が他のファイルの途中でスリップする可能性はありますか?

0 投票する
2 に答える
460 参照

python - キー名を使用せずに Google App Engine のオブジェクトのデータ整合性を確保するにはどうすればよいですか?

Google App Engine で、キー名のない祖先関係を使用するときにデータが正しいことを確認するのに少し問題があります。

もう少し説明させてください。親エンティティカテゴリがあり、子エンティティアイテムを作成したいと考えています。カテゴリ名とアイテム名を受け取り、存在しない場合は両方のエンティティを作成する関数を作成したいと思います。最初に 1 つのトランザクションを作成し、必要に応じてキー名を使用して両方のトランザクションを作成しましたが、これはうまくいきました。ただし、変更が必要になる可能性があるため、名前をキーとして使用したくないことに気付き、トランザクション内でこれを実行しようとしました。

これを実行しようとしたときにわかったのは、トランザクションでクエリを実行できないため、App Engine がこれを拒否することです: Only ancestor queries are allowed inside transactions.

これに対処する方法についてGoogleが提供するを見ると:

カテゴリのフェッチをトランザクションの前に移動しようとしました:

これは機能しているように見えますが、複数のリクエストでこれを実行すると、カテゴリが重複して作成されていることがわかりました。これは、カテゴリがトランザクションの外部でクエリされ、複数のリクエストで複数のカテゴリが作成される可能性があるためです。

これらのカテゴリを適切に作成する方法を知っている人はいますか? カテゴリの作成をトランザクションに入れようとしましたが、祖先クエリに関するエラーが再び表示されました。

ありがとう!

サイモン

0 投票する
2 に答える
282 参照

php - データの整合性を修復する

これは長期的なものだと思いますが、ここにあります。

基本的な質問は、開発チームが大規模で損傷したデータセットのデータ整合性をどのように修復し始めるかということです。

私が支援している会社には、数年の雑然とした、無効なデータ、壊れた参照などを含む巨大なMySQL / PHP5システムがあります。さらに、このデータは、GoogleAdWordsなどのいくつかのオンラインサービスのデータを参照しています。

そのため、ローカルデータベースに問題があり、ローカルとリモート(AdWordsなど)の関係にも問題があり、問題が悪化しています。

データの整合性の修復を開始するために共有できるヒント、コツ、またはベストプラクティスを誰かが持っていますか?また、迅速かつ継続的に追加および更新されるシステムでデータの整合性を維持するにはどうすればよいでしょうか。

0 投票する
10 に答える
2251 参照

database - データベースの制約 - 保持するか無視するか?

私が大学で学んでいたとき、彼らは私たちにデータベースの基礎、基本、および規則を教えてくれました。最も重要な規則の 1 つは制約 (主キー、外部キー) であり、1-m、1-1、mn の関係を作成する方法です。 .

今、私が実際のビジネス環境に移ると、彼らはこう言います。制約はありません。これらの関係はすべて論理的であり、主キーも外部キーもありません。コードを使用して制約を作成できます。

学問生活で学んだことと、新しい実際のビジネス生活で学ぶことのどちらが正しいかはわかりません。どう思いますか?

0 投票する
5 に答える
577 参照

sql - SQL トリガーが正しく機能しない

これが私が持っている2つのテーブルです。顧客が1つの銀行から5つ以上の口座を持つことはできませんが、合計で5つ以上持つことができるというトリガーを実装したいと考えています。

heres は私が書いたトリガーですが、単一の銀行ではなくすべての銀行のすべての口座をチェックするため、合計で 5 つを超える口座を作成することはできません。

私が推測するように、問題はGROUPBY関数内にあります。

0 投票する
1 に答える
132 参照

sql - この SQL 制約を形成する方法と、それは逆に機能しますか?

「テーブルA」があるとします:

...そして、この形式を持つ n 個のテーブル:

...ここで、A_FK は「テーブル A」ID への外部キー参照です。

したがって、1 つの「テーブル A」と n 個の「テーブル B」があります。これらの「B」テーブルの場合、一部のテーブルは A_FK の既存の値を持つことができます (制約は必要ありません)。他の「B」テーブルは、対応するレコードの列 A に Null 値がない A_FK 値のみを参照できます。

だから私の質問は:

  1. これを処理するための制約をどのように記述すればよいでしょうか (これは非常に簡単なことだと思います。記述する必要がなかっただけで、少し怠惰に感じています)。
  2. 制約は逆に機能しますか? 「B」テーブルにレコードを入力し、それがテーブル A の Id = 1 にリンクされているとします (テーブル B の制約が設定されています)。テーブル A の 1 の列 A = "Z" であるため、これで問題ありません。後で「Z」を Null に変更しようとすると、エラーが発生しますか?

前もって感謝します。

0 投票する
6 に答える
304 参照

java - このコードを防御プログラミング用に最適化するには、他にどのような方法がありますか?

私のデータ構造プロジェクトの目標は、アーティスト、タイトル、歌詞が明確にマークされた10000を超える曲を含む提供されたファイルを読み込むことであり、各曲は1つの二重引用符で囲まれた行で区切られています。このコードを記述してテキストファイルを解析しました。実行時間は3秒弱で
、422K行のテキストを読み取り、
Songオブジェクトを作成してそのSong
をArrayListに追加します。

私が書いた解析コードは次のとおりです。

私はこのプロジェクトのコードについてアルゴリズム入門教授と話していましたが、彼は、他の人から提供されたデータの不整合を許容するために、コードをより防御的にするように努めるべきだと述べました。もともと私はArtist、Title、Lyricsフィールドの間にif / elseブロックを使用していましたが、彼の提案により、シーケンシャルifステートメントに変更しました。このコード例を使用して彼の主張を理解することはできますが、入力の不整合を許容することについて、どうすればより防御的になることができますか?

0 投票する
1 に答える
3642 参照

mysql - MySQL トランザクション: 複数の同時トランザクションとデータの整合性

かなり複雑な Web アプリケーションで複数の MySQL InnoDB テーブルにまたがるデータを管理するためにトランザクションを使用しています。簡単に言えば、特定のトランザクションは次のように機能します。

  1. 「user_point_totals」テーブルの行からデータが読み取られます
  2. さまざまな策略が、ユーザーの新しいポイントの合計がどうあるべきかを計算します
  3. 更新された合計を反映して、「user_point_totals」テーブルに新しいエントリが作成されます

ユーザー A が、ポイントに関連する分岐を含む何らかのアクションを実行し、ステップ 1 が実行され、その実行スレッドがユーザーのポイント合計をメモリに読み取り、アプリケーションが新しい合計の計算を開始するとします。一方、ユーザー B は、ユーザー A のポイント合計に影響を与えるアクションを実行し、別のトランザクションが開始されます。ただし、最初のトランザクションはまだ完了していないため、2 番目のスレッドは最初のトランザクションと同じポイント合計値を (同じテーブル行から) 開始点として取得します。続いて、トランザクション 1 が完了し、新しい値がどうあるべきかを認識して新しいユーザー ポイントの合計を作成します。その後すぐに、トランザクション 2 が完了し、ユーザーのポイントの合計の新しい行も作成します。ただし、2 番目のトランザクションのポイント合計が正しくなくなり、

私の質問は次のとおりです。

  • トランザクションのアトミックな性質のために、このシナリオは不可能ですか?
  • そうでない場合、この種の状況でデータの整合性が存在することをどのように保証しますか?

ご検討いただきありがとうございます。

0 投票する
2 に答える
271 参照

sql-server - 信頼できない制約

驚いたことに、外部キー制約は信頼できない可能性があることを知りました。これは、 を使用して拘束を追加したときに発生しWITH NOCHECKます。制約が信頼されていない場合、クエリ プランの生成のためにクエリ アナライザーによって使用されません。

参照:
https://sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/

私の質問はこれです。制約が信頼されていない場合、検査できる制約にこれを示すプロパティはありますか? WITH NOCHECK を使用して制約が追加されたかどうかを確認できると思いますが、制約が信頼されていないというフラグを立てることができる他の方法はありますか?

0 投票する
2 に答える
307 参照

sql-server - このデータ整合性制約を強制する最善の方法は?

私は 3 つのテーブルを持っています (それらを Foo、Bar、Baz と呼びましょう。

テーブル:

フー

  • FooId

バー

  • BarId
  • FooId

バズ

  • BazId
  • BarId
  • アナザーバリュー

明らかに、外部キーにより、各 Baz が Bar に関連付けられ、したがって Foo に関連付けられます。ここで、同じ「AnotherValue」を持つ Baz の各セットに対して、関連するすべての Foo が一意であることを確認したいと思います

たとえば、私が持っていた場合

Baz 104 と baz 101 の両方に AnotherValue "b" と Foo 1 があるため、これはブロックする必要があります。


私が考えた選択肢(現在の好みの順)

インデックス付きビュー

これら 3 つのテーブルのビューを作成し、2 つの列に一意のインデックスを配置できます。

計算列

FooId を計算列として Baz に追加します。次に、AnotherValue と FooId にインデックスを追加します。

制約をチェック

これを追加して機能させることができると確信しています。私はチェック制約をあまり使用していません。これが最善の方法であるかどうかはわかりません。

引き金

これは私には醜いようです。