연습문제

Replication Lag for Exercises

  • Local Machine에서 여러 Replication 을 동작시켰을 때 대부분의 데이터 전달 지연 등은 0에 가깝다.

  • 따라서, Read Concern과 Write Concern 의 동작을 확인해보기 위해서 Replication Lag을 고의로 지정해본다.

  • Replication Lag을 SECONDARY nodes에 적용해본다.

  • 기본적으로 각각의 Replication 들의 상태는 아래와 같은 방식으로 확인할 수 있다. (?)

rs1:PRIMARY> rs.conf().members
[
    {
        "_id" : 0,
        "host" : "127.0.0.1:30000",
        "arbiterOnly" : false,
        "buildIndexes" : true,
        "hidden" : false,
        "priority" : 1,
        "tags" : {
        },
        "slaveDelay" : NumberLong(0),
        "votes" : 1
    },
...
  • priority, slaveDelay 라는 항목이 있는데 이를 이용해서 Replication Lag을 발생시켜본다.

    • priority = 0 : This node will never been voted.

    • slaveDelay = 16 : This node will process a oplog after 16 seconds from transaction committed.

rs1:PRIMARY> cfg = rs.conf()
rs1:PRIMARY> cfg.members[1].priority = 0
rs1:PRIMARY> cfg.members[1].slaveDelay = 16
rs1:PRIMARY> rs.reconfig(cfg)

Exercise 1 : Journaling

  • Execute two scripts

    • 아래 두개의 Javascript file을 작성한 뒤 Mongo Shell을 통해 실행시켜보자

    • 속도비교 안하나?

with_journal.js
for (var i = 0; i < 10000; i++) {
    db.journal_test.insertOne({'id': i, 'content': 'hello~'})
}
without_journal.js
for (var i = 0; i < 10000; i++) {
    db.journal_test.insertOne({'id': i, 'content': 'hello~'})
}
mongo --port 30000 < with_journal.js
mongo --port 30000 < without_journal.js

Exercise 2 : Write Concern

  • Suggest results using quires with a below option

    • w: 2,wtimeout: 10000

    • w: 'majority', wtimeout: 10000

    • w: 3, wtimeout: 10000

db.write_concern.insertOne({
    'document_key': 'document_field'},{
    'writeConcern': {
        w : value,
        j : Boolean,
        wtimeout : value
})

Exercise 3: Read Concern

  • Set the other SECONDARY node's properties like

    • priority = 0, slaveDelay = 16

  • Insert a document

db.read_concern.insertOne({'hello': 'world'})
  • Subsequently, performs a count() query with read concern option

    • majority

    • local

Last updated

Was this helpful?