問題タブ [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.
algorithm - 暗号化と整合性の両方が必要ですか?
暗号化と整合性の両方が必要なシナリオがあるのに、暗号化のみが必要なシナリオがあるのはなぜですか? ネットワークドメインの場合、これを決定する要因は何ですか?
file - データの破損を検出/データの整合性をチェックするための適切なハッシュ関数は?
破損を検出するファイルの整合性チェック (チェックサム) に最適なハッシュ関数は何ですか?
次のことを考慮する必要があります。
幅広いファイル サイズ (1 kb から 10 GB 以上)
多数の異なるファイル タイプ
大量のファイル コレクション (+/-100 TB および増加中)
ファイルが大きいほど、より大きなダイジェスト サイズが必要ですか (SHA-1 と SHA 512 のどちらですか)?
SHA ファミリーは暗号化ハッシュ関数と呼ばれているようです。ファイルの破損を検出するなどの「汎用」用途には適していませんか? MD5 や Tiger などのほうがよいでしょうか?
悪意のある改ざんも懸念される場合、最も適切なハッシュ関数に関してあなたの答えは変わりますか?
外部ライブラリはオプションではなく、Win XP SP3+ で利用できるものだけです。
当然性能も気になります。
(私の専門用語が間違っている場合はご容赦ください。この件に関する私の知識は非常に限られています)。
sql - SQL 行変更制約
ログエントリを含むテーブルがあります。行のすべての変更を制限しながら、行の追加と削除を許可する制約を課すことは可能ですか? たとえば、私が持っている場合:
ID、時間、問題、または結果を変更することはできませんが、新しい行を作成したり、行を削除したりできる必要があります。
オラクルを使用しています。
どうもありがとう!
php - 私のphpスクリプトでマルチユーザー接続を処理する方法は?
データベースに php スクリプトを記述した場合、
ユーザー間の競合を避けるためにデータベースのロックを処理する必要がありますか?
それとも、この問題は Web サーバーによって処理されますか?
xml - XML構成ファイルの内部整合性をチェックするためのツール、ルール、またはプロセス
私は非常に複雑なXML構成を持つプロジェクトに取り組んできましたが、直面している問題の1つは、XMLの内部整合性を維持することです。
この場合、厳密なXMLスキーマの一貫性を意味するのではなく、使用されるノード間のより高いレベルの関係を意味します。ほとんどの問題は、XMLでエンコードされた情報間の暗黙的なリンク、およびその情報とコードベースとの暗黙的な関係によって引き起こされました。例は次のとおりです。
- コード内の列挙型に暗黙的にリンクされたXMLノードデータ
- 同じ構成内で、それらの間に明示的な関係がなくても(一貫性が必要な情報を共有するという点で)関連しているビジネスオブジェクト
- 実行時にコンパイルおよび解析されるXMLのコード
a)これは頻度を増やす習慣になる可能性があり、b)場合によっては、コンパイル時にチェックされない新しいコーディング言語を暗黙的に作成していることに気づきました。実際、実行されるまでチェックはほとんどありません。
他の誰かが同様のシナリオに直面していますか?問題をより扱いやすくするツールやアプローチはありますか?テクノロジーにとらわれないいくつかの一般的な例が欲しいのですが、私自身の特定の経験は、C#とプロプライエタリシステムの構成でした。
注:以下に回答がありますが、最終的な回答として自分自身を採用するつもりはありません。
c - 「ベースの」データ チェックサムの計算。(SHA1/2など)
これをどのように尋ねるか正確にはわかりませんが、キーを含むことができる構造を考えると、これが私が望んでいることです5+n
(したがって、私のシステムには 5 つのキーが必須であり、追加のキーはオプションです) - ハッシュを希望します同一のキー6
を持つキーハッシュがキー構造体5
のスーパーセットであり、5
追加情報を提供することを決定できるメカニズム。具体的には、すべてのリクエストで完全な構造体をネットワーク経由で送信することを妨げる制約があるため、ハッシュメカニズム。
明確にするために、いくつかの情報を次に示します (サンプルには2+n
キーが必要です)。
でハッシュするとSHA-512
、-256
次のようになります。
追加のキーを追加する場合 (以下の例)、拡張されたデータセットが最初のデータセットのスーパーセットであると推測できるようにしたいと考えています。
ただし、当然のことながら、MD5
、SHA-n
および私が調べた他のハッシュ関数では、これを行う方法はありません。例:
(明らかに)類似点はありません...
私たちのユースケースである構造体としてフォーマットされたこのデータは、サードパーティによってシステムに供給されます。データの処理には非常にコストがかかり、操作ごとに 2 ~ 3 秒かかります。以前の実行の結果があることがわかっている場合、その時間の約 50% を取り戻すことができます。頭字語であるキーと値のペアや、まったく関連性がないにもかかわらず、類似しているように見える他のテキストをよく目にするため、ここに適しています。
必要なのは、データをチェックサムする方法です (ここで私の回答にバイアスがかかっている可能性があります)。これにより、同じデータを持つすべての同じキーが含まれているかどうかB
のスーパーセットであると判断できます。A
しかし、多くの場合、私たちのキー/値エントリには非常に多くのデータがありstruc
、より完全なコピーを既に見たと判断するためだけに毎回ネットワーク経由で送信すると、費用がかかり、無駄になります。
linux - データ チャンクを Linux PAGE_SIZE またはディスク ブロック サイズの 1/n に格納すると、mmap() はクラッシュ時にデータの整合性を保証できますか?
で実装されている、データの永続的で高速なリロードを備えたシステムを設計する必要がありますmmap()
。しかしmmap()
、単一ノードの MongoDB のように、永続化のために使用するシステムは、システム クラッシュ時にデータの整合性を失うことがよくあります。
私が持っているのは、保存する非常にフラットなデータ構造です。データは 1024 サイズのブロックにチャンクされ、ブロック間の依存関係はありません。ブロックは、サーバーのアップタイム中にランダムかつ頻繁にアクセスされ、更新されます。
sql - オプションの一意の制約?
複数のクライアントがデータの入力に使用するSaaSアプリケーションをセットアップしています。ただし、クライアントAが一意を強制したい場合、クライアントBが複製を許可したい場合がある特定のフィールドがあります。明らかに、1つのクライアントに重複を許可する場合、テーブルに一意の制約がない可能性があります。欠点は、一部のクライアントに一意の制約を適用したい場合、他の方法でそれを実行する必要があることです。
誰かがこのような問題に取り組んだことがありますか?もしそうなら、注意すべき一般的な解決策や潜在的な落とし穴は何ですか?
考えられる一意のフラグをチェックするトリガーが、これを正しく実行する唯一の方法である可能性があると考えています。私がビジネスレイヤーに依存している場合、アプリがすべての挿入の前に一意のチェックを行うという保証はありません。
解決策:
最初に一意のインデックスを検討しましたが、どのような種類の結合やルックアップも実行できず、値を表現するだけであるため、除外しました。また、クライアントが追加されたり、クライアントの一意性の設定が変更されたりするたびに、インデックスを変更したくありませんでした。
次に、CHECK CONSTRAINTSを調べ、いくつかの浮気の後、クライアントが一意であるかどうかを選択できる両方の仮想列に対してtrueを返す1つの関数を作成しました。
これは、チェック制約が必要なすべてを実行できることを確認するために使用したテストテーブル、データ、および関数です。
編集:
重複チェックでNULL値をキャッチするために関数を数回変更する必要がありましたが、すべてが機能しているように見えます。
oracle - 列はnull延期可能ではありません
Oracleでは、遅延制約はコミットの時点でのみチェックされます。
NOT NULL制約の場合のDEFERRABLE句の意味は何ですか?例えば
これらのステートメントの後、私は次のコードが機能すると思いました
しかし、そうではありません。
2つの定義の違いは何ですか?
database - トリガー: Oracle でこの整合性制限を行うにはどうすればよいですか?
タイプ Pilot またはタイプ Flight_Attendant のレジスターが追加されるたびに、タイプ Crew のレジスターが追加されるようにしたいと考えています。10g 上で Oracle の SQL Developer を使用していますが、トリガーを使用する必要がありますか?