如何更喜欢在MongoDb中读取二进制文件

Pau*_*ire 5 java replication mongodb morphia

在副本集配置中使用mongodb时(1个仲裁者,1个主要,2个从属); 如何设置读取针对辅助节点执行的首选项,并将主节点仅用于写入?我正在使用MongoDb 2.0.4和Morphia.我看到有一个slaveOk()方法,但我不确定它是如何工作的.

Morphia http://code.google.com/p/morphia/

详细信息 My Mongo设置有以下选项:

mongo.slaveOk();
mongo.setWriteConcern(WriteConcern.SAFE);

我试图使用以下(这可能是答案-btw):

Datastore ds = getDatastore();
Query<MyEntity> query = ds.find(MyEntity.class).field("entityId").equal(entityId);
query.queryNonPrimary(); // appears equivalent to ReadPrefererence.secondary()
MyEntity entity = query.get();

Pau*_*ire 6

经过多次血汗之后,正确的答案如下:

  • 优先选择所有读取/查询,只需要设置slaveOk()
  • 要仅选择使用辅助节点的读取,请不要设置slaveOk()并使用queryNonPrimary()来代替每个查询

在使用副本集时设置适当的写入问题也是一种很好的做法,如下所示:

mongo.setWriteConcern(WriteConcern.REPLICAS_SAFE);