3

HBaseのような企業は強い一貫性を何度も耳にしました。私はHBaseについて読んで、気に入っています。次に、mongodbの書き込みとその違いについて考えました。調べてみると、MongoDBにも強い一貫性があるようです。しかし、それは一貫していますか?HBaseにはトランザクションがあり、MongoDBにはないようです。私は少し混乱しています。私が見つけたのは、それらの両方の単純な挿入と更新、およびそれらがどのように複製されるかを説明することだけでした。私は取引を見ていません。

MongoDBとHBaseの整合性の違いは何ですか?HBaseにはACIDトランザクションがあると思いますが、mongodbには複数の挿入を処理するものがありますか、それともすべてが1つのドキュメントに含まれている必要がありますか?(私はそれが十分なatmではない理由を考えることができません)。

一貫性とレプリケーションの理由から、違いは何ですか?また、なぜ一方を他方から選択するのでしょうか?

4

3 に答える 3

3

私はMongoDBにしか答えることができません。

MongoDBにはサーバー側のトランザクションはありません。これは、3レベルまたは5レベルの深さのドキュメントのマルチレベルのネストは管理が面倒になる可能性があるため、すべての挿入が1つのドキュメントであると予想されることを意味するわけではありません。現時点では単にサポートされておらず、MongoDBを使用しているコミュニティは個人的に投票し、さまざまな機能の背後にサポートを置くことを選択しています。

そうは言っても、MongoDBはクライアント側のトランザクションを実行できます:http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/ただし、これはデータベースサーバー自体に分離されていないため、特定の失敗にさらされています統合トランザクションを作成する機能に影響を与える可能性のあるシナリオ。

そうは言っても、クラスター全体でトランザクションクエリを管理するようなデーモンをコーディングする場合、HBaseが提供できるよりも耐久性が低くなる理由はわかりません。

私は個人的に本番環境でHBaseを実際に使用したことがないため、HBaseの一貫性について話すことはできませんが、MongoDBには、HBaseとSQLに期待される単一クエリの読み取りと書き込みの一貫性の通常レベルがすべてあり、実際に安全な挿入レベルが可能です。アプリケーションが操作の成功コールバックを取得する前に、クラスターの他のノードにレプリケートします。実際、MongoDBのデフォルト設定は結果整合性がありませんが、そのようにすることができます。

私は個人的に、ここや他の場所で、2つの間の一貫性と複製の間の優先順位は主観的であり、シナリオ、ハードウェア、プラットフォーム、およびおそらくここでは完全には説明できないその他の詳細に帰着すると聞いています。

于 2012-10-25T08:47:47.003 に答える
0

hbase側についてはお答えできます。まず、行ごとに hbase でのみトランザクションを持つことができます。2種類のアトミック操作があります。

  1. チェック&プット。

  2. アトミックカウンター

複数の行に対してトランザクションを書き込む機能が必要な場合。私がお勧めできるオープン ソースが 2 つあります。 1. https://github.com/VCNC/haeinsa。私の意見では、このオープンソースは私が現在見つけた最高のものです。check & put を使用し、行に対してある種の 2 フェーズ コミットを行います。

  1. https://github.com/caskdata/tephra . このオープン ソースは、クライアント サーバーとコプロセッサを組み合わせたものです。私の意見では、サーバーがボトルネックであるため、それはスケールではないかもしれません.

また、2フェーズコミット。非常に高速なトランザクションの場合、海印社よりも高速であると思います。

于 2015-07-23T19:28:49.223 に答える
0

v4.0 (2018 年夏に登場) の時点で、MongoDB はマルチドキュメント ACID トランザクションをサポートします。https://www.mongodb.com/transactionsでベータ プログラムにサインアップします。

于 2018-02-22T14:41:13.880 に答える