ravendb in the wild

26
RavenDB In the wild…

Upload: mauro-servienti

Post on 27-Jan-2015

112 views

Category:

Technology


2 download

DESCRIPTION

Talk for UGIAlt.Net (in italy)

TRANSCRIPT

Page 1: RavenDB in the wild

RavenDB

In the wild…

Page 2: RavenDB in the wild

Mauro ServientiArchitect…well not really :-)

@: [email protected]

b: //milestone.topics.it !

Page 3: RavenDB in the wild

Agenda…• Background;• Let’s go;

• This slide should be dropped…

Page 4: RavenDB in the wild

BACKGROUNDWhat the hell are you talkin’ about…?

Page 5: RavenDB in the wild

hum…?• Not using the relational model (nor the SQL language);• Open source;• Designed to run on large clusters;• No schema, allowing fields to be added to any record

without controls;• Document based;• Documents independency;

Page 6: RavenDB in the wild

why• Schema free;• Storing full complex object graphs (aggregates);• Low overhead: Usually operate on a single document:

• One read, one write;

• Fast, really fast :-)• Known format: the database itself can do lots of things

with documents;

Page 7: RavenDB in the wild

Got the time…tickin’ in my head

Sql

• Consistent;• ACID;• Supported;• Strong schema;• Relational (joins);

NoSql

• Eventually consistent;• ACID;• Supported :-)• schema-less;• No relation(s)

• no joins :-)• But…map/reduce and multi

map;

Page 8: RavenDB in the wild

RAVENDBPlease welcome…

Page 9: RavenDB in the wild

Why RavenDB: our project• 20.000 users• 50 msgs/day/user• Something like 200.000.000 msgs/year

• Office 365?• Exchange on premise?• …26 days to be up & running;

Page 10: RavenDB in the wild

Selling RavenDB to the corporation• Esent;

• «Munin» to run on Mono;

• Linq API;• .net everywhere;

• Is supported;• Standard backup support (via Shadow copy);

Page 11: RavenDB in the wild

Background Tasks

Indexing Reducing User Tasks

Raven Http Server

HTTP Server

HTTP/Rest

Architecture

ESENT / Raven.Munin

Document Store Index Store

Page 12: RavenDB in the wild

FEATURES

Page 13: RavenDB in the wild

Indexing: give me my data!• Auto Indexing, Map (only), Map/Reduce, Multi Map;

Page 14: RavenDB in the wild

INDEXINGA couple of…

Page 15: RavenDB in the wild

Includes• Prevent the Select N+1 pain;

Page 16: RavenDB in the wild

Statistics, staleness and paging

Page 17: RavenDB in the wild

Facets

Page 18: RavenDB in the wild

Suggestion

Page 19: RavenDB in the wild

Features• Safe by default (max 128 «rows» per query);• Sharding;• Multi tenant;• Replica;• Embedded mode (a must for tests)• Dynamic Fields: «Search»;• Cache;• Lucene;• Spatial;

Page 20: RavenDB in the wild

EXTENSIBILITY

Page 21: RavenDB in the wild

Extensibility: MEF• Lucene Analyzers;• Bundles;• Responders;• Triggers;• Document metadata;• Schema less (hooks to update schema at read time);

Page 22: RavenDB in the wild

WE ARE USED TO…

Page 23: RavenDB in the wild

Unit of Work• Primary Key Auto generation• Transaction;• Identity Map;• Tracking;

Page 24: RavenDB in the wild

Polimorphic queries• The best choice is to define an index:

• Magic strings… :-/• Don’t worry: «conventsions» handling;

Page 25: RavenDB in the wild

ACTION

Page 26: RavenDB in the wild

THANK YOU!Questions?