Top Banner
RavenDB In the wild…
26

RavenDB in the wild

Jan 27, 2015

Download

Technology

Mauro Servienti

Talk for UGIAlt.Net (in italy)
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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?