SlideShare a Scribd company logo
OVERVIEW

Igor Moochnick
Director, Cloud Platforms
BlueMetal Architects
igorm@bluemetal.com
Blog: igorshare.wordpress.com
BlueMetal Capabilities
            FOCUS AREAS                          PLATFORMS                              APPROACH


            Creative & Interactive Services




                                                                                        Deep Discovery & Business Alignment
                                                  Apple, Amazon and Leading Platforms




                                                                                        Agile, Small Teams with High Velocity
            Mobile Applications
            Web & RIA Clients




                                                                                        Integrated Creative & Engineering
            Enterprise Collaboration
            Social Platforms
            Information Management




                                                  Open Source Software
                                                  Microsoft Platforms
            Application Modernization
            Server-side Application Components
            Private, Public or Hybrid Cloud

            Relational Database Engines
            Business Analytics and Insights
            NoSQL Data Platforms
Why work with us?
• Our model is based on a deep connection to our customer’s true needs
     ̵   We are a relationship-driven partner not a transactional services firm
     ̵   Our relationships are based on high integrity, ethics & mutual success
     ̵   Deep discovery “Seek first to understand” – listen, then synthesize
     ̵   We never lead with a solution - first understand the true business problem then
         design the solution that exactly meets the customer’s needs


• Our capabilities approach is unique to marketplace:
     ̵   Senior level, extremely talented individuals that can operate at high velocity
     ̵   Team model where we operate at a high rate of speed: force multiplier
     ̵   Integrated Platform approach where we offer end to end solutions
     ̵   Differentiated Creative connected to Engineering resulting in shipping what we
         design
Sweet Spots

 Web Related Data, such as user sessions, shopping cart, etc.
 Dynamic Entities, such as user-customizable entities, entities
  with a large number of optional fields, etc.
 Persisted View Models

 Large Data Sets - known to scale in excess of 1
  terabyte (on a single machine with thousands writes/sec)
  and trivial to shard the database across multiple machines
Modeling

 Stop thinking relational

 Start thinking about how your data will be used
     Usage scenarios
     Optimize for reads? Writes?

 Think about your domain objects and business logic in native .Net
  (POCO) classes

 Deformalize if needed

 Reference entities to other entities, or collections of them

 Identify aggregate root(s)
Modes of operations

 Windows Service
 Console App (debug mode)
 Embedded
 IIS App (ASP.NET Service)
 On the cloud (Azure, RavenNest)
RavenDB Design Guidelines

 Self optimizing, zero admin
 Eventual consistency
 Extensible
 Fluent simple API
Client API

 Lightweight
 Silverlight
 Embedded
 RavenLight
Sessions

 Manages UoW (Units of Work)
 Cheap to create
 Transactional
 Manages IDs, tracking
Don’t shoot yourself in the foot

 Will get you first 128 results (unbounded result set
  protection)
 Don’t forget to commit your changes by calling
  SaveChanges()
 30 operations per session (client/server chatter protection)
 Automatic batching
 No locking
Advanced API

 2nd level – Session level
 3rd level – DatabaseCommands
  Document store level

  Thin wrapper around HTTP API

  NOT Transactional
Queries

 Strongly typed
 Linq
 Works against Lucene indexes
 Feeds back into index updates
 By design, results may be stale, but you’ll know about it
Indexes

 Dynamic, created on-the-fly - temporary
 Becomes static, if you insist (suggested for production)
 Rich Actions:
    Map
    Reduce
    Transform (live projections)
    Field
    Paging

 Spatial index
Linq Queries
 // Filter by property value
 var posts = from post in session.Query<BlogPost>()
         where post.Subject == "NoSQL Update"
         select post;

 // Filter by range
 var posts = from post in session.Query<BlogPost>()
         where post.NumberOfWords > 50
         select post;

 // Filter by nested (calculated) property
 var posts = from post in session.Query<BlogPost>()
         where post.Comments.Count > 2
         select post;
Queries

 // Filter by property value
 var posts = session.Query<BlogPost>()
         .Where(post => post.Subject == "NoSQL Update");

 // Filter by range
 var posts = session.Query<BlogPost>()
         .Where(post => post.NumberOfWords > 50);

 // Filter by nested (calculated) property
 var posts = session.Query<BlogPost>()
         .Where(post => post.Comments.Count > 2);
