Whats new in MongoDB 24

Post on 12-May-2015

721 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

An overview of what's new in Mon

Transcript

CTO, 10gen

Eliot Horowitz

What's New in MongoDB 2.4

Improvements made across…• Development

• Operations

• Performance

• Security

• Enterprise Features

MongoDB 2.4 Developer Improvements

Geospatial

New Geospatial Features

• Polygon intersections

• More accurate spherical model

• $near and $within work with Aggregation Framework

• Analytics now location-aware

GeoJSON

• Geospatial interchange format based on JSON

• Supports Points, LineStrings & Polygons

• Complete spec available at http://geojson.org

Point1 = {

type : "Point",

coordinates : [-73.947807, 40.663973]

}

somePoly = {

type : "Polygon",

coordinates : [[[40,5], [40,6],

[41,6], [41,5], [40,5]]]

}

GeoJSON

$GeoIntersects

• Leverages GeoJSON

• Geospatial query operator that selects all locations that intersect with a GeoJSON object

• Uses spherical geometry

point1 = { type: "Point", coordinates: [40, 5.5]}

line1 = { type: "LineString",

coordinates: [[40, 3.5], [40, 4.5]]};

somePoly = { type : "Polygon",

coordinates : [[[40,5], [40,6],

[41,6], [41,5], [40,5]]]};

res = c.find({ geo : {

"$geoIntersects" :

{"$geometry" : somePoly}

}});

$GeoIntersects

Aggregation Framework

New Aggregation Framework Features

• Introduced in 2.2, came of age in 2.4

• Performance Improvements

• 3 – 5 x faster

• Geo $near and $within support

• $concat support

• Support for Binary Data (pass through)

Text Search (beta)

Text Search (beta)

• Real-time indexes

• Case-insensitive

• Stemming, tokenization & stop words for 15 languages

• Index size is comparable with other full text search implementations (larger than standard MongoDB indexes)

• BETA status… please use in dev & give feedback

Stemming Examples

• { walk, walked, walking, walks } ⇒ walk

• {magazine, magazines, magazine’s } ⇒ magazine

• {runs, running, run, ran } ⇒ { run, ran }

Examples of English Stop Words

{ am, themselves, of, before, here, while, what's, myself, ought, me, the, into, about, this, do, can't, a, ... }

Option 1: on the command line

$ mongod --setParameter textSearchEnabled=true

Option 2: as admin command to mongod or mongos

> db.adminCommand(

{ setParameter: 1, textSearchEnabled: true }

)

Enabling Text Search

db.t.ensureIndex(

{ title: "text", post: "text" },

{ weights: { title: 10, post: 5 }}

)

Create a Text Search Index

db.t.runCommand(

"text",

{ search: "\"my first blog entry\"" }

);

Run a Text Search Command

{

"queryDebugString":"blog|entri|first||||my first blog entry||",

"language" : "english",

"results" : [{

"score" : 12,

"obj" : {

"_id" : 1,

"title" : "1st post",

"post" : "this is my first blog entry."

}}],

"stats" : {

"nscanned" : 7,

"nscannedObjects" : 0,

"n" : 0,

"nfound" : 1,

"timeMicros" : 122

},

"ok" : 1

}

Text Search Result

Note: debug string shows the stemmed terms, stop-words deleted

New Update Operators

Capped Arrays

• Provides the ability to manipulate arrays with more control than ever before

• $push now supports the following:

• $each permits pushing multiple entries onto an array

• $slice maintains a fixed size array

• Can be stacked with $sort

db.students.update(

{ _id: 1 },

{ $push: {

scores: {

$each: [

{ attempt: 3, score: 7 },

{ attempt: 4, score: 4 } ],

$sort: { score: 1 },

$slice: -3

}

}}

)

Top 3 Scores

New Upsert Operator

db.products.update(

{ _id: 1 },

{ $setOnInsert: { defaultQty: 500, inStock: true },

$set: { item: "apple" } },

{ upsert: true }

)

$setOnInsert

MongoDB 2.4 Operational Improvements

Hash-based Sharding

Hash-based Sharding

• Easier to manage clusters

• Less rebalancing 

• More event distribution for reads and writes

• Lower potential performance from range based, but more consistent.

• The hash stored in the hashed index is 64 bits of the 128 bit md5 hash

• MongoDB can use the hashed index to support equality queries, but hashed indexes do not support range queries.

db.activeCollection.ensureIndex(

{ field_to_hash: "hashed" }

)

Creating a Hashed Shard Key

Working Set Analyzer

Working Set Analyzer

• Working Set: The set of data kept in memory

• MongoDB performance best when working set < RAM

• Working set analyzer measures resources used over time

• Leads to more efficient MongoDB usage

db.serverStatus( { workingSet: 1 } )

db.runCommand( { serverStatus: 1, workingSet: 1 } )

"workingSet" : {

"note" : "thisIsAnEstimate",

"pagesInMemory" : <num>,

"computationTimeMicros" : <num>,

"overSeconds" : num

},

MongoStatus

Index Operation Management

Index Operation Management• A single mongod instance can build

multiple indexes in the background at the same time.

• db.killOp() can now kill foreground index builds

• Improved validation of index types

db.currentOp(){ "inprog" : [ { "opid" : 45, "active" : true, "secs_running" : 2, "op" : "insert", "ns" : "test.system.indexes",... }]}

db.killOp(45)

Index Operation Management

Replication Improvements

Role Based Privileges

Replication Improvements• Better detection of network hiccups (less

false negatives)

• Faster initial sync when adding new secondary

MongoDB 2.4 Performance Improvements

V8 JavaScript Engine

• Affects all JS processing including MapReduce, the shell and $where queries 

• Greater concurrency

• User feedback very positive indicating dramatic improvement in overall processing time with new V8

Improvements All Over

• Aggregation 3x – 5x faster

• Faster Counting– Low-cardinality index-based counts up to 20x

faster– Better performance on counting, e.g., count

all the males/females in my user list

• Faster $elemMatch

MongoDB 2.4 Security Improvements

Role Based Privileges

Role Based Privileges

• Builds on access controls introduced in 2.2

• Users granted roles that have specific privileges per database

• Users can have multiple roles

• Roles include– read– readWrite– userAdmin– dbAdmin– clusterAdmin

Role Based Privileges

Enhanced SSL Support

• Supported in open source edition of MongoDB

• Must be compiled using --ssl flag

• Uses a standard .pem file that contains the SSL certificate and key

• Complete directions available in the MongoDB documentation http://docs.mongodb.org/manual/administration/ssl/

Introducing MongoDB Enterprise 2.4

MongoDB Enterprise

• Advanced Security– Kerberos authentication protocol– SSL support built in

• Monitoring– On-Prem Monitoring - visualization, alerts on 100+ system

metrics– Includes same features as (MMS)

• Enterprise Software Integration– SNMP supports integration w/popular monitoring tools (e.g.,

Nagios )

• Certified OS Support– Red Hat/CentOS, Ubuntu and Amazon Linux

Subscriptions

Basic Standard Enterprise

Edition MongoDB MongoDB MongoDB Enterprise

SLA 4 hours 1 Hour 30 Minutes

Support9am – 9pm ET

M – F 24x7x365 24x7x365

License AGPL Commercial Commercial

Price per Host

$2,500 $5,000 $7,500

top related