Vinicius Grippa Percona About me Support Engineer at Percona since - - PowerPoint PPT Presentation

vinicius grippa percona about me support engineer at
SMART_READER_LITE
LIVE PREVIEW

Vinicius Grippa Percona About me Support Engineer at Percona since - - PowerPoint PPT Presentation

Whats new in Mongo 4.0 Vinicius Grippa Percona About me Support Engineer at Percona since 2017 Working with MySQL for over 5 years - Started with SQL Server Working with databases for 7 years 2 Agenda Transactions Support


slide-1
SLIDE 1

What’s new in Mongo 4.0 Vinicius Grippa Percona

slide-2
SLIDE 2

2

About me

  • Support Engineer at Percona since 2017

Working with MySQL for over 5 years

  • Started with SQL Server
  • Working with databases for 7 years
slide-3
SLIDE 3

3

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-4
SLIDE 4

4

A brief history

  • MongoDB was developed in 2007 by organization called 10gen
  • MongoDB has grown from being a niche database solution to the Swiss army knife of the NoSQL technologies
  • It was developed as a PAAS (Platform as a service)
  • Currently there is MongoDB Atlas Database as a Service (DBaaS)
slide-5
SLIDE 5

5

MongoDB Roadmap

slide-6
SLIDE 6

6

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-7
SLIDE 7

Transactions Support

slide-8
SLIDE 8

8

Transactions Support

  • Transactions feature has been in development since MongoDB version 3.0 (Two Phase Commit)
  • Logical sessions added on Mongo 3.6
  • MongoDB 4.0 adds support for multi-document transactions
slide-9
SLIDE 9

9

Transactions - ACID

  • Atomicity
  • Consistency
  • Isolation
  • Durability
slide-10
SLIDE 10

10

Transactions - ACID

  • Atomicity
  • "all or nothing" guarantee for multi-document transaction operations
  • Data changes are only made visible outside the transaction if it is successful.
  • If a transaction fails, all of the data changes from the transaction is discarded.
slide-11
SLIDE 11

11

Transactions - ACID

  • Consistency
  • Handled by MongoDB
  • example: trying to change a value that fails schema validation, will cause inconsistent data
  • (permitted transactions should not corrupt data)
slide-12
SLIDE 12

12

Transactions - ACID

  • Isolation

Snapshot isolation level

  • … creates a WiredTiger snapshot at the beginning of the transaction
  • … uses this snapshot to provide transactional reads throughout the transaction.
slide-13
SLIDE 13

13

Transactions - ACID

  • Durability
  • When a transactions use WriteConcern {j: true} (default), MongoDB will guarantee that it is returned after the transaction

log is committed.

  • Even if a crash occurs, MongoDB can recover according to the transaction log.
  • If the {j: true} level is not specified, even after the transaction is successfully committed, the transaction may be rolled

back (in case of crash recovery) – Needs journal enabled

slide-14
SLIDE 14

14

Transactions Support

  • Start Transaction

1 2 3 4

session = db.getMongo().startSession() session.startTransaction() session.getDatabase("percona").test.insert({today : new Date()}) session.getDatabase("percona").test.insert({some_value : "abc"})

slide-15
SLIDE 15

15

Transactions Support

  • Commit/Rollback Transaction

1 2 session.commitTransaction()

session.abortTransaction()

slide-16
SLIDE 16

16

Transactions and Replica set In the replica set configuration, an oplog will be recorded on commit

  • … including all the operations in the transaction.

The slave node pulls the oplog and replays the transaction operations locally (the document size limit is 16 MB, so whole transaction can not exceed 16MB)

slide-17
SLIDE 17

17

Transactions and Wired Tiger Unified Transaction Timing WiredTiger has supported transactions for a long time

  • (guarantee the modification atomicity of data, index, and oplog)

The problem was with timing:

  • MongoDB used the oplog timestamps to identify the global order
  • WiredTiger used the internal transaction IDs to identify the global order

MongoDB version 4.0 / WiredTiger 3.0 introduced transaction timestamps

  • MongoDB can now explicitly assign a commit timestamp to the WiredTiger transaction (read "as of" a timestamp)
  • When the oplog is replayed, the read on the slave node will no longer conflict with the replayed oplog, and the read

request will not be blocked by replaying the oplog.

slide-18
SLIDE 18

18

Transactions - Conflict