Paging

 You can skip and pick any number of entities from the
  returned Query result
 Use Skip() and Take() to control the size of the result set

  // If a Page has 10 records, to get the 4th page -
  var posts = session.Query<BlogPost>()
          .Skip(30)           // Skip 3 pages worth of posts
          .Take(10)           // Select next page
          .ToArray();         // Execute query
Efficient loads

 Improves normalized data access
 Include relevant information with your query results



 // Request to include Author with the Post result
 var post = session.Include<BlogPost>(post => post.Author.Id)
         .Load ("BlogPosts/34");

 var author = session.Load<Author>(post.Author.Id);
BLOBs / Attachments

 Can store and manage large binary BLOBs



  // Store BLOB/Attachment
  byte[] data = new byte[] { ... };
  documentStore.DatabaseCommands.PutAttachment("videos/2",
    null, data, new RavenJObject {{"Title", "Birthday song"}});

  // Get BLOB/Attachment
  var attachment =
     documentStore.DatabaseCommands.GetAttachment("videos/1");
Polymorphism                      For more watch webcast …


 No required inheritance association




// Query against unified index
var result = session.Query<dynamic,
    EverytingByName>();

foreach (dynamic animal in result)
    Console.WriteLine(animal.Name);
Extensibility

 MEF (Managed Extensibility Framework)

 Triggers
     PUT triggers
     DELETE triggers
     Read triggers
     Index update triggers

 Request Responders

 Custom Serialization/Deserialization
Plugins

  // RavenDB plugin
  public class DocSize : RequestResponder
  {
     public override void Respond(IHttpContext context)
     { ... }

      public override string UrlPattern
      { get { return "/blobsize/(.+)"; } }

      public override string[] SupportedVerbs
      { get { return new[] {"GET"}; } }
  }
Bundles

 Drop-in plugins (MEF, .NET)
 Write your own
 Available
    Authentication
    Authorization
    Cascade delete
    Expiration
    Quotas
    Replication
    Versioning
Replication Between Servers

  Implemented as a plug-in (Raven.Bundles.Replication.dll)
   Tracks the server the document was originally written on.
   The replication bundle uses this information to determine if
    a replicated document is conflicting with the existing
    document.
  Supported by the client API
   Detects that an instance is replicating to another set of instances.
   When that instance is down, will automatically shift to the other
    instances.
Replication to Relational DB
   Given this document…




   And this index…




    Gives this table output



                               http://ravendb.net/bundles/index-replication
Sharding


 Sharding refers to horizontal partitioning
  of data across multiple machines.
 The idea is to split the load across many commodity machines,
  instead of buying huge expensive machines.
 Raven has full support for sharding, and you can utilize
  sharding out of the box.
Advanced

 Single document patch
 Attachments (BLOBs)
 Transactions (transaction scope)
 Batching
 Lucene Query (parser syntax)
 Query statistics
Learn More!
 Raven DB Home Page
   http://ravendb.net/

 Raven DB: An Introduction
   http://www.codeproject.com/KB/cs/RavenDBIntro.aspx

 Herding Code 83: Ayende Rahien on RavenDB
   http://herdingcode.com/?p=255

 Raven posts from Ayende Rahien
   http://ayende.com/Blog/category/564.aspx

 Raven posts from Rob Ashton
    http://codeofrob.com/category/13.aspx

 RavenDB - The Lost Session

More Related Content

What's hot

Architecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The CloudArchitecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The Cloud
David Chou
 
Microsoft And Cloud Computing
Microsoft And Cloud ComputingMicrosoft And Cloud Computing
Microsoft And Cloud Computing
David Chou
 
Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081rajivmordani
 
Data Platform Overview
Data Platform OverviewData Platform Overview
Data Platform OverviewHamid J. Fard
 
Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010
DavidGristwood
 
Azure Cosmos DB + Gremlin API in Action
Azure Cosmos DB + Gremlin API in ActionAzure Cosmos DB + Gremlin API in Action
Azure Cosmos DB + Gremlin API in Action
Denys Chamberland
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
David Chou
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platform
giventocode
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Using Power BI and Azure as analytics engine for business applications
Using Power BI and Azure as analytics engine for business applicationsUsing Power BI and Azure as analytics engine for business applications
Using Power BI and Azure as analytics engine for business applications
Digital Illustrated
 
