問題タブ [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.
java - SHA2 を使用してデータの整合性を検証する方法は?
digest(); の実装でエラーが発生しました。
php - MySQLサーバーの整合性を「テスト」する方法は?
共有ウェブホスティング上のいくつかのサイトで、それぞれのMySQLデータベースにバインドされたデータが失われるという問題が発生しています。私のプロバイダーはMySQLログへのアクセスを提供していません。彼らは月曜日にサーバーエンジニアに問題を調査させています。ただし、問題の範囲を説明するために、いくつかの具体的なデータが必要です。
MySQLデータベースに向かう途中でデータがドロップされていることを示す証拠を取得するために、できればPHPを使用して良い方法は何でしょうか。この種のテスト用の既存のツールはありますか?Drupalモジュールが理想的です。これをインストールするだけで、すでに構成したサイトの1つで一時的に実行できますか?
ps-はい、まもなく共有ホスティングからサイトを移動します。:)
sql - 営業時間データベースの設計
現在、複数のエンティティが営業時間を関連付けるアプリケーションを開発しています。営業時間は複数日にわたる場合もあれば、1 日内に含まれる場合もあります。
元。月曜日は 6:00 に開店し、金曜日は 18:00 に閉店します。
または
月曜日は 06:00 に開店し、月曜日は 15:00 に閉店します。
また、エンティティには、1 日に複数の営業時間のセットがある場合があります。これまでのところ、私が見つけた最良の設計は、営業時間を次のように定義することです。
StartDay、StartTime、EndDay、および EndTime。
この設計により、必要なすべての柔軟性が実現されます。ただし、データの整合性が問題になります。(データベース内で)スパンの重複を禁止するソリューションが見つからないようです。
あなたの考えを共有してください。
編集: データベースは Microsoft SQL Server 2008 R2 です
c# - 先行する検証コマンドを使用した create コマンドでの MongoDB データの整合性
私が作成している Web サイトでは、ユーザーがサイト上で一意のサブドメインを持つことができます。gaz123.mywebsite.com。
サイトに登録するときにサブドメインを入力します。アカウント レコードを作成する前のコードで、選択したサブドメインがまだ存在しないことを確認します。これは、同じサブドメインを持つアカウントに対する単純なクエリです。これがゼロ カウントを返した場合は、続行して、そのサブドメインでアカウントを作成します。
2 つの MongoDB コマンドの前後に lock() コマンドを配置しました。サブドメインが利用可能であることを確認してから、アカウントを作成してください。次に、ロックを解除します。
これはあなたがそれを行う方法ですか?より良い別の方法はありますか?なんで?
ありがとう
mvvm - 複数の ViewModel が同じドメイン オブジェクトを要求しています。それらに同じ/異なるインスタンスを与える必要がありますか?
ここの初心者、これが明白な質問である場合は申し訳ありません。また、私の英語で申し訳ありません。Google を試しましたが、質問に対する回答が見つかりませんでした。
私は Visual Studio、Autofac、EF CTP5 コードのみを使用しており (EF CTP5 は IoC コンテナーをサポートしていないため、後で HHibernate に切り替える可能性があります)、次のパターンを使用しようとしています: MVVM、DI、DDD。
私の質問は次のとおりです。複数の ViewModel がリポジトリから同じドメイン オブジェクトを要求する場合、それらに同じインスタンスを与えるか、要求ごとに新しいインスタンスを作成する必要がありますか?
リクエストごとに新しいインスタンスを作成する場合、次のように書くと思います。
また、いずれかの ViewModle がドメイン オブジェクトのインスタンスを変更した後、データの整合性を確保するために、他のすべての ViewModel にインスタンスを更新するよう通知する方法を見つける必要があります。
すべてのリクエストに対してドメイン オブジェクトの同じインスタンスを指定する場合、次のように記述する必要があると思います。
また、メモリ リークを回避するために、ViewModel でインスタンスが必要ない場合 (またはキャッシュに weakreference を使用する場合) にキャッシュからインスタンスを削除する方法を見つける必要もあります。
どちらに行けばいいですか?より良いオプションはありますか?
ありがとう!
編集:より良い説明のために内容を変更しました。
(私の英語でごめんなさい)
更新:
これについて調査した後、この質問がわかりにくかったので、ここに新しい質問を投稿しました: Multiple ViewModels modify the same domain object
core-data - 多対多構造での削除
早く確認したいだけです。データ モデルにカタログと製品の 2 つのエンティティがあるとします。相互に多対多の関係があり、両方が必要です (カタログには少なくとも 1 つの製品が必要であり、すべての製品はそれぞれ少なくとも 1 つのカタログに属している必要があります)。したがって、製品を削除する場合、その削除はもちろん無効にする必要があります。
しかし、カタログの削除ポリシーはどうあるべきでしょうか? カタログが削除された場合、必ずしもすべての製品がカタログに排他的に属するわけではありません。製品は、複数のカタログに属する場合があります。したがって、カスケードは絶対に使用しないでください。しかし、Nullify で十分でしょうか? カタログに属さない製品がぶら下がっている場合はどうすればよいですか? Core Data には、多対多スキーマでこの問題を解決するために何が組み込まれていますか? スキーマを変更する必要がありますか?
c# - 2 つの異なるデータベース間で大量のデータを比較する最良の方法は何ですか?
Web サービスからデータを受信し、ローカルの postgresql データベース内に格納するデスクトップ アプリケーションが 1 つあります (Web サービスが SQL Server データベースからデータを取得している間)。プロセスの最後には、ローカル データベースのテーブル内に最低 250 万のエントリが存在しますが、これは Web サービスから一度に約 300 行のバッチで、約 15 日の時間枠内で受信されます。
私が必要としているのは、サーバーのデータベースとまったく同じ情報がローカル データベースにあることを確認する方法です。
受信したバッチごとに何らかのチェックサムを作成し、すべてのバッチを受信した後、テーブル全体の別のチェックサムを作成することを考えていますが、これが最善の解決策であるかどうかはわかりません。どこから作成を開始すればよいかを理解してください。
PS: TCP は既に整合性チェックを処理しているため、これが必要かどうかはわかりませんが、データが同じであることが重要です。
hash - ファイルの整合性チェック
ネットワーク全体で共有する非常に大きなファイル(> 1 GB)の大きなセット(10以上)があります。小さなファイルもいくつかあることがあります。
とにかく、転送後にこれらのファイルが正しいことを確認したいと思います。したがって、いくつかの異なるハッシュ(SHA1とMD5、おそらくCRC32も)を計算し、それをメタデータファイルに保存するツールを作成できると考えています。受信側にいる人は誰でも、ツールを使用してファイルを確認できます。
ファイルのサイズを考えると、壊れたファイルが元のファイルとの衝突を引き起こす可能性があることを心配する必要がありますか?誰かが故意に衝突を起こす心配はありません。
その場合、bittorrentを使用することもオプションです。これは、はるかに小さいチャンク(数KBから数MB)のSHA1を計算するためです。もう1つの利点は、データの送信も処理できることです。ただし、同じチャンクが異なるファイルに属する可能性があるため、不便も追加されます。その場合、ファイルを検証するためにファイルの「ネイバー」が必要になります。もちろん、ダミーのパディングを追加することもできますが、今は複雑になっています。
2^80と2^64でさえかなり大きな数であり、そのハッシュは「雪崩効果」を持つように設計されていることを私は知っているので、多分私は少しパラノイアです。
triggers - SQLiteデータベースでは、カスケードテーブルの変更を処理するためにティガーを使用する方が良いですか、それともプログラムで行う方が良いですか?
バックグラウンド
データにSQLiteDBを使用するプロジェクトがいくつかあります。データベースに保存されているデータは、明らかにキー/外部キー値によってリンクされた複数のテーブルに保存されています。
これらのデータベースでは、1つのレコードに何かが変更された場合、他のいくつかのテーブルを更新する必要があります。私の頭から離れた最良の例は、レコードを削除することです。削除するレコードに関連する他のすべてのレコードも削除する必要があります。さて、この例はキー/外部キー値を使用して解決できると思いますが、より複雑な更新についてはどうでしょうか?
現在、私はプロのDB管理者ではありませんが、DBにデータの整合性が必要であるか、状況が醜くなることはわかっています。
質問
だから、私の質問。プログラムで関連するテーブルを更新するときは、より細かく制御できることを知っていますが、人的エラーと時間が犠牲になります。何かを見逃したり、テーブルの更新を正しく実装しなかったりする可能性があり、更新のコーディングにかなり時間がかかります。一方、トリガーを入れてDBに他のテーブルの更新を処理させることはできますが、そうすると多くの制御が失われます。
それで、どちらが良いですか?それぞれが異なる状況で優れていますか?
mysql - mysql で位置列を再インデックス化する
これは MySQL に関する質問です。
次の構造のテーブルがあります。
すべてのアイテムには位置があり、各位置は 1 回だけ使用する必要があります。位置はインクリメントする必要があります (したがって、40 個のアイテムがある場合、位置は 1 から 40 まで移動する必要があります)。
ただし、このテーブルのデータはいたるところにあります (同じ位置が複数回使用されており、位置のない行もあります)。位置を再インデックスしてテーブルをリセットしたいと思います。これを行うときは、既存の注文を (完全でなくても) 尊重したいと思います (可能であれば - そうでない場合は、ポジションを破棄できます)。
望ましい
編集:申し訳ありませんが、テーブルが複数の親内のアイテムの位置を説明しているため、位置列を自動インクリメントするだけでは機能しません (アイテムは複数の親を持つことができます)。