問題タブ [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.
database - memcached エントリの更新
私は現在、読み取り用に最適化されたシステムを開発しています。アーキテクチャは、信頼できる永続ストレージとしての MySQL と、MySQL データベースとクライアントの間の memcache レイヤーです。書き込みは時々発生しますが、読み取りよりもはるかに頻度が低くなります。
データベースは比較的弱いホストで実行されているため、データベースへのアクセスを最小限に抑えるインセンティブがあります。私の心の現在のプロトコルは次のようなものです:
[DB と memcache の両方のエントリは、楽観的ロックのバージョン管理シーケンスに関連付けられています]
- 起動時に、専用プロセスが現在のすべてのエントリを db から memcache にロードします。
- 書き込みが発生すると、次のようになります。
- を。memcache (memcache バージョン) からエントリ バージョンをロードします。
- b. データベース トランザクションで、(db エントリ バージョン < ロードされた memcache バージョン + 1) の場合、db の更新を試みます。成功すると、db エントリ バージョンは (memcache バージョン + 1) に更新されます。
- c. b が成功した場合は、新しいエントリとバージョン = (memcache バージョン + 1) で memcache を更新します。
- 一方、専用プロセスは定期的に db からすべてのデータをロードして memcache に配置します。これは、一部の書き込みが memcache に伝達されない場合に備えてです。ここで 2 の競合状態が発生する可能性がありますが、許容範囲内であると推定しています。
私の現在の仮定は、いつでも (memcache バージョン) <= (db バージョン) のエントリであり、したがって 2 からの複数の同時書き込みは競合状態を引き起こさないということです。
誰かがこの設計から何か問題を見つけることができますか? ありがとう!
php - 彼のすべてのセッション間のユーザー データの一貫性
PHPでサイトを開発しています。ユーザー セッションが開始すると、$_SESSION 変数にすべてのデータベース行をロードします。ユーザーが db 値を変更すると、$_SESSION var も更新します。
問題は、同じユーザーに対して複数のセッションがアクティブになっている場合に発生します。データベースを過負荷にすることなく、同じユーザーのすべてのセッションのデータを更新する方法はありますか? または、代わりに、同じユーザーに属するすべてのセッションに同じセッション ファイルを使用するように php を強制する方法はありますか? または、セッションが継続するたびにデータベースにクエリを実行する必要がありますか?
もう 1 つのジレンマは、それだけの価値があるかどうかです。つまり、このメカニズムがサーバーの負荷をどれだけ軽減できるかはわかりません。また、このメカニズムがファイルベースのセッションに適用できるかどうか、または別のセッション格納タイプを使用する必要があるかどうかもわかりません。
この質問は、私のこの他の質問に多少関連しています(これに対する回避策が単にすべてのセッションファイルを削除することであっても)。
web-services - 2 つの重複する POST リクエストを Web サービスに送信しないようにする方法
オブジェクトを作成するために POST リクエストを送信します。そのオブジェクトはサーバー上で正常に作成されましたが、応答を受信できない (どこかにドロップされた) ため、POST 要求をもう一度 (何度も) 送信しようとします。その結果、サーバー側に多くの重複オブジェクトが存在します。
その問題を処理する公式の方法は何ですか? これは非常に一般的な問題だと思いますが、正確な名前がわからないため、グーグルで検索できません。ありがとう。
mysql - テーブルの mysql ダンプの一部を (特定の行から) インポートするシェル コマンド
具体的には:
これには逆のコマンドがあります:
シェルを介して (特定の行以降の) テーブル ダンプの一部をインポートできますか?
状況: PC から lynux mysql にインポートする適切な (2G) dbテーブルがあり、シェル コマンドを使用してそのテーブルの約 30% をインポートすることに成功した後、ISP への接続が切断されました。
問題:
停止した行からダンプをアップロードし続けたい。特に、インポートが停止した行から新しいダンプを作成したくありません。
algorithm - データ整合性アルゴリズム
2 ~ 4 人用のネットワーク ゲームを開発しています。モデルの中心には、誰もがいつでも編集できる google-docs スプレッドシートのように機能するデータ構造があります。簡単にするために、スプレッドシートの各セルには 1 文字のみを含めることができます。
いくつかの能力と要件: 1. すべてのプレーヤーがいつでもスプレッドシートのセルを編集できます。(これは、「ロックされたセル」があってはならないことを意味します) 2. すべてのネットワーク トランザクションは信頼できます (ただし、順不同で到着する可能性があります)。
共有スプレッドシートのようなデータ構造を処理するためのアルゴリズムを開発するのに苦労しています。同様の問題に精通していて、解決策がある人はいますか? または問題を解決する簡単な方法を提案しますか?
ありがとうございました。