Deploying an Extranet on SharePoint
Deploying an Extranet on SharePointDeploying an Extranet on SharePoint
Deploying an Extranet on SharePoint
Alan Marshall
 
Standardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIMStandardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIM
WSO2
 
Azure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web ServicesAzure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web Services
Bob German
 
Azure Cloud Dev Camp - Introduction
Azure Cloud Dev Camp - IntroductionAzure Cloud Dev Camp - Introduction
Azure Cloud Dev Camp - Introduction
giventocode
 
Bots & Teams: el poder de Grayskull
Bots & Teams: el poder de GrayskullBots & Teams: el poder de Grayskull
Bots & Teams: el poder de Grayskull
SUGES (SharePoint Users Group España)
 
Web 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With JsfWeb 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With Jsfrajivmordani
 
Interfacing Banner BEIS With Identity Management - Summit 2012
Interfacing Banner BEIS With Identity Management - Summit 2012Interfacing Banner BEIS With Identity Management - Summit 2012
Interfacing Banner BEIS With Identity Management - Summit 2012
joelavery
 
Deep Dive Data Management Gateway - SQLSaturday Edinburgh
Deep Dive Data Management Gateway - SQLSaturday EdinburghDeep Dive Data Management Gateway - SQLSaturday Edinburgh
Deep Dive Data Management Gateway - SQLSaturday Edinburgh
Jean-Pierre Riehl
 
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
Kalaiselvan (Selvan)
 

What's hot (20)

Architecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The CloudArchitecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The Cloud
 
Microsoft And Cloud Computing
Microsoft And Cloud ComputingMicrosoft And Cloud Computing
Microsoft And Cloud Computing
 
Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081
 
Data Platform Overview
Data Platform OverviewData Platform Overview
Data Platform Overview
 
Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010
 
Azure Cosmos DB + Gremlin API in Action
Azure Cosmos DB + Gremlin API in ActionAzure Cosmos DB + Gremlin API in Action
Azure Cosmos DB + Gremlin API in Action
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platform
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
Using Power BI and Azure as analytics engine for business applications
Using Power BI and Azure as analytics engine for business applicationsUsing Power BI and Azure as analytics engine for business applications
Using Power BI and Azure as analytics engine for business applications
 
Deploying an Extranet on SharePoint
Deploying an Extranet on SharePointDeploying an Extranet on SharePoint
Deploying an Extranet on SharePoint
 
Standardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIMStandardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIM
 
Azure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web ServicesAzure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web Services
 
Azure Cloud Dev Camp - Introduction
Azure Cloud Dev Camp - IntroductionAzure Cloud Dev Camp - Introduction
Azure Cloud Dev Camp - Introduction
 
Bots & Teams: el poder de Grayskull
Bots & Teams: el poder de GrayskullBots & Teams: el poder de Grayskull
Bots & Teams: el poder de Grayskull
 
Web 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With JsfWeb 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With Jsf
 
Interfacing Banner BEIS With Identity Management - Summit 2012
Interfacing Banner BEIS With Identity Management - Summit 2012Interfacing Banner BEIS With Identity Management - Summit 2012
Interfacing Banner BEIS With Identity Management - Summit 2012
 
dvprimer-concepts
dvprimer-conceptsdvprimer-concepts
dvprimer-concepts
 
Deep Dive Data Management Gateway - SQLSaturday Edinburgh
Deep Dive Data Management Gateway - SQLSaturday EdinburghDeep Dive Data Management Gateway - SQLSaturday Edinburgh
Deep Dive Data Management Gateway - SQLSaturday Edinburgh
 
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
Silicon India Java Conference: Building Scalable Solutions For Commerce Silic...
 

Similar to RavenDB overview

20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
Amazon Web Services Korea
 
Above the cloud joarder kamal
Above the cloud   joarder kamalAbove the cloud   joarder kamal
Above the cloud joarder kamal
Joarder Kamal
 
Benefits of the Azure cloud
Benefits of the Azure cloudBenefits of the Azure cloud
Benefits of the Azure cloud
James Serra
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
RTTS
 
Azure Overview Csco
Azure Overview CscoAzure Overview Csco
Azure Overview Cscorajramab
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
gjuljo
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
Clint Edmonson
 
