Transcript
Page 1: What do you mean, backwards compatibility?

Trisha Gee

#GeeCON

Java Driver Developer, 10gen@trisha_gee

What do you mean, backwards compatibility?

Thursday, 16 May 13

Page 2: What do you mean, backwards compatibility?

Design: translate the requirements in a specification that describes the global architecture and the functionality of the system.

http://homepages.cwi.nl/~paulk/patents/isnot/node4.htmlThursday, 16 May 13

Page 3: What do you mean, backwards compatibility?

Managing the Development of Large Software Systems - Dr Winston Royce

http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

Thursday, 16 May 13

Page 4: What do you mean, backwards compatibility?

Agile Design

<This Page Left Intentionally Blank>

Thursday, 16 May 13

Page 5: What do you mean, backwards compatibility?

Design is a Process, not a Document

Thursday, 16 May 13

Page 6: What do you mean, backwards compatibility?

What are you saying?

• Design is a journey, enjoy the ride

• There will be Monsters

• There will be Safe Houses

• There might not even be a destination...

Thursday, 16 May 13

Page 7: What do you mean, backwards compatibility?

Best Job Evar!!

Thursday, 16 May 13

Page 8: What do you mean, backwards compatibility?

We’re off!Thursday, 16 May 13

Page 9: What do you mean, backwards compatibility?

Backward CompatibilityThursday, 16 May 13

Page 10: What do you mean, backwards compatibility?

Lots of unknownsThursday, 16 May 13

Page 11: What do you mean, backwards compatibility?

Design GoalsThursday, 16 May 13

Page 12: What do you mean, backwards compatibility?

Yes, it’s a documentThursday, 16 May 13

Page 13: What do you mean, backwards compatibility?

Design Goals

• Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 14: What do you mean, backwards compatibility?

Lack of consistencyThursday, 16 May 13

Page 15: What do you mean, backwards compatibility?

Coding StandardsThursday, 16 May 13

Page 16: What do you mean, backwards compatibility?

Zero Analysis ErrorsThursday, 16 May 13

Page 17: What do you mean, backwards compatibility?

No more argumentsThursday, 16 May 13

Page 18: What do you mean, backwards compatibility?

Design Goals

✓Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 19: What do you mean, backwards compatibility?

UsersThursday, 16 May 13

Page 20: What do you mean, backwards compatibility?

Identify Our UsersThursday, 16 May 13

Page 21: What do you mean, backwards compatibility?

1. Java Developers

2. ODMs / other drivers / third parties

3. Contributors

Three Types Of Users

Thursday, 16 May 13

Page 22: What do you mean, backwards compatibility?

Java Developers

• Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

•Test friendly

•Backwards compatible

Thursday, 16 May 13

Page 23: What do you mean, backwards compatibility?

Third Party Libraries

•Consistency

•Cleaner design

• Intuitive API

• Sane Exception handling

•Test friendly

•Backwards compatible

Thursday, 16 May 13

Page 24: What do you mean, backwards compatibility?

Contributors

•Consistency

•Cleaner design

• Intuitive API

• Sane Exception handling

•Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 25: What do you mean, backwards compatibility?

Users are our friendsThursday, 16 May 13

Page 26: What do you mean, backwards compatibility?

Backward CompatibilityThursday, 16 May 13

Page 27: What do you mean, backwards compatibility?

ArchitectureThursday, 16 May 13

Page 28: What do you mean, backwards compatibility?

UML, yuk!Thursday, 16 May 13

Page 29: What do you mean, backwards compatibility?

High Level ArchitectureThursday, 16 May 13

Page 30: What do you mean, backwards compatibility?

Scala DriverThursday, 16 May 13

Page 31: What do you mean, backwards compatibility?

Design Goals

• Consistency

✓Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 32: What do you mean, backwards compatibility?

Design Goals

• Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

•Backwards compatible

Thursday, 16 May 13

Page 33: What do you mean, backwards compatibility?

High Level ArchitectureThursday, 16 May 13

Page 34: What do you mean, backwards compatibility?

Option 1: WrappingThursday, 16 May 13

Page 35: What do you mean, backwards compatibility?

Option 2: ConnectingThursday, 16 May 13

Page 36: What do you mean, backwards compatibility?

Backward Compatibility?Thursday, 16 May 13

Page 37: What do you mean, backwards compatibility?

Tests PassThursday, 16 May 13

Page 38: What do you mean, backwards compatibility?

We win!Thursday, 16 May 13

Page 39: What do you mean, backwards compatibility?

Design Goals

• Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

✓Backwards compatible

Thursday, 16 May 13

Page 40: What do you mean, backwards compatibility?

Not Dead Yet...Thursday, 16 May 13

Page 41: What do you mean, backwards compatibility?

The Public APIThursday, 16 May 13

Page 42: What do you mean, backwards compatibility?

Design Goals

• Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 43: What do you mean, backwards compatibility?

Caveats

• It won’t look like this

