根据CAP定理,MongoDB通常默认定义为CP。在副本集场景中,以下情况是否正确?选项w
是写问题:
{w:1}
:仅等待主服务器的确认。如果我们从次要成员那里读到,系统最终是一致的,然后是AP
{w:3}
:等待三名成员的确认。如果副本由三个成员组成,则系统是一致的(强?)因此,CP我将根据一些证据(比如K先生发布的:mongodb在CAP定理中的地位如何?)为了支持我最初对这个问题的关注,我删除了我对ASIA的评论。
MongoDBs CAP合规性似乎基于哪些写关注点与哪些读关注点放在一起。
让我们举个例子。从主{w: 1}
读取的默认配置将是:
MongoDB本身可以很好地进行分区容忍(只要每端没有偶数个服务器),而不考虑写操作(即使由于分区而丢失了写操作)。
然而,从具有这种写入问题的二级数据库中读取实际上会导致A,因为MongoDB现在将最终保持一致,并且您将从成员返回陈旧的数据。
使用{w: 3}
的3个成员的第二个示例可以完全是CAP:
编辑:实际上,在这种情况下,CAP完全丢失,因为MongoDB将停止。
再次编辑:正如Asya指出的那样,MongoDB仍然接受读操作,只是不接受写操作,这意味着它将保持C,但会丢失A,这非常符合当时的标准。
带着所有的担忧。
所以我回到我最初所说的关于读关注点和写关注点的内容(我真的认为它们都有参与),这就是我的答案。
查看Mongodb复制指南,默认情况下,所有查询都会转到主服务器。如果你想在二级服务器上读“A”,这是AP的要求。然后松开C,因为不同服务器的结果可能不同。
这个问题看起来也是这样,答案可能会有帮助。
我添加了选项JAVA_OPTS但它似乎不起作用。 我在这个服务器中只安装了JRE 7,所以我只是想知道我是否需要安装JDK 7。 安装在服务器上的JRE如下。 java 版本 “1.7.0_25” Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64 位 Server VM (build 23.25-b01
我的项目使用的是Spring Framework4.0.0 REALESE,可能它不能在JDK1.5版上运行,所以我想把它改成SE1.8。我尝试将我的web项目的JRE系统库从SE1.5更新到1.8。但是我发现从Maven更新项目后,我的项目自动返回到旧版本。我该怎么修好它?
设备类型。Java语言 elemetry.java枚举类 我想获取所有DeviceType Id,其DeviceTeletry名称以“System”(字符串)开头。 我做了这样的事情:- 有谁能告诉我如何从中获取DeviceType Id吗?
Hyperledger Composer可以通过使用Loopback API与现有系统集成。集成现有系统使你可以从现有业务系统中提取数据,并将其转换为Composer业务网络中的资产或参与者。 生成一个REST API Hyperledger Composer包含独立的将业务网络暴露为REST API的Node.js进程。LoopBack框架用于生成由Swagger文档描述的Open API。 从
编辑:我认为问题是cfg1-r1和cfg2-r2服务不在同一网络中。当我部署堆栈文件时,会创建一个名为mongo_mongoshard(overlay)的网络,当我检查它时,它只显示cfg1-r1作为其容器列表中的容器。
我有一个带有,(”或)的表单,。。。下拉菜单()。。我想根据填充/检查的输入量显示不同的div。我写这篇文章是为了输入()按id选择输入id,但如何才能对和