Big Data Analytics from Azure Cloud to Power BI Mobile
Big Data Analytics from Azure Cloud to Power BI MobileBig Data Analytics from Azure Cloud to Power BI Mobile
Big Data Analytics from Azure Cloud to Power BI Mobile
Roy Kim
 
Building Cloud-Native Applications with Microsoft Windows Azure
Building Cloud-Native Applications with Microsoft Windows AzureBuilding Cloud-Native Applications with Microsoft Windows Azure
Building Cloud-Native Applications with Microsoft Windows Azure
Bill Wilder
 
Arc Ready Cloud Computing
Arc Ready Cloud ComputingArc Ready Cloud Computing
Arc Ready Cloud Computing
Philip Wheat
 
How leading financial services organisations are winning with tech
How leading financial services organisations are winning with techHow leading financial services organisations are winning with tech
How leading financial services organisations are winning with tech
MongoDB
 
Symphony Driver Essay
Symphony Driver EssaySymphony Driver Essay
Symphony Driver Essay
Angie Jorgensen
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0
Bruce Johnson
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak
 
Benefits of the Azure Cloud
Benefits of the Azure CloudBenefits of the Azure Cloud
Benefits of the Azure Cloud
Caserta
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
Gary Pedretti
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
Liran Zelkha
 
Class 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipClass 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipallanchao
 
Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)
Maarten Balliauw
 

Similar to RavenDB overview (20)

20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
 
Above the cloud joarder kamal
Above the cloud   joarder kamalAbove the cloud   joarder kamal
Above the cloud joarder kamal
 
Benefits of the Azure cloud
Benefits of the Azure cloudBenefits of the Azure cloud
Benefits of the Azure cloud
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
 
Azure Overview Csco
Azure Overview CscoAzure Overview Csco
Azure Overview Csco
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 
Big Data Analytics from Azure Cloud to Power BI Mobile
Big Data Analytics from Azure Cloud to Power BI MobileBig Data Analytics from Azure Cloud to Power BI Mobile
Big Data Analytics from Azure Cloud to Power BI Mobile
 
Building Cloud-Native Applications with Microsoft Windows Azure
Building Cloud-Native Applications with Microsoft Windows AzureBuilding Cloud-Native Applications with Microsoft Windows Azure
Building Cloud-Native Applications with Microsoft Windows Azure
 
Arc Ready Cloud Computing
Arc Ready Cloud ComputingArc Ready Cloud Computing
Arc Ready Cloud Computing
 
How leading financial services organisations are winning with tech
How leading financial services organisations are winning with techHow leading financial services organisations are winning with tech
How leading financial services organisations are winning with tech
 
Symphony Driver Essay
Symphony Driver EssaySymphony Driver Essay
Symphony Driver Essay
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud Management
 
Benefits of the Azure Cloud
Benefits of the Azure CloudBenefits of the Azure Cloud
Benefits of the Azure Cloud
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
 
Class 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipClass 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurship
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
 
Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)
 

More from Igor Moochnick

Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
Igor Moochnick
 
Being a generalist and being great at what you do
Being a generalist and being great at what you doBeing a generalist and being great at what you do
Being a generalist and being great at what you do
Igor Moochnick
 
The journey to container adoption in enterprise
The journey to container adoption in enterpriseThe journey to container adoption in enterprise
The journey to container adoption in enterprise
Igor Moochnick
 
Dev ops overview (brief)
Dev ops overview (brief)Dev ops overview (brief)
Dev ops overview (brief)
Igor Moochnick
 
Dev ops cd tool chains
Dev ops cd tool chainsDev ops cd tool chains
Dev ops cd tool chains
Igor Moochnick
 
Orchestration musings
Orchestration musingsOrchestration musings
Orchestration musings
Igor Moochnick
 
Delivery pipelines
Delivery pipelinesDelivery pipelines
Delivery pipelines
Igor Moochnick
 
Tips for building responsive cloud applications
Tips for building responsive cloud applicationsTips for building responsive cloud applications
Tips for building responsive cloud applicationsIgor Moochnick
 
Building complex single page application should be as enjoyable as visit to a...
Building complex single page application should be as enjoyable as visit to a...Building complex single page application should be as enjoyable as visit to a...
Building complex single page application should be as enjoyable as visit to a...Igor Moochnick
 
