問題タブ [eventual-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.
mongodb - 非分散システムで NoSQL を使用する意味はありますか? (結果整合性を理解しようとしている)
この 2 日間、NoSQL、MongoDB、CouchDB などについて読んで学んでいますが、これが自分にとって適切な種類のストレージであるかどうかはまだわかりません。
私が心配しているのは、結果整合性の問題です。そのような一貫性は、クラスターを使用する場合にのみ機能しますか? (私は単一の専用サーバーでサイトをホストしているので、NoSQL の恩恵を受けることができるかどうかはわかりません) (ACID の代わりに) 結果整合性を持つことができるアプリケーションの種類と、そうでないアプリケーションの種類?いくつか例を挙げていただけますか?結果整合性が問題ないアプリケーションで起こりうる最悪の事態は何ですか?
私が読んだもう 1 つのことは、MongoDB が多くのことをメモリに保持しているということです。ドキュメントでは、2 GB のデータ制限を持つ 32 ビット システムについて何か述べています。これは、32 ビット システムの RAM の制限によるものですか?
nosql - Cassandra を使用してデータの整合性を維持する
ご存知のように、cassandra には ReplicationFactor の ConsistencyLevel があります。そして、データの一貫性を維持するためにそれを活用したいだけです. 価格情報を保持することになっているためです。
では、どの戦略が優れているでしょうか?
Write ALL クライアントに応答する前に、N 個のレプリカすべてに書き込みが行われるようにします。応答しないレプリカは操作に失敗します
Read ALL すべてのレプリカを照会し、すべてのレプリカが応答すると、最新のタイムスタンプを持つレコードを返します。応答しないレプリカは操作に失敗します。
確かに write ALL が最も安全なようです。しかし、すべてを読む方が良いかどうかわかりませんか? 賛否両論について何か意見はありますか?あなたがより良いと思うnosqlの他の選択肢はありますか?
google-app-engine - appengineHRDのエンティティ間で一貫した継承プロパティ
私はファイルシステムを実装しています。各フォルダーにはACLがあります。これは基本的に、フォルダーの読み取り/書き込みが許可されているユーザーIDのリストにすぎません。ACLを上位レベルのフォルダーから下位レベルのフォルダーにコピーしてこれを実装したい-継承されたアクセス許可が必要ですが、読み取り時にそれらを検索する必要はありません。フォルダー間の関係を、サブフォルダー内のスーパーフォルダーへの参照として保存します。
したがって、次の操作の順序は、HRDで解決するのは困難です。
- フォルダーBを、既に存在するフォルダーAのサブフォルダーとしてデータストアに配置します。
- Aの権限を変更します。
問題は、手順2でAの権限を変更するときに、Aのすべての子を検索して、それらにも権限の変更を適用できるようにする必要があることです。残念ながら、これはクエリを意味するため、Bがそのクエリに表示されない場合があります。Bは許可の変更を見逃す可能性があります!
これまでに考えた唯一の解決策は、「サブフォルダー」の関係を双方向に格納することです。Aにはすべてのサブフォルダーへの参照があり、Bにはスーパーフォルダーへの参照があります。次に、グループ間トランザクションを使用してAとBを同時に更新でき、手順2でクエリを実行する必要はありません。直接取得を簡単にキャッシュできるため、インデックススキャンが不要なため、とにかくこれが適している可能性があります。
他に何かアイデアはありますか?このソリューションの冗長ストレージのニーズやXGトランザクションの必要性は好きではありません。
nosql - 結果整合性のみを提供するデータベースでアプリケーションを作成するにはどうすればよいですか
Cassandra および他の多くの同様のシステムは、トランザクションをサポートしていません。代わりに、最終的な一貫性を提供します。つまり、システムへのライターは最終的に一貫した状態になります。トランザクションがエミュレートできるものをエミュレートするために使用する方法の例はありますか?
結果整合性が必要な場合があることは理解しています。たとえば、ソーシャル ネットワークの友人のリストが常に最新であるとは限らないことなどは簡単に許容できます。しかし、ホテルの予約や送金などのシステムの場合はどうすればよいでしょうか。Google アプリ エンジンにはエンティティ グループがありますが、結果整合性を提供するシステムで何らかの方法でエミュレートできますか?
同様のアーキテクチャの例を見つけることができる記事はありますか?
google-app-engine - DjangoAppEngineと高レプリケーションデータストアの結果整合性の問題
djangoappengineを使用していますが、高整合性データストアでの結果整合性の処理方法にいくつかの問題が発生したと思います。
まず、エンティティグループはdjangoappengineにも実装されていません。
次に、djangoappengine getを実行すると、基盤となるアプリエンジンシステムがアプリエンジンクエリを実行していると思いますが、結果整合性があります。したがって、キーを使用して一貫性を想定することさえできません。
これらの2つのステートメントが正しいと仮定すると(そして私はそれらが正しいと思います)、高レプリケーションデータストアでdjangoappengineを使用して、どのように複雑なアプリを構築しますか?値を保存してから同じ値を取得しようとするたびに、同じ値になる保証はありません。
amazon-s3 - S3 オブジェクトのメタデータは強い一貫性がありますか
S3 オブジェクトには、ここで説明されているように、PUTS および DELETES の上書きの結果整合性があります - http://aws.amazon.com/s3/faqs/#What_data_consistency_model_does_Amazon_S3_employ
これは S3 オブジェクトとメタデータの両方に適用されますか、それともオブジェクトのメタデータは書き込み後に読み取られますか?
eventual-consistency - 分散データベース - 結果整合性の意味
結果整合性と分散データベースについて詳しく学んでいますが、質問があります。
私のシナリオでは、ユーザーが投稿したリスト (たとえば、不動産リスト サイト) を格納する分散データベースがあります。結果整合性の影響の 1 つについて私が理解していることは、私が何かを投稿し、ユーザー X が私のリストを検索した場合、データベースとまだ一致していない複製バージョンのデータベースを見ている場合、彼らは私の投稿をすぐには見ない可能性があるということです。私が投稿したもの。
ここで、投稿を行ってシステムからログアウトしたとします。再度ログインして、自分のリストを表示します。投稿したデータベースとまだ整合性が取れていない複製バージョンのデータベースにログインできる可能性はありませんか (別のユーザーが私のリストを表示しない可能性がある上記のシナリオと同様)。
これがどのように機能するかを誤解していますか?
編集: このシナリオでは、必ずしもマスター/スレーブ レプリケーション手法を使用しているわけではありません。しかし、負荷のピーク時に備えて、データベースのバージョンをレプリケートしています。
database - データベースの一貫性の確保
結果整合性のある分散データベースを使用している場合、製品を販売しているサイトのようなものがあり、アイテムの価格を変更するとどうなりますか?
製品の価格が X で、それを価格 Y に更新した場合、データベースのバージョンによっては価格 X が表示される場合があります。彼らは間違った価値を請求されませんか?
ある時点で、最新の値が使用されていることを確認するために、データの整合性チェックを行う必要はありませんか?
nosql - 平易な英語での結果整合性
NoSQLやデータグリッドなどに関するさまざまなスピーチで結果整合性についてよく耳にします。結果整合性の定義は多くのソースで異なるようです(具体的なデータストレージに依存する場合もあります)。
具体的なデータストレージとは関係なく、一般的な用語で結果整合性とは何かを簡単に説明できますか?
sql-server - すべてをMongoDBに保存するかどうか? 一緒に SQL を使用しますか? (結果整合性)
私と私の大学は、MongoDB を使用してアプリケーションのすべてのデータを保存することについて考え直しています。ユーザーがプロファイルを登録または更新するときの Mongo の最終的な整合性 (または似ているがより重要な何か) のために、結果がすぐに表示されず、ユーザーを苛立たせる可能性があると考える人もいます。
大量のデータがあり、何らかのレプリケーションを行わない限り、結果整合性の効果は見られないでしょう。確信はないけど。
何かアドバイス?mongo のみを使用するか、機密データを格納するために SQL サーバーを追加しますか?