foo:PRIMARY> session = db.getMongo().startSession() session { "id" : UUID("b312c662-247c-47c5-b0c9-23d77f4e9f6d") } foo:PRIMARY> session.startTransaction() foo:PRIMARY> session.getDatabase("percona").test.update({trx : 0}, {trx: 2}) WriteCommandError({ "errorLabels" : [ "TransientTransactionError" ], "operationTime" : Timestamp(1529675754, 1), "ok" : 0, "errmsg" : "WriteConflict", "code" : 112, "codeName" : "WriteConflict", "$clusterTime" : { "clusterTime" : Timestamp(1529675754, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0)

slide-19
SLIDE 19

19

Transactions – Write Concern MongoDB is a distributed database- be aware of the different options for consistency. Write concern describes the level of acknowledgement requested from MongoDB for write operations For multi-document transactions, you set the write concern at the transaction level, not at the individual operation level. Session.startTransaction({ writeConcern: { w: <level>} }) // w: 1, majority If you commit using "w: 1" write concern, your transaction can be rolled back during the failover process.

slide-20
SLIDE 20

20

Transactions – Read Concern The readConcern option allows you to control the consistency and isolation properties of the data read from replica sets and replica set shards. For multi-document transactions, you set the read concern at the transaction level, not at the individual operation level. If unspecified at the transaction start, transactions use the session-level read concern or, if that is unset, the client-level read concern. Session.startTransaction({ readConcern: { level: <level>} })

slide-21
SLIDE 21

21

Transactions – Read Concern Read concern "snapshot" is only available for multi-document transactions. Multi-document transactions support read concern "snapshot" as well as "local", and "majority". Session.startTransaction({ readConcern: { level: "snapshot"} })

slide-22
SLIDE 22

22

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-23
SLIDE 23

Snapshot Read Concern

slide-24
SLIDE 24

24

Snapshot Read Concern

  • readConcern option helps in achieving consistency, and isolation properties of the data. Snapshot Read Concern

ensures that a consistent view of the data is returned to the client, irrespective of whether that data is being simultaneously modified by concurrent operations.

slide-25
SLIDE 25

25

Snapshot Read Concern

  • If the transaction is not part of a causally consistent session, upon transaction commit with write concern "majority", the

transaction operations are guaranteed to have read from a snapshot of majority-committed data.

  • If the transaction is part of a causally consistent session, upon transaction commit with write concern "majority", the

transaction operations are guaranteed to have read from a snapshot of majority-committed data that provides causal consistency with the operation immediately preceding the transaction start.

slide-26
SLIDE 26

26

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-27
SLIDE 27

Security Enhancements

slide-28
SLIDE 28

28

Security Enhancements SHA-2 Authentication With MongoDB 4.0, authentication has been updated to the latest SHA-2 family (SHA-256), providing a stronger alternative to SHA-1

slide-29
SLIDE 29

29

Security Enhancements – Mongo 3.6 authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...] serverAddress: ["<IP>" | "<CIDR range>", ...] },

slide-30
SLIDE 30

30

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-31
SLIDE 31

Non-Blocking Secondary Reads

slide-32
SLIDE 32

32

Non-Blocking Secondary Reads Non-Blocking Secondary Reads MongoDB previously blocked secondary reads while oplog entries were applied.

  • when the replication threads were writing to the database the readers must wait

MongoDB 4.0 adds the ability to read from secondaries while replication is simultaneously processing writes.

slide-33
SLIDE 33

33

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-34
SLIDE 34

Extension to Change Streams

slide-35
SLIDE 35

35

Extension to Change Streams

  • Change streams introduced in version 3.6 helps applications to access real-time data changes (similar to tail the

collection but better as it is replication aware).

  • In 4.0 Change Streams can be configured to track changes across an entire database or whole cluster. Also, it will return

a cluster time associated with an event (to provide an associated wall clock time for the event)

slide-36
SLIDE 36

36

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-37
SLIDE 37

Data Type conversions

slide-38
SLIDE 38

38

Data Type Conversions A new expression $convert has been added to the aggregation framework https://docs.mongodb.com/manual/reference/operator/aggregation/convert/

  • Helps for ETL workloads
  • Also allow the MongoDB BI Connector to push down work to MongoDB Server (and avoid sending data over the wire)
slide-39
SLIDE 39

39

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-40
SLIDE 40

Improved Sharding Operations

slide-41
SLIDE 41

41

Improved Sharding Operations Operators can now list and kill queries running in a sharded cluster directly on a mongos node. Query terminated in any one of the shards will be reflected in all other shards too.

slide-42
SLIDE 42

42

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-43
SLIDE 43

Hybrid Cursor Caching

slide-44
SLIDE 44

44

Hybrid Cursor Caching

  • Improvements in cursor caching unlock up to 2x performance gains on deployments running with a large

number of collections and enable operations like dropping a collection to execute without causing any performance degradation on other active collections.

slide-45
SLIDE 45

45

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-46
SLIDE 46

Slow Query logging on MongoS

slide-47
SLIDE 47

47

Slow Query logging on MongoS In previous versions of MongoDB profiling can be enabled on the mongod. Now in 4.0 its easy to track the slow queries from mongos by enabling the profiler.

slide-48
SLIDE 48

48

Agenda

  • Transactions Support
  • Snapshot Read Concern
  • Security enhancements
  • Non-Blocking Secondary Reads
  • Extension to Change Streams
  • Data type conversions
  • Improved Sharding Operations
  • Hybrid Cursor Caching
  • Slow Query Logging on MongoS
  • The Future Features
slide-49
SLIDE 49

The Future

slide-50
SLIDE 50

50

Future Features

  • Transaction compatible chunk migrations
  • More extensive WiredTiger
  • Transaction manager
  • Global point in time reads
  • Oplog applier prepare supports for transactions
slide-51
SLIDE 51

51

Rate My Session

slide-52
SLIDE 52

52

Thank You Sponsors!!