5

私が理解できることから、NoSQLデータベースは、高強度のデータ読み取りアプリケーションには適しているかもしれませんが、大量のデータ更新も行う必要があり、トランザクション性が非常に重要である場合は、あまり適していません( ACIDコンプライアンス)。右?単純すぎるかもしれません。

しかし、とにかく、少なくとも部分的に正しいと仮定すると、NoSQLデータベースが、読み取りまたは書き込みのいずれかであるデータの「読み取り一貫性のある」ビューをどのように維持するかについて懸念しています。それとも彼らですか?そうでなければ、それは本当に大きな問題ではありませんか?

つまり、読んでいる(または更新している)データが読んでいるときに変化している場合は、一貫性のない/ダーティな結果セットが得られる可能性があります。Oracle rdbmsのバックグラウンドから来て、これらすべてがあなたのために処理されているので、読み取りの一貫性の欠如が大きな問題ではないことを混乱させています。私はこれらすべてについていくつかの重要なポイントを見逃しているかもしれません。誰かが私をまっすぐにすることができますか?

4

4 に答える 4

5

私はOracleNoSQLDatabaseの開発者であり、その特定のNoSQLシステムに関する質問に答えます。

Oracle NoSQL Database APIを使用すると、プログラマは各API呼び出しで読み取りの一貫性のレベルを指定できます。最も厳しいものから最も緩いものまでの4つの可能な値は、Absolute、Time、Version、およびNoneです。Absoluteは、常に最新の値が返されるように、レプリケーションマスターから読み取るように指示します。「時間」は、システムが少なくともマスターの特定の時間デルタ内にある任意のレプリカから値を返すことができることを意味します(たとえば、マスターから2秒以内にある任意のレプリカから値を読み取ります)。システムへのすべての読み取りおよび書き込み呼び出しは、「バージョンハンドル」を返します。このバージョンハンドルは、Consistency.Versionが指定されている場合、任意の読み取り呼び出しに渡すことができ、少なくともそのバージョンと同じくらい最新のレプリカから読み取るようにシステムに指示します。これは、リードモディファイライト(別名CAS)シナリオで役立ちます。最後の値であるConsistency.Noneは、任意のレプリカを使用できることを示していません(つまり、一貫性が保証されていません)。

これがお役に立てば幸いです。

チャールズラム

于 2012-04-30T14:53:06.103 に答える
3

NoSQLデータベースは読み取り整合性がありますが、厳密にそうでない場合は一般に大きな問題ではありません。CAP定理を確認してください。この分野ではかなり多くの研究が行われています。NoSQLデータベースなどの分散システムが直面する問題と解決策のいくつかをすばやく確認するには、AmazonのDynamoペーパーを読むことをお勧めします。

于 2012-04-27T13:24:43.120 に答える
2

MongoDBを使用すると、アプリケーションは「書き込みの懸念」を使用して、読み取りの一貫性のレベルを選択できます。この概念により、特定の書き込みに対して特定の条件が満たされるまで、アプリケーションをブロックできます。

例として、操作がマスターサーバーに伝達されている限り、書き込みは成功したと見なすことができます。または、レプリカセット内のノードの大部分に書き込みが伝播されるまでブロックすることもできます。このようにして、パフォーマンスと一貫性を組み合わせて好みに合わせることができます。

于 2012-05-04T17:36:17.003 に答える
1

それぞれが異なる戦略を実装しているため、使用しているNoSQLデータベースによって異なります。たとえば、Riakによる「結果整合性」モデルの説明やLarsHofhanselによるHBaseのACIDに関する記事を読むことができます。

于 2012-04-27T14:50:43.623 に答える