advanced mongodb & firedac jim mckeeth & dmitry arefiev embarcadero technologies

9
Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

Upload: clemence-brooks

Post on 18-Jan-2016

272 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

Advanced MongoDB & FireDAC

Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

Page 2: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

2

• Indexing• Query Options• Geospatial Queries• Aggregation & Pipelines

• Redact• Projection• Grouping

• Update Operations• Database Meta Information• Local SQL

Agenda – The Fun Stuff

2:0910:2612:2319:29

27:1631:3133:19

Code Samples are all Object Pascal

delphi.org/?p=2053

Slidesdelphi.org/coderage

Q&A at 39:03

Page 3: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

3

Indexing

• _id is indexed by default as _id_• Other indexes can be added to improve query performance• MongoDB uses a B-Tree internally for indexing• Use the Query Option to get an Explain Plan• Docs• http://docs.mongodb.org/manual/administration/indexes-creation/• http://docs.mongodb.org/manual/tutorial/create-an-index/ • http://docs.mongodb.org/manual/tutorial/create-a-compound-index/• http://docs.mongodb.org/manual/tutorial/list-indexes/• http://docs.mongodb.org/manual/tutorial/remove-indexes/• http://docs.mongodb.org/manual/reference/method/cursor.explain/

Page 4: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

4

Geospatial Indexes and Queries

• Supports both spherical and planar geometries– 2d: geometries on a plane– 2dsphere: geometries of an earth-like sphere

• Query operations– Within a bounding geometry– Intersecting geometry– Near a point

• More information– http://docs.mongodb.org/manual/applications/geospatial-indexes/– http://docs.mongodb.org/manual/reference/operator/query-geospatial

/

Page 5: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

5

Aggregation Pipeline

• Operations that process data along a series of steps• Change the format of or further process documents resulting from a

query• Documents enter the pipeline and are transformed into an aggregated

result• A less complex alternative to map-reduce (also supported)• FireDAC supports through the TFDMongoPipeline and Aggregate methods• References

– http://docs.mongodb.org/manual/aggregation/– http://docs.mongodb.org/manual/reference/operator/aggregation/

Page 6: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

6

Aggregation Example

• Runs through stages• Typically starts with a

match• Example shows

grouping• Resulting collection

contains modified documents

• Makes documents easier to work with in program logic

• Underlying collection is unmodified

Page 7: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

7

Update Operations

• Modifies an existing document or documents in a collection.• Can modify specific fields of an existing document or documents or replace

an existing document entirely.• Can replace with static or dynamic operator generated values.• Updates are atomic within a single document.• More information

– http://docs.mongodb.org/manual/tutorial/modify-documents/ – http://docs.mongodb.org/manual/reference/method/db.collection.updat

e/

– http://docs.mongodb.org/manual/reference/operator/update/inc/– http://docs.mongodb.org/manual/reference/operator/update/push/

Page 8: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

8

Learning Resources

• MongoDB Documentation– docs.mongodb.org/manual/

• MongoDB Skill Sprint– embt.co/sprint-nosql-mongodb

• Part 1 from CodeRage X• DocWiki

– docwiki.embarcadero.com/RADStudio/Seattle/en/What%27s_New#Support_for_the_NoSQL_MongoDB_Database

– docwiki.embarcadero.com/RADStudio/Seattle/en/Connect_to_MongoDB_Database_(FireDAC)

– docwiki.embarcadero.com/CodeExamples/Seattle/en/FireDAC.MongoDB_Explore_Sample

– docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Phys.MongoDBWrapper

• Samples– \Samples\Object Pascal\Database\FireDAC\Samples\DBMS Specific\MongoDB

Code Samples delphi.org/?p=2053

Slidesdelphi.org/coderage

Page 9: Advanced MongoDB & FireDAC Jim McKeeth & Dmitry Arefiev Embarcadero Technologies

9

Q&A – Thanks for Joining Us!

The places to communicate:• Quality.Embarcadero.com• Embarcadero FireDAC forum

– https://forums.embarcadero.com/forum.jspa?forumID=502 • Email

[email protected] & [email protected] • Code Samples

– delphi.org/?p=2053 • Slides

– delphi.org/coderage