Amazon 101 - building composite responsive apps - small
Amazon 101 - building composite responsive apps - smallAmazon 101 - building composite responsive apps - small
Amazon 101 - building composite responsive apps - smallIgor Moochnick
 
Ccr - Concurrency and Coordination Runtime
Ccr - Concurrency and Coordination RuntimeCcr - Concurrency and Coordination Runtime
Ccr - Concurrency and Coordination RuntimeIgor Moochnick
 
NO SQL: What, Why, How
NO SQL: What, Why, HowNO SQL: What, Why, How
NO SQL: What, Why, HowIgor Moochnick
 
Azure ServiceBus Queues and Topics
Azure ServiceBus Queues and TopicsAzure ServiceBus Queues and Topics
Azure ServiceBus Queues and Topics
Igor Moochnick
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Igor Moochnick
 
Building lean products with distributed agile teams
Building lean products with distributed agile teamsBuilding lean products with distributed agile teams
Building lean products with distributed agile teamsIgor Moochnick
 
Building Gwt Clients For Cloud Apps.Pptx
Building Gwt Clients For Cloud Apps.PptxBuilding Gwt Clients For Cloud Apps.Pptx
Building Gwt Clients For Cloud Apps.PptxIgor Moochnick
 

More from Igor Moochnick (20)

Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
 
Being a generalist and being great at what you do
Being a generalist and being great at what you doBeing a generalist and being great at what you do
Being a generalist and being great at what you do
 
The journey to container adoption in enterprise
The journey to container adoption in enterpriseThe journey to container adoption in enterprise
The journey to container adoption in enterprise
 
Dev ops overview (brief)
Dev ops overview (brief)Dev ops overview (brief)
Dev ops overview (brief)
 
Dev ops cd tool chains
Dev ops cd tool chainsDev ops cd tool chains
Dev ops cd tool chains
 
Orchestration musings
Orchestration musingsOrchestration musings
Orchestration musings
 
Delivery pipelines
Delivery pipelinesDelivery pipelines
Delivery pipelines
 
Tips for building responsive cloud applications
Tips for building responsive cloud applicationsTips for building responsive cloud applications
Tips for building responsive cloud applications
 
Building complex single page application should be as enjoyable as visit to a...
Building complex single page application should be as enjoyable as visit to a...Building complex single page application should be as enjoyable as visit to a...
Building complex single page application should be as enjoyable as visit to a...
 
Amazon 101 - building composite responsive apps - small
Amazon 101 - building composite responsive apps - smallAmazon 101 - building composite responsive apps - small
Amazon 101 - building composite responsive apps - small
 
Ccr - Concurrency and Coordination Runtime
Ccr - Concurrency and Coordination RuntimeCcr - Concurrency and Coordination Runtime
Ccr - Concurrency and Coordination Runtime
 
NO SQL: What, Why, How
NO SQL: What, Why, HowNO SQL: What, Why, How
NO SQL: What, Why, How
 
Azure ServiceBus Queues and Topics
Azure ServiceBus Queues and TopicsAzure ServiceBus Queues and Topics
Azure ServiceBus Queues and Topics
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
 
Building lean products with distributed agile teams
Building lean products with distributed agile teamsBuilding lean products with distributed agile teams
Building lean products with distributed agile teams
 
Practical alm testing
Practical alm   testingPractical alm   testing
Practical alm testing
 
Putting SOAP to REST
Putting SOAP to RESTPutting SOAP to REST
Putting SOAP to REST
 
Building Gwt Clients For Cloud Apps.Pptx
Building Gwt Clients For Cloud Apps.PptxBuilding Gwt Clients For Cloud Apps.Pptx
Building Gwt Clients For Cloud Apps.Pptx
 

Recently uploaded

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 

Recently uploaded (20)

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 

