問題タブ [data-consistency]
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 - 確認コード/番号を生成する方法は?
ユーザーが電話をかけ、電話のキーパッドで確認番号を入力する必要があるアプリケーションに取り組んでいます。
入力した数字が正しいかどうかを検出できるようにしたいと思います。電話システムは有効な番号のリストにアクセスできませんが、代わりにアルゴリズム (クレジット カード番号など) に対して番号を検証します。
要件の一部を次に示します。
- 有効なランダムコードを入力するのは難しいに違いない
- タイプミス(桁の入れ替わり、桁違い)をすると有効なコードを取得するのが難しいに違いありません
- 合理的な数の可能な組み合わせが必要です (1M としましょう)
- ユーザーのエラーを避けるために、コードはできるだけ短くする必要があります
これらの要件を考えると、どのようにそのような数を生成しますか?
編集 :
@Haaked: ユーザーが電話で入力するため、コードは数値でなければなりません。
@matt b: 最初のステップでは、コードが Web ページに表示されます。2 番目のステップでは、コードを呼び出して入力します。ユーザーの電話番号がわかりません。
フォローアップ : 数値の有効性をチェックするアルゴリズムをいくつか見つけました(この興味深い Google Code プロジェクトを参照してください: checkDigits )。
constructor - コンストラクターで間違ったパラメーター値をチェックする必要がありますか?
すべてのコンストラクターでデータの有効性をチェックしますか、それともデータが正しいと想定して、パラメーターに問題がある特定の関数で例外をスローしますか?
algorithm - チェック ディジットの計算に使用するアルゴリズムは何ですか?
数字のリストのチェック ディジットを計算するために使用するアルゴリズムは?
リストの長さは 8 ~ 12 桁です。
参照:
確認コード/番号を生成する方法?
sql-server - SQL Serverの「最大許容トリガー深度」?
トリガーによって実行されたアクションが別のトリガーを起動する(または起動しない)ことを許可する「トリガーが他のトリガーを起動できるようにする」サーバー設定について知っています。理解しているように、私の唯一のオプションはTrueです(トリガーが他のトリガーを起動できるようにします。終わりのない再帰につながる)またはFalse(トリガーによって実行されたアクションは他のトリガーを起動せず、予期しない結果または一貫性のないデータにつながる可能性があります)。
SQL Serverで「最大トリガー深度」を適用する方法はありますか?私は2008年を使用していますが、それが重要な場合は、どのバージョン(または、他のRDBMSでも、私の知識は確かに限られていますが)の機能を認識していません。たとえば、これが私が欲しいものです:
- 「最大トリガー深度」を「2」に設定します。
- table1に行を挿入します
- table1のトリガーがtable2に挿入されます
- table2のトリガーがtable3に挿入されます
- table4に挿入するトリガーがtable3にありますが、最大深度が2であるため、トリガーは実行されません(理想的ではありませんが、SQLServerでの現在の「再帰的トリガー=False」の動作と一致します)。挿入のセット全体がロールバックされ、「最大トリガー深度(2)を超えました-挿入に失敗しました」というメッセージ(理想)などのエラーで失敗します。
これが可能かどうか、またはこの動作に対する未解決の機能要求があるかどうかを知っている人はいますか?私が頭がおかしくて、これが行動のひどい考えであるなら、私はそれを受け入れますが、その理由(意図しない結果など)を知りたいです。
java - この同時発生の状況でデータの一貫性を確保するにはどうすればよいですか?
問題はこれです:
- 1つのデータベーステーブルにアクセスする必要がある複数の競合するスレッド(100以上)があります
- 各スレッドは
String name
-を渡します。その名前がテーブルに存在する場合、データベースは行のIDを返す必要があります。名前がまだ存在しない場合は、名前を挿入してIDを返す必要があります。 - データベース内に存在できるインスタンスは1つだけ
name
です。つまり、名前は一意である必要があります
name1
スレッド2も挿入しようとすると同時にスレッド1が挿入されないようにするにはどうすればよいname1
ですか?つまり、name
並行環境での一意性をどのように保証しますか?これも可能な限り効率的である必要があります-これは深刻なボトルネックになる可能性があります。
MySQLとJavaを使用しています。
ありがとう
database - データの整合性とデータの一貫性に違いはありますか?
data consistency
とについて少し混乱していdata integrity
ます。Oracle データベースの概念から:
ウィキペディアより
data consistency
では、との違いは何data integrity
ですか?
前もって感謝します。
md5 - adler32 チェックサムの信頼性はどのくらいですか?
たとえば、md5 チェックサムと比較して、adler32 チェックサムはどの程度信頼できるのだろうか? ウィキペディアでは、adler32 は md5 よりも「信頼性がはるかに低い」と言われていましたが、どの程度、どのように?
より具体的には、サイズが 20GB 以上の (tar) ファイルを長時間アーカイブする場合の整合性チェックとして十分信頼できるかどうか疑問に思っています。
ruby-on-rails - レコード更新時の Rails 整合性チェック
私はシステムを開始しますが、すべてのニーズをカバーするレールを選択しました。
システムのある時点でデータベースの更新に一貫性を持たせる必要があります。いくつかの公式ドキュメントで、Rails がレコードのバージョンを自動的にチェックできることを見つけたのを覚えています。
問題は次のとおりです。
- データベースのテーブルにレコードが存在するとします。「アカウント」としましょう。
- Bob という名前のユーザーがそのレコードを見つけて編集を開始するとします。ユーザーが名前を「Incomings」から「Sales」に変更するとします。
- Bob がレコードを編集しているときに、Susan という名前の別のユーザーがまったく同じレコードを見つけて編集を開始したとします。Susan がアカウントの名前を「Incomings」から「Service Fees」に変更したいとします。
- 次に、Bob は変更を保存します。
- Bob が変更を保存した後、Susan は自分の変更を保存しようとします。
この時点で、システムはスーザンに、別のユーザーがレコードを変更したため、その変更を保存できないことを通知する必要があります。
この検証は手動で行うこともできますが、Rails によって自動的に行われることを覚えています。この検証が必要なデータベースのテーブルに対する唯一の要件は、「バージョン」列を追加することであり、Rails がこれを処理します。列を「バージョン」と呼ぶ必要があるかどうかは本当に覚えていませんが、実際には列だけがこの機能を有効にします。
問題は、そのドキュメントが見つからないことです。誰かがそのドキュメントへのリンクを提供してくれたら、私は感謝します。なぜなら、「バージョン」列の要求は私が覚えているすべてであり、私が世話をしなければならない他のことを知りたくないからです。
前もって感謝します。
webserver - Web サーバー上のファイルにアクセスする際の一貫性の保証
アプリケーション用の単純な更新サーバーを構築中です。更新されるアプリケーションの部分は構成ファイルです。これらのファイルの最新のコピーは更新サーバーに存在し、これらのファイルは、アプリケーションを管理する個人 (「アプリケーション マネージャー」) がいつでも編集できます。ただし、ファイルがアプリケーション マネージャーによって編集されている間に、アプリケーションがこれらのファイルの 1 つをダウンロードできるようにしたくありません。これは明らかに一貫性の問題を引き起こします。これらのファイルが一貫性のない状態でアクセスされるのを防ぐにはどうすればよいですか? または、アプリケーションがファイルが一貫した状態で受信されたかどうかを判断するために使用できるチェックサムをファイルとともに提供することで解決できますか?
編集: .htcaccess を使用したアクセス制限に関するこの投稿を見て、役に立つと思います。しかし、私は、アプリケーション マネージャーができるだけ何も考えないようにしたいと考えています。接続を再許可することを忘れると、問題が発生する可能性があります。そうは言っても、ある時点で何らかの作業を行う必要があります。多分これは私が行くべき道ですか?
python - PythonコードでのSolrの一貫性
複数のアナライザーマシンでPythonコードを実行し、それぞれがsolrからドキュメントを選択し(操作の選択)、DBから更新されたフィールドを含むドキュメントを再送信することでsolrのデータを変更します(更新/挿入の場合)。ただし、異なるマシン上の異なるsolrインスタンスには独自の更新されたドキュメントがあるため、これにより、マシン間でデータの不整合が発生します。
さまざまなマシンによってクエリおよび更新される中央のSolrドキュメントリポジトリを保持して、データの一貫性を確保する方法はありますか?