草庐IT

mongodb - CAP 背景下的 Mongo 和 Cassandra?

coder 2023-10-29 原文

在谷歌上阅读了几篇文章后,我看到像 Mongo 这样的 NoSql DB 被设计 用于 CP(在 CAP 中),而 cassandra 是为 AP(在 CAP 中)设计的

这是我的问题:-

Mongo 不能配置为提供 AP 而不是 CP 还是严格为 CP 设计的? Cassandra 也是如此吗?

最佳答案

自从 CAP 定理于 2000 年首次出现以来,我们对它的理解发生了很大变化。“三选二”概念存在很多混淆,但 Eric Brewer 的 article 2012 年很好地消除了这些困惑(我猜)。

因此,CAP 定理与成为 CA 或 AP 或其他什么无关。简单来说就是:网络分区随时可能发生。这是不可避免的。当发生网络分区时,分布式数据库的架构应该允许其客户端根据需要调整一致性和可用性

这是什么意思?假设您在集群中的 3 个节点(N1、N2 和 N3 - 因此复制因子 = 3)之间复制一段数据。假设发生网络分区,将 N3 与 N1 和 N2 分开:

因此,所有 3 个节点都可以运行,但它们之间的网络目前存在问题。在这种情况下,客户端可能会向 N1、N2 或 N3 发出读取请求或写入请求。基于此客户端的一致性选择,集群的 react 可能会有所不同:

  • 如果客户端向 N1 发出读取请求,N1 可以立即用自己的数据回答查询。或者 N1 可以将相同的查询转发给 N2,并将其数据与 N2 的数据进行比较,并返回最新的数据。这里,集群的 react 取决于客户端的一致性选择。客户根据其选择调整一致性。
  • 客户端也可以做出不同的选择:它可以强制 N1 从所有 3 个节点读取数据(即在 Cassandra 术语中读取 ALL 的一致性)。在这种情况下,集群返回一个错误,我们说根据客户的选择集群不可用。
  • 另一种可能性是:客户可能已向 N3 请求数据。在这种情况下,N3 只返回其数据(读一致性 = ONE)或查询失败(读一致性 > 1)。

我不知道 Mongo,但考虑到 CAP 定理,这就是 Cassandra 的工作方式。

关于mongodb - CAP 背景下的 Mongo 和 Cassandra?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48240702/

有关mongodb - CAP 背景下的 Mongo 和 Cassandra?的更多相关文章

  1. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  2. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  3. ruby-on-rails - 在所有页面上使用 Prawn 的背景图像 - 2

    我在View中有这段代码prawn_document(:page_size=>"A4",:top_margin=>80,:bottom_margin=>40,:background=>"public/uploads/1.png")do|pdf|creation_date=Time.now.strftime('%d-%m-%Y')posts=@posts.eachdo|post|pdf.pad(10)dopdf.textpost.titlepdf.textpost.textendendpdf.page_count.timesdo|i|pdf.go_to_page(i+1)pdf.draw

  4. ruby - 256 种颜色,前景和背景 - 2

    这是两个脚本的故事,与previousquestion有关.这两个脚本位于http://gist.github.com/50692.ansi.rb脚本在所有256种背景颜色上显示所有256种颜色。ncurses.rb脚本显示所有256种前景颜色,但背景显示基本的16种颜色,然后似乎循环显示各种属性,如闪烁和反向视频。那么是什么给了?这是ncurses中的错误,它使用带符号的整数来表示颜色对吗?(即'tputcolors'表示256但'tputpairs'表示32767而不是65536)似乎如果是这种情况,颜色对的前半部分会正确显示但后半部分会重复或进入属性作为int包裹。

  5. ruby 电子表格行背景色 - 2

    我正在尝试使用“电子表格”解析Excel电子表格。如何获取每一行的背景颜色? 最佳答案 book=Spreadsheet::Workbook.newsheet=book.create_worksheet:name=>'Name'format=Spreadsheet::Format.new:color=>:blue,:pattern_fg_color=>:yellow,:pattern=>1sheet.row(0).set_format(0,format)#forfirstcellinfirstrow或sheet.row(0).def

  6. css - 如何让我的背景图片只出现在 rails 4 的一页上? - 2

    我有一张背景图片,我无法只停留在一页上。我制作了一个带有一个主视图的欢迎Controller来显示它。我也在预编译我的Assets。背景显示得很好,但我的目标是只在我的home.html.erbView中显示背景图像。欢迎/home.html.erb:"lang="">title欢迎Controller:classWelcomeController样式表/welcome.css.scss:body{background:{image:asset-url("image.jpg");}}我的应用程序布局中有以下内容:在config/initializers/assets.rb中:Rails

  7. jquery - 根据按下的链接显示特定类别 | Rails 上的 Ruby - 2

    我有一个博客,它在同一页面上呈现每个类别及其各自的子类别。(索引View)我有一个导航部分,我想利用它根据按下的链接仅呈现特定子类别的帖子。我不知道单独使用ruby​​是否可行,所以我认为JQuery可能是这种方式。blog_categoriesindex.html.erb:NEWSAllNewsGoodNewsBadNewsREVIEWSAllReviewsSoftwareHardware...blog_categories_controller:defindex@category=BlogCategory.find_by_id(params[:id])unless@category

  8. ruby - 为什么需要 mongo 给我 LoadError : no such file to load -- openssl - 2

    我正在使用UbuntuServer10,Ruby1.9.2当我尝试要求'mongo'时它给我这个错误:irb(main):001:0>require'mongo'LoadError:nosuchfiletoload--opensslfrom/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in`require'from/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in`require'from/usr/local/lib

  9. ruby-on-rails - Rails 开发模式下的日志轮换? - 2

    对于Rails3.1(很快将是3.2),我有非常详细的日志,其中包含大量额外的工作人员信息。我通常会得到数GB的development.log文件。我看到过一些关于轮换生产日志的讨论,但是我没有发现任何似乎适用于development.log轮换的内容。您如何在每100.megabytes左右轮换您的development.log?或者我更喜欢实际截断文件头,以便只有最近的项目保留在日志中,最近的条目最多100MB。我已经玩了一点,并且越来越多地认为目前不存在这样的东西,也许我应该实现一些将以某种方式使用ruby​​File.truncate的东西,但是我到目前为止,我还不确定它在文件

  10. ruby - cucumber :何时使用标签/ Hook 与背景 - 2

    我想知道与使用标签和Hook相比,是否有支持或反对在cucumber中使用背景的好理由。在测试开始之前有一个登录用户可以是这样的:Background:GiventhatIamloggedinScenario:Loremipsumsitametdolor[...]或者像这样:@loginScenario:Loremipsumsitametdolor[...]+before(@login)dovisit('/admin/login/testuser')end知道什么时候该优先考虑另一个吗? 最佳答案 Background在您为场景提供

随机推荐