RavenDB overview

  • 1. OVERVIEW Igor Moochnick Director, Cloud Platforms BlueMetal Architects igorm@bluemetal.com Blog: igorshare.wordpress.com
  • 2. BlueMetal Capabilities FOCUS AREAS PLATFORMS APPROACH Creative & Interactive Services Deep Discovery & Business Alignment Apple, Amazon and Leading Platforms Agile, Small Teams with High Velocity Mobile Applications Web & RIA Clients Integrated Creative & Engineering Enterprise Collaboration Social Platforms Information Management Open Source Software Microsoft Platforms Application Modernization Server-side Application Components Private, Public or Hybrid Cloud Relational Database Engines Business Analytics and Insights NoSQL Data Platforms
  • 3. Why work with us? • Our model is based on a deep connection to our customer’s true needs ̵ We are a relationship-driven partner not a transactional services firm ̵ Our relationships are based on high integrity, ethics & mutual success ̵ Deep discovery “Seek first to understand” – listen, then synthesize ̵ We never lead with a solution - first understand the true business problem then design the solution that exactly meets the customer’s needs • Our capabilities approach is unique to marketplace: ̵ Senior level, extremely talented individuals that can operate at high velocity ̵ Team model where we operate at a high rate of speed: force multiplier ̵ Integrated Platform approach where we offer end to end solutions ̵ Differentiated Creative connected to Engineering resulting in shipping what we design
  • 4. Sweet Spots  Web Related Data, such as user sessions, shopping cart, etc.  Dynamic Entities, such as user-customizable entities, entities with a large number of optional fields, etc.  Persisted View Models  Large Data Sets - known to scale in excess of 1 terabyte (on a single machine with thousands writes/sec) and trivial to shard the database across multiple machines
  • 5. Modeling  Stop thinking relational  Start thinking about how your data will be used  Usage scenarios  Optimize for reads? Writes?  Think about your domain objects and business logic in native .Net (POCO) classes  Deformalize if needed  Reference entities to other entities, or collections of them  Identify aggregate root(s)
  • 6. Modes of operations  Windows Service  Console App (debug mode)  Embedded  IIS App (ASP.NET Service)  On the cloud (Azure, RavenNest)
  • 7. RavenDB Design Guidelines  Self optimizing, zero admin  Eventual consistency  Extensible  Fluent simple API
  • 8. Client API  Lightweight  Silverlight  Embedded  RavenLight
  • 9. Sessions  Manages UoW (Units of Work)  Cheap to create  Transactional  Manages IDs, tracking
  • 10. Don’t shoot yourself in the foot  Will get you first 128 results (unbounded result set protection)  Don’t forget to commit your changes by calling SaveChanges()  30 operations per session (client/server chatter protection)  Automatic batching  No locking
  • 11. Advanced API  2nd level – Session level  3rd level – DatabaseCommands  Document store level  Thin wrapper around HTTP API  NOT Transactional
  • 12. Queries  Strongly typed  Linq  Works against Lucene indexes  Feeds back into index updates  By design, results may be stale, but you’ll know about it
  • 13. Indexes  Dynamic, created on-the-fly - temporary  Becomes static, if you insist (suggested for production)  Rich Actions:  Map  Reduce  Transform (live projections)  Field  Paging  Spatial index
  • 14. Linq Queries // Filter by property value var posts = from post in session.Query<BlogPost>() where post.Subject == "NoSQL Update" select post; // Filter by range var posts = from post in session.Query<BlogPost>() where post.NumberOfWords > 50 select post; // Filter by nested (calculated) property var posts = from post in session.Query<BlogPost>() where post.Comments.Count > 2 select post;
  • 15. Queries // Filter by property value var posts = session.Query<BlogPost>() .Where(post => post.Subject == "NoSQL Update"); // Filter by range var posts = session.Query<BlogPost>() .Where(post => post.NumberOfWords > 50); // Filter by nested (calculated) property var posts = session.Query<BlogPost>() .Where(post => post.Comments.Count > 2);
  • 16. Paging  You can skip and pick any number of entities from the returned Query result  Use Skip() and Take() to control the size of the result set // If a Page has 10 records, to get the 4th page - var posts = session.Query<BlogPost>() .Skip(30) // Skip 3 pages worth of posts .Take(10) // Select next page .ToArray(); // Execute query
  • 17. Efficient loads  Improves normalized data access  Include relevant information with your query results // Request to include Author with the Post result var post = session.Include<BlogPost>(post => post.Author.Id) .Load ("BlogPosts/34"); var author = session.Load<Author>(post.Author.Id);
  • 18. BLOBs / Attachments  Can store and manage large binary BLOBs // Store BLOB/Attachment byte[] data = new byte[] { ... }; documentStore.DatabaseCommands.PutAttachment("videos/2", null, data, new RavenJObject {{"Title", "Birthday song"}}); // Get BLOB/Attachment var attachment = documentStore.DatabaseCommands.GetAttachment("videos/1");
  • 19. Polymorphism For more watch webcast …  No required inheritance association // Query against unified index var result = session.Query<dynamic, EverytingByName>(); foreach (dynamic animal in result) Console.WriteLine(animal.Name);
  • 20. Extensibility  MEF (Managed Extensibility Framework)  Triggers  PUT triggers  DELETE triggers  Read triggers  Index update triggers  Request Responders  Custom Serialization/Deserialization
  • 21. Plugins // RavenDB plugin public class DocSize : RequestResponder { public override void Respond(IHttpContext context) { ... } public override string UrlPattern { get { return "/blobsize/(.+)"; } } public override string[] SupportedVerbs { get { return new[] {"GET"}; } } }
  • 22. Bundles  Drop-in plugins (MEF, .NET)  Write your own  Available  Authentication  Authorization  Cascade delete  Expiration  Quotas  Replication  Versioning
  • 23. Replication Between Servers  Implemented as a plug-in (Raven.Bundles.Replication.dll)  Tracks the server the document was originally written on.  The replication bundle uses this information to determine if a replicated document is conflicting with the existing document.  Supported by the client API  Detects that an instance is replicating to another set of instances.  When that instance is down, will automatically shift to the other instances.
  • 24. Replication to Relational DB Given this document… And this index… Gives this table output http://ravendb.net/bundles/index-replication
  • 25. Sharding  Sharding refers to horizontal partitioning of data across multiple machines.  The idea is to split the load across many commodity machines, instead of buying huge expensive machines.  Raven has full support for sharding, and you can utilize sharding out of the box.
  • 26. Advanced  Single document patch  Attachments (BLOBs)  Transactions (transaction scope)  Batching  Lucene Query (parser syntax)  Query statistics
  • 27. Learn More!  Raven DB Home Page http://ravendb.net/  Raven DB: An Introduction http://www.codeproject.com/KB/cs/RavenDBIntro.aspx  Herding Code 83: Ayende Rahien on RavenDB http://herdingcode.com/?p=255  Raven posts from Ayende Rahien http://ayende.com/Blog/category/564.aspx  Raven posts from Rob Ashton http://codeofrob.com/category/13.aspx  RavenDB - The Lost Session