• Haven’t decided consistent names yet

• Need something that suits all drivers

Thursday, 16 May 13

Page 44: What do you mean, backwards compatibility?

Find

Thursday, 16 May 13

Page 45: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

Thursday, 16 May 13

Page 46: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

collection.find(query).skip(1000).limit(100);

Thursday, 16 May 13

Page 47: What do you mean, backwards compatibility?

Find

Thursday, 16 May 13

Page 48: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

Thursday, 16 May 13

Page 49: What do you mean, backwards compatibility?

Which One?Thursday, 16 May 13

Page 50: What do you mean, backwards compatibility?

Find

Thursday, 16 May 13

Page 51: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

Thursday, 16 May 13

Page 52: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

collection.find(query).select(fields);

Thursday, 16 May 13

Page 53: What do you mean, backwards compatibility?

Fewer DecisionsThursday, 16 May 13

Page 54: What do you mean, backwards compatibility?

“Cmd + space” friendlyThursday, 16 May 13

Page 55: What do you mean, backwards compatibility?

Findcollection.find(query).skip(1000).limit(100);

collection.find(query).skip(1000).limit(100);

collection.find(query, fields);

collection.find(query).select(fields);

Thursday, 16 May 13

Page 56: What do you mean, backwards compatibility?

Remove

Thursday, 16 May 13

Page 57: What do you mean, backwards compatibility?

Removecollection.remove(query);

Thursday, 16 May 13

Page 58: What do you mean, backwards compatibility?

Removecollection.remove(query);

collection.find(query).remove();

Thursday, 16 May 13

Page 59: What do you mean, backwards compatibility?

Find and Modify

Thursday, 16 May 13

Page 60: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

Thursday, 16 May 13

Page 61: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

collection.find(query).updateOneAndGet(update);

Thursday, 16 May 13

Page 62: What do you mean, backwards compatibility?

They hate me!Thursday, 16 May 13

Page 63: What do you mean, backwards compatibility?

Find and Modify

Thursday, 16 May 13

Page 64: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

collection.find(query) .updateOneAndGet(update);

collection.findAndModify(query, fields, sort, false, update, true, false);

Thursday, 16 May 13

Page 65: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

collection.find(query) .updateOneAndGet(update);

collection.findAndModify(query, fields, sort, false, update, true, false);

collection.find(query) .sort(sort) .updateOneAndGet(update);

Thursday, 16 May 13

Page 66: What do you mean, backwards compatibility?

Find and Modify

Thursday, 16 May 13

Page 67: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

collection.find(query) .updateOneAndGet(update);

collection.findAndModify(query, fields, sort, false, update, true, false);

collection.find(query) .sort(sort) .updateOneAndGet(update);

Thursday, 16 May 13

Page 68: What do you mean, backwards compatibility?

Find and Modifycollection.findAndModify(query, update);

collection.find(query) .updateOneAndGet(update);

collection.findAndModify(query, fields, sort, false, update, true, false);

collection.find(query) .sort(sort) .updateOneAndGet(update);

collection.find(query) .sort(sort) .getOneAndUpdate(update);

Thursday, 16 May 13

Page 69: What do you mean, backwards compatibility?

Lack of consistencyThursday, 16 May 13

Page 70: What do you mean, backwards compatibility?

Consistency at lastcollection.find(query).limit(10);

collection.find(query).limit(10).remove();

collection.find(query).sort(sortCriteria).getOne();

collection.find(query).sort(sortCriteria).remove();

collection.find(query).sort(sortCriteria).count();

Thursday, 16 May 13

Page 71: What do you mean, backwards compatibility?

Muerto del todo

✓Consistency

• Cleaner design

• Intuitive API

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 72: What do you mean, backwards compatibility?

Design Goals

• Consistency

• Cleaner design

• Intuitive API...

• Sane Exception handling

• Test friendly

• Backwards compatible

Thursday, 16 May 13

Page 73: What do you mean, backwards compatibility?

Not Dead Yet!Thursday, 16 May 13

Page 74: What do you mean, backwards compatibility?

Tutorial/hack sessionThursday, 16 May 13

Page 75: What do you mean, backwards compatibility?

This talkThursday, 16 May 13

Page 76: What do you mean, backwards compatibility?

Design is a Process, not a Document

Thursday, 16 May 13

Page 77: What do you mean, backwards compatibility?

Q & A

Thursday, 16 May 13

Page 78: What do you mean, backwards compatibility?

1.Are you using the Java driver?

Thursday, 16 May 13

Page 79: What do you mean, backwards compatibility?

2. What do you like about it?

Thursday, 16 May 13

Page 80: What do you mean, backwards compatibility?

3. What are your pain points?

Thursday, 16 May 13

Page 81: What do you mean, backwards compatibility?

Design is a Process, not a Document

Thursday, 16 May 13

Page 82: What do you mean, backwards compatibility?

Your Questions

Thursday, 16 May 13


Recommended