問題タブ [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.
backup - データ ソース間でデータの一貫性を確保する方法
元のデータ ソースが更新されるたびに、ネットワークを介して別のデータ ソースにデータを送信するサービスを持つ機関データ ソースがある状況があります。私が推測するオフサイトバックアップに似ています。セカンダリ データ ソースが元のデータ ソースと一致していることを確認する方法を探しています。
少なくとも 2 つの異なる点を確認する必要があると思います。
データの整合性: これは、チェックサム形式のエラー チェックで確認できると思います。
宛先に到達するデータ: データが実際にセカンダリ データ ソースに記録されていることを確認する方法がわかりません。ネットワークの問題などにより、データが宛先に届かない可能性があります。
セカンダリ データ ソースと元のデータ ソースのデータの整合性を確保するために使用できるベスト プラクティスはありますか?
python - 別の MongoDB 接続から自分の書き込みを読み取る
次のような2つのプロセスがあるとします
最初のプロセスはいくつかの書き込み操作を行い、次にデータの準備ができたことを 2 番目のプロセスに通知します。次に、2 番目のプロセスが変更されたデータの読み取りを開始します。2 番目のプロセスが常に新しいデータを読み取るのは正しいですか? MongoDB は (レプリカ セットとしてではなく) スタンドアロン サーバーとして開始されました。すべての書き込み操作は、確認済みの書き込み懸念 ({w: 1}) で行われました。異なる接続間の一貫性の保証はありますか? 公式ドキュメントでは見つかりませんでした。
google-cloud-platform - xSpanner: リーダーはどのようにデータをレプリカに同期しますか?
Spanner: Google の Globally-Distributed Databaseのセクション 2.1 には、次のように書かれています。
レプリケーションをサポートするために、各スパンサーバーは各タブレットの上に単一の Paxos ステート マシンを実装します。(初期の Spanner 化身は、タブレットごとに複数の Paxos ステート マシンをサポートしていたため、より柔軟なレプリケーション構成が可能でした。その設計の複雑さにより、私たちはそれを放棄しました。)
Paxos ステート マシンは、一貫して複製されるマッピングのバッグを実装するために使用されます。
この単一の Paxos ステート マシンは、「Paxos Made Simple」で言及されている Paxos ステート マシンと似ていますか?
新しいリーダーが失われたすべてのデータを学習する方法を選択したときのことを知りたいです。Spanner での Paxos グループの詳細な実装について説明できる人はいますか?
ios - Firebase の非常に近いイベントでのデータの一貫性
私はiOSゲームを構築しています。各ゲームルームは 2 人のユーザーで構成されています。2 人のユーザーが一致した後、両方のデバイスに「応答待ち」タイマーが表示されます。8 秒以内に「準備完了」ボタンをクリックする必要があります。そうしないと、両方とも部屋から追い出され、Firebase から削除されます。 .
ユーザーの正しい状態 (各ユーザーが [I'm Ready] ボタンをクリックする前):
重要な注意事項 - 両方のデバイスのタイマーの時間差は +-2 秒です。つまり、デバイスのタイマーがもう一方のタイマーよりも先に終了します。
ユーザーが「I'm Ready」ボタンを押すと、私は を更新しstate : "userReady"
、他のユーザーも準備ができているかどうかを確認します (その値を観察しstate
ます)。
両方のユーザーがuserReadyの場合- ゲーム オン。
問題
そのため、100% のケースで、両方のデバイス間にわずかな時間差があることを既に確認しています。しかし、たとえば、
User1
ボタンをクリックしI'm Ready
ました。これUser2
でChildUpdate
イベントが発生し、彼が知る限り、User2
完全にプレイする準備が整いました。
User1 timer
が最初に終了する(事実)ので、彼のタイマーが終了すると、秒 のUser2 timer
ままになります。さて、時間通りにゼロになったので、彼は部屋から追い出され、各ユーザーノードでイベントを送信します. これが起こっている間、この非常に小さな「ギャップ」で、(終了のゼロ時間と時計ショーの1秒(事実)の間-そして彼は準備ボタンを押します。彼はそれがプレーする準備ができていると思っています.ゲームが始まるよりも。1
User1
removeValue
User1 timer
User2
User1
最終結果 -
両方のプレイヤーが Firebase から削除されました
User1 が部屋から出ています
ユーザー 2 がゲームを開始します (そして、彼は自分が対戦相手だと思っています)
この最終シナリオをどのように解決できますか? 、「UpdateChild状態」が完了したときにのみ関数を呼び出してみstartGame
ましたが、おそらくupdateChild、およびremoveValueの順序が原因で、まだ入りますか?
助言がありますか?そして、常に到達してくれたFirebaseチームに感謝します!!!
mysql - 正規表現による MySQL クエリ可能なフィールドの制約
のデータ型に加えてVARCHAR(255)
、正規表現によってデータに制約を追加したいと思い[a-zA-Z ]
ます。
でメタデータをクエリする方法のように、正規表現をクエリできるようにしたいと思いますinformation_schema
。
関連する投稿をいくつか見ましたが、探しているものとはまったく異なります。私は見ました: varchar() 列を特定の値に制限しますか? 制約の使用方法を示しており、ここでトリガーを介して見てきました:正規表現を使用してMySQLでデータチェックを強制することは可能ですか?
正規表現を制約として使用し、それらの制約を照会できますか? もしそうなら、どのように?
java - 「Counter」のサンプル クラスでは、スレッド干渉は実際にどのように発生しますか?
スレッド干渉の概念を学習しようとしていますが、Java Tutorial Oracle で次の例に遭遇しました。
Oracle のチュートリアルでは、2 つのスレッドが variablec
にアクセスしようとすると、一方のスレッドによる変更が他方のスレッドに反映されないスレッド干渉が発生する可能性があると述べています。
ただし、実際に概念を説明するコードは提供されていません。Counter
スレッド干渉が実際にどのように発生するかを示すために、クラスに基づいたコード例を提供してもらえますか?
postgresql - day_from から day_to までの特定の時間間隔内に特定の day_id が含まれているかどうかを確認する方法は?
私はかなり経験の浅い SQL 開発者ですが、一貫したデータベースを持つために最善を尽くしています。私が解決しようとしている問題は、システムの上位レイヤーで実行できる可能性がありますが、それらが属する場所であるデータベースレイヤーで処理するのが最善であることを認識しています。
したがって、私が持っているのは、定義された日に繰り返される場合と繰り返されない場合があるオファーを格納するテーブルです。
ここに私の問題があります:
day_id
2 は、2016 年 3 月 1 日または 3 月がではなく であるため、 2016-03-01
to には意味がありません。2016-03-01
TUESDAY = 3
MONDAY = 2
このテーブルに任意の間隔を格納できるようにしたいのですが、意味があることを確認する必要があります。私が探しているのは、特定の間隔valid_from_day
にvalid_until_day
特定の日が含まれているかどうかを確認する方法day_id
です。これは実際には簡単なチェックですが、これに a を使用できるCONSTRAINT
かどうか、またはこれに a を使用する必要があるかどうかTRIGGER
、およびそれがどのように見えるかはわかりません。