Editor's Notes

  1. http://ravendb.net/
  2. curl -X PUT http://localhost:8080/indexes/byEmail -d &quot;{ Map: &apos;from doc in docs where doc.email != null select new {doc.email, count = 1 };&apos; , Reduce: &apos;from result in results group result by result.email into g select new { email = g.Key, count = g.Sum(x=&gt;x.count) } &apos;}&quot;
  3. http://www.youtube.com/watch?v=uk2TVs-d6sg
  4. {   &quot;Destinations&quot;: [     {       &quot;Url&quot;: &quot;http://raven_two:8080/&quot;     },     {       &quot;Url&quot;: &quot;http://raven_three:8080/&quot;     },   ] }
  5. http://old.ravendb.net/documentation/docs-shardingvar shards = new Shards{ new DocumentStore { Identifier = &quot;Users&quot;,Url = &quot;http://localhost:8081&quot;, Conventions = {GenerateDocumentKey = user =&gt; &quot;users/&quot; + ((User) user).Name } }, new DocumentStore {Identifier = &quot;Blogs&quot;, Url = &quot;http://localhost:8082&quot;}, new DocumentStore {Identifier = &quot;Posts #1&quot;, Url = &quot;http://localhost:8083&quot;}, new DocumentStore {Identifier = &quot;Posts #2&quot;, Url = &quot;http://localhost:8084&quot;}, new DocumentStore {Identifier = &quot;Posts #3&quot;, Url = &quot;http://localhost:8085&quot;}};varshardStrategy = new ShardStrategy{ShardAccessStrategy = new ParallelShardAccessStrategy(),ShardSelectionStrategy = new BlogShardSelectionStrategy(3),ShardResolutionStrategy = new BlogShardResolutionStrategy(3),};vardocumentStore = new ShardedDocumentStore(shardStrategy, shards);documentStore.Initialize();