問題タブ [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.
testing - 組み込みシステムでヒープとスタックのRAMの整合性を確認する方法
LEON2プロセッサ(Sparc V8)を使用してプロジェクトに取り組んでいます。プロセッサは8MバイトのRAMを使用しており、ブートのセルフテスト中に整合性をチェックする必要があります。私の問題は、私のブートがヒープ/ BSS /スタックにRAMのごく一部を使用していることです。これは、アプリケーションをクラッシュさせずに変更することはできません。私のRAMテストは非常に簡単です。すべてのRAMアドレスに特定の値を書き込んでから、それらを読み戻して、RAMチップをアドレス指定できることを確認します。
この方法は、使用可能なほとんどのRAMに使用できますが、残りのRAMの整合性を安全に確認するにはどうすればよいですか?
cassandra - Cassandra での読み取りと書き込みの一貫性
読み取り-自分-書き込みの一貫性は、いわゆる結果的一貫性から大幅に改善されています。プロフィール写真を変更した場合、1 分後に他の人が変更を確認するかどうかは気にしませんが、ページのリロード後にまだ表示される場合は奇妙に見えます。古いもの。
複数のノードで完全な読み取りチェックを行うことなく、Cassandra でこれを実現できますか?
ConsistencyLevel.QUORUM
不特定のデータを読み込みながら使用しても問題なく、実際に n>1 ノードが読み込まれています。ただし、クライアントが書き込みと同じノードから読み取る場合 (実際には同じ接続を使用する場合) は、無駄になる可能性があります。この場合、一部のデータベースは、以前に書き込まれた (私の) データが返され、古いデータではなく常に返されることを保証します。を使用ConsistencyLevel.ONE
してもこれは保証されず、競合状態につながると想定されます。いくつかのテストでこれが示されました:
このシナリオの私の仮定のセットアップは、2 つのノード、レプリケーション ファクター 2、読み取りレベル 1、書き込みレベル 1 です。
私の意見では、RF=3、RL=quorum、WL=quorum の 3 つのノードを使用すると、「自分の」データのみで一貫性を保つだけで十分な場合、無駄な読み取り要求が発生します。
// seo: 別名: セッションの一貫性、read-after-my-write の一貫性
mysql - 顧客がオンラインで注文しているときに DB で価格変更を処理するにはどうすればよいですか?
Product
、、、などの列を持つデータベース テーブルproduct_id
がありprice
ますinventory_count
。
ユーザーがクリックして、特定の商品を特定の価格で購入します。私のプログラムは、製品と価格を一覧表示する確認ページを生成します。すべて問題なく、ユーザーは「確認」をクリックします。私のプログラムはその製品の を更新inventory_count
し、製品の に記載されている金額をユーザーのクレジット カードに請求しますprice
。
ただし、確認ページが生成されてから、ユーザーが [確認] をクリックするまでの間、その商品の価格は変更されています。したがって、ユーザーは確認ページで 10 ドルの価格を見たかもしれませんが、[確認] をクリックするprice
と、製品テーブルの価格はすでに 11 ドルに変更されており、それが請求されます。
このような状況を処理する最善の方法は何ですか? 関連する場合は、MySQL と Python を使用しています。
amazon-s3 - 結果整合性とメッセージング
私はこの問題に遭遇しましたが、これまでのところ、唯一の解決策はより強力な一貫性モデルのようです。サービスは、結果整合性を提供する Amazon S3 です。BLOB ストレージのバックエンドとして使用します。
問題は、アプリケーションにメッセージング パターンを導入したことです。そのメリットに疑いの余地はありません。ただし、より強い整合性が求められるようです。シナリオ:
- サブシステムはユーザーからデータを取得します
- データはS3に保存されます
- メッセージが送信されます
- メッセージは別のサブシステムによって受信されます
- データはS3から読み込まれます
- ...コオロギ。これは古いデータですか?時々そうです。
そう。S3からの一貫性のない読み取りを避けるために、メッセージでデータを送信することは明らかです。メッセージが不必要に大きくなり、レシーバーがビジー状態またはダウン状態になり、新しいデータが既に利用可能であるにもかかわらず遅れてメッセージを受信すると、メッセージは失敗します。
これに対する解決策はありますか? それとも、RDBMS や MongoDB のようなより一貫性のあるバックエンドのために S3 をダンプする必要があるのでしょうか?
php - データベースの予期しないことを回避してログに記録する方法は?
たとえば、ユーザーが製品を作成し、それをカテゴリに割り当てます。
カテゴリには、いくつかの記録があります。
ユーザーが製品を作成し、製品にカテゴリを割り当てる必要があり、ユーザーは次のようにします。
そして、フローは次のようになります。
しかし、ステップ 1 のチェックを終えて、2b が開始される前にチャンスはありますか。管理者は電話カテゴリを削除します。これが発生した場合、データベースは cat id watch を持たないレコードを挿入します。データベースには次のようなものがあります。
しかし、次のような記録があります。
これを行う機会がある場合、どうすればこれを回避できますか? ありがとうございました。
(codeigniter で php と mysql を使用)
cassandra - Cassandraデータモデルとのトランザクション
CAP理論によると、Cassandraは結果整合性しか持てません。さらに悪いことに、適切な処理を行わずに1つの要求中に複数の読み取りと書き込みが行われると、論理的な一貫性が失われる可能性があります。言い換えれば、私たちが物事を速く行うならば、私たちはそれを間違って行うかもしれません。
一方、Cassandraのデータモデルを設計するためのベストプラクティスは、実行するクエリについて考え、それにCFを追加することです。このように、1つのエンティティを追加/更新するということは、多くの場合、多くのビュー/CFを更新することを意味します。アトミックトランザクション機能がなければ、それを正しく行うことは困難です。しかし、それで、AとPの部分が再び失われます。
これは多くの人に関係しているとは思わないので、なぜだろうと思います。
- これは、1回のセッションで複数の読み取りと書き込みを行わないようにデータモデルを設計する方法を常に見つけることができるためですか?
- これは、「正しい」部分を無視できるからですか?
- 実際には、ACID機能は常に中間のどこかにありますか?アプリケーション層に実装するのか、それを処理するミドルウェアを追加するのか。
mongodb - NoSQL: MongoDB または BigTable が常に「利用可能」ではないということはどういう意味ですか
Nathan Hurst のVisual Guide to NoSQL Systems を読んで、彼はCAP
三角形を含めました。
C
一貫性A
有効性P
アーティショントレランス
SQL Server がAC
システムであり、MongoDB がCP
システムです。
これらの定義は、カリフォルニア大学バークレー校の Eric Brewer 教授と、PODC 2000 (分散コンピューティングの原則) での彼の講演に由来します。
可用性
可用性とは、サービスが利用可能であることを意味します (上記のように完全に動作するかどうか)。本を購入するとき、ウェブサイトが通信不能であるというブラウザのメッセージではなく、応答を得たいと考えています。Gilbert と Lynch は、CAP 定理の証明で、最も必要なときに可用性が失われることがよくあることを適切に指摘しています。利用可能であるがアクセスされていないサービスは、誰にとっても何のメリットもありません。
MongoDB または BigTable のコンテキストで、システムが「利用できない」とはどういう意味ですか?
接続しようとしましたが (TCP/IP などで)、サーバーが応答しませんか? クエリを実行しようとしましたが、クエリが返されませんか、またはエラーが返されますか?
利用できないとはどういう意味ですか?
database - 同時に実行された場合、トランザクション (私にとっては MySQL) はどのように動作しますか?
これが私のシナリオです:
テーブル A には 4 行 (id、col1、col2、col3) があり、最後の 3 行には UNIQUE インデックスが配置されています (id は主キー)。ユーザー Foo とユーザー Bar の 2 人のユーザーがいるとします。Foo と Bar の両方がテーブル A に多くの行を挿入するトランザクションを開始し、同時にトランザクションをコミットした場合、テーブルで UNIQUE インデックスの不整合が発生する可能性はありますか?
言い換えれば、トランザクションがアトミックである場合 (そしてアトミックである場合)、それが実行されている限り、最初のトランザクションの一貫性にリスクをもたらす可能性のある他のトランザクションは実行されないということですか?
前もって感謝します!
caching - memcached と MySQL のような rdbms を使用する場合のキャッシュの一貫性
私は今学期にデータベースの授業を受けており、RDBMS と memcached などのキャッシュ サーバーとの間でキャッシュの一貫性を維持する方法について勉強しています。競合状態が発生すると、一貫性の問題が発生します。例えば:
- キャッシュからを実行し
get(key)
、キャッシュ ミスが発生したとします。キャッシュ ミスが発生したため、データベースからデータを取得put(key,value)
し、キャッシュに対して a を実行します。 - しかし、競合状態が発生する可能性があり、データベースから取得したデータを他のユーザーが削除する可能性があります。
put
この削除は、キャッシュを行う前に発生する可能性があります。
したがって、理想的にはput
、データがデータベースに長く存在するため、キャッシュへの挿入は発生しないはずです。
キャッシュ エントリに TTL がある場合、キャッシュ内のエントリの有効期限が切れる可能性があります。それでも、キャッシュ内のデータがデータベースと一致しないウィンドウがあります。
この種の問題について語っている記事/研究論文を探しています。しかし、有用なリソースは見つかりませんでした。