SlideShare a Scribd company logo
RavenDB
  What is it?
Hi, My Name Is…

   Alonso Robles
       @alonsorobles
       http://alonsorobles.com

   Principal Consultant at Headspring
       @headspring
       http://headspring.com
Before we begin…

   Central Texas GiveCamp
       Developers
       Sponsors
       http://ctxgivecamp.org

   RavenDB Boot Camp
       September 5th-6th
       2-day hands-on workshop
       Headspring, Austin, TX
       http://headspring.com
Agenda

   NoSQL Crash Course

   Overview of RavenDB

   Development with RavenDB
Crash Course
   NoSQuirreLs? But why?
History of the Datum

   We (the programmers) gave
    birth to data

   We put it (the data) in memory

   We discovered a way to persist it

   So we put it in files

   And we had more problems to
    solve…
From Data To Management

                       Common problems
                           Data retrieval
                           Concurrent writes
                           Optimize for space
                           Data aggregation

                       Lead to the introduction of
                           RDBMS
                           SQL
RDBMS + SQL

                   Strengths                    Limitations



   ACID                          Scaling horizontally is hard
     Atomic
     Consistent                  Scaling vertically is expensive
     Isolated                    Object to relation mapping can
     Durable                      be difficult

   Relational
     Table / Row
   Rich query support

   Data Integrity
     Foreign Keys
     Enforced Schema
CAP Theorem
Polyglot Persistence

   Relational
     MS SQL Server
     MySQL
   Key-Value
     Redis
     Dynamo
   Column-Oriented
     BigTable
     Cassandra
   Document-Oriented
     MongoDB
     RavenDB
Key-Value

               Simplest of all data stores

               IDictionary<string, object>

               Key is a string

               Value is a blob
                   Schema free

               Query by key
                   Or key range sometimes

               Good candidate for
                   User session storage
                   Shopping carts
Document-Oriented

   Like a key-value store

   Document in known format
       JSON
       BSON
       XML

   Supports server side operations

   Good for
       Complex objects
           DDD Aggregates
Column-Oriented

                     Not relational at all

                     Schema free

                     Concepts to understand
                         Column families
                         Row Keys
                         Columns
                             A Key Value Pair

                     Good for
                         Large amounts of sparse data
Is SQL Dead?

   Nope

   It’s still the strongest option for
       Reports
           Dynamic Aggregations
       Data integrity enforcement

   Remember
       NoSQL = Not Only SQL
           Or… NoSQuirreLs
RavenDB
The Very Brief Overview
What is it?

   It’s a document database

   Built on .NET for .NET

   JSON data storage

   Built on top of Lucene

   Open source

   Gets out of your way

   It just works

   Just code – studio not required
Features I Really Like

   Scalable via shards and/or replication

   Schema free

   Easy to learn and develop against

   Full power of Lucene
       Full-text search
       Faceted search
       Auto suggest
       More like this

   Multiple deployment options
Development
     Oh yeah! It’s fun!
.NET Client API

   IDocumentStore
       Session factory
       Thread safe heavy weight object
       Thread safe
       Use single instance per application

   IDocumentSession
       Interacts with the database
       Not thread safe light weight object
       Implements Unit of Work pattern
       Use one per thread or web request
CRUD Operations

   Create
     IDocumentSession.Store(object)
   Retrieve
     IDocumentSession.Load<T>(string)
   Update
     Retrieve and modify
   Delete
     IDocumentSession.Delete(object)
   Don’t Forget
     IDocumentSession.SaveChanges()
Query Operations

   Rich LINQ support

   Basic Query
       IDocumentSession.Query<T>()
           Returns a IRavenQueryable<T>
               Implements IQueryable<T>

   Filtering
       Use a Where(…) clause

   Paging
       Use Skip(int) and Take(int)
Dynamic Indexes

   Automagically created on demand

   Raven learns about your application

   Dynamic indexes marked as temporary
       Removed if not used
       Promoted to permanent if used a lot
Static Indexes

   Do it your self

   It’s just a class
       That defines
           Implicit or explicit index name
           One or more map functions
           Optional reduce function
           Optional transform function
       May define many other options like
           Field options
               Storage
               Analysis
More to Learn

   Querying
     Using the query statistics
   Indexes
     More options
     Hierarchical indexes
     Polymorphic indexes
   Projections

   Document relationships

   Attachments

   Shards and Replication
Even More to Learn

   Advanced topics
     Transaction support
     Document metadata
     Spatial search
     Dynamic fields
     Database commands
   Server administration

   Deployment options

   Multi-tenancy

   Using bundles
Where to Learn More

   Official website
     http://ravendb.net
   Google group
     http://groups.google.com/group/ravendb
   GitHub
     http://github.com/ravendb/ravendb
   Headspring
     Exclusive North American Training Partner
     RavenDB Boot Camp on Sept 5th-6th
     More info @ http://headspring.com
   Follow me on Twitter
     @alonsorobles
The End
          Alonso Robles
          @alonsorobles
http://alonsorobles.com

More Related Content

PPTX
RavenDB Presentation
PPTX
RavenDB Overview
PPTX
Introduction to RavenDB
PPT
Document Databases & RavenDB
PPTX
RavenDB - Indexes Deep Dive
PPTX
Thinking in a document centric world with RavenDB by Nick Josevski
PPTX
Introduction to Azure DocumentDB
PPTX
Azure DocumentDB 101
RavenDB Presentation
RavenDB Overview
Introduction to RavenDB
Document Databases & RavenDB
RavenDB - Indexes Deep Dive
Thinking in a document centric world with RavenDB by Nick Josevski
Introduction to Azure DocumentDB
Azure DocumentDB 101

What's hot (20)

PPTX
Azure CosmosDB
PPTX
Azure document db/Cosmos DB
PPTX
Azure CosmosDB the new frontier of big data and nosql
PPTX
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
PDF
CosmosDb for beginners
PPTX
Javascript on Server-Side
PPTX
Tips & Tricks SQL in the City Seattle 2014
PPTX
Azure Cosmos DB - NoSQL In the Microsoft Cloud
PPTX
Azure DocumentDB
PPTX
Survey of the Microsoft Azure Data Landscape
KEY
NoSQL: Why, When, and How
PPT
Asp #2
PPTX
Cloud Computing101 Azure, updated june 2017
PPTX
Docker y azure container service
PDF
CosmosDB for DBAs & Developers
PPTX
Cool NoSQL on Azure with DocumentDB
PPTX
No SQL, No Problem: Use Azure DocumentDB
PPTX
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
PDF
Building a spa_in_30min
PPTX
CouchDB
Azure CosmosDB
Azure document db/Cosmos DB
Azure CosmosDB the new frontier of big data and nosql
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
CosmosDb for beginners
Javascript on Server-Side
Tips & Tricks SQL in the City Seattle 2014
Azure Cosmos DB - NoSQL In the Microsoft Cloud
Azure DocumentDB
Survey of the Microsoft Azure Data Landscape
NoSQL: Why, When, and How
Asp #2
Cloud Computing101 Azure, updated june 2017
Docker y azure container service
CosmosDB for DBAs & Developers
Cool NoSQL on Azure with DocumentDB
No SQL, No Problem: Use Azure DocumentDB
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
Building a spa_in_30min
CouchDB
Ad

Similar to Intro to RavenDB (20)

PPTX
Big Data (NJ SQL Server User Group)
PPTX
Got documents?
PPTX
Got documents - The Raven Bouns Edition
PPTX
An Introduction to Big Data, NoSQL and MongoDB
PPTX
No sql introduction_v1.1.1
PPTX
Navigating NoSQL in cloudy skies
PDF
Mongodb my
PDF
MongoDB
PPTX
The Rise of NoSQL and Polyglot Persistence
PPTX
NoSQL
PPTX
Big Data 2.0 - Milwaukee Big Data User Group Presentation
PPT
SQL, NoSQL, BigData in Data Architecture
PPTX
Sql vs NoSQL
PDF
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
PPTX
Yes, Sql!
PPTX
Got documents Code Mash Revision
PPTX
Freeing Yourself from an RDBMS Architecture
PDF
Scaling the Web: Databases & NoSQL
KEY
NoSQL in the context of Social Web
Big Data (NJ SQL Server User Group)
Got documents?
Got documents - The Raven Bouns Edition
An Introduction to Big Data, NoSQL and MongoDB
No sql introduction_v1.1.1
Navigating NoSQL in cloudy skies
Mongodb my
MongoDB
The Rise of NoSQL and Polyglot Persistence
NoSQL
Big Data 2.0 - Milwaukee Big Data User Group Presentation
SQL, NoSQL, BigData in Data Architecture
Sql vs NoSQL
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
Yes, Sql!
Got documents Code Mash Revision
Freeing Yourself from an RDBMS Architecture
Scaling the Web: Databases & NoSQL
NoSQL in the context of Social Web
Ad

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Approach and Philosophy of On baking technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
Teaching material agriculture food technology
PPTX
Spectroscopy.pptx food analysis technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
Unlocking AI with Model Context Protocol (MCP)
The AUB Centre for AI in Media Proposal.docx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
cuic standard and advanced reporting.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Approach and Philosophy of On baking technology
Understanding_Digital_Forensics_Presentation.pptx
Teaching material agriculture food technology
Spectroscopy.pptx food analysis technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation theory and applications.pdf
Review of recent advances in non-invasive hemoglobin estimation
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Network Security Unit 5.pdf for BCA BBA.
Diabetes mellitus diagnosis method based random forest with bat algorithm

Intro to RavenDB

  • 1. RavenDB What is it?
  • 2. Hi, My Name Is…  Alonso Robles  @alonsorobles  http://alonsorobles.com  Principal Consultant at Headspring  @headspring  http://headspring.com
  • 3. Before we begin…  Central Texas GiveCamp  Developers  Sponsors  http://ctxgivecamp.org  RavenDB Boot Camp  September 5th-6th  2-day hands-on workshop  Headspring, Austin, TX  http://headspring.com
  • 4. Agenda  NoSQL Crash Course  Overview of RavenDB  Development with RavenDB
  • 5. Crash Course NoSQuirreLs? But why?
  • 6. History of the Datum  We (the programmers) gave birth to data  We put it (the data) in memory  We discovered a way to persist it  So we put it in files  And we had more problems to solve…
  • 7. From Data To Management  Common problems  Data retrieval  Concurrent writes  Optimize for space  Data aggregation  Lead to the introduction of  RDBMS  SQL
  • 8. RDBMS + SQL Strengths Limitations  ACID  Scaling horizontally is hard  Atomic  Consistent  Scaling vertically is expensive  Isolated  Object to relation mapping can  Durable be difficult  Relational  Table / Row  Rich query support  Data Integrity  Foreign Keys  Enforced Schema
  • 10. Polyglot Persistence  Relational  MS SQL Server  MySQL  Key-Value  Redis  Dynamo  Column-Oriented  BigTable  Cassandra  Document-Oriented  MongoDB  RavenDB
  • 11. Key-Value  Simplest of all data stores  IDictionary<string, object>  Key is a string  Value is a blob  Schema free  Query by key  Or key range sometimes  Good candidate for  User session storage  Shopping carts
  • 12. Document-Oriented  Like a key-value store  Document in known format  JSON  BSON  XML  Supports server side operations  Good for  Complex objects  DDD Aggregates
  • 13. Column-Oriented  Not relational at all  Schema free  Concepts to understand  Column families  Row Keys  Columns  A Key Value Pair  Good for  Large amounts of sparse data
  • 14. Is SQL Dead?  Nope  It’s still the strongest option for  Reports  Dynamic Aggregations  Data integrity enforcement  Remember  NoSQL = Not Only SQL  Or… NoSQuirreLs
  • 16. What is it?  It’s a document database  Built on .NET for .NET  JSON data storage  Built on top of Lucene  Open source  Gets out of your way  It just works  Just code – studio not required
  • 17. Features I Really Like  Scalable via shards and/or replication  Schema free  Easy to learn and develop against  Full power of Lucene  Full-text search  Faceted search  Auto suggest  More like this  Multiple deployment options
  • 18. Development Oh yeah! It’s fun!
  • 19. .NET Client API  IDocumentStore  Session factory  Thread safe heavy weight object  Thread safe  Use single instance per application  IDocumentSession  Interacts with the database  Not thread safe light weight object  Implements Unit of Work pattern  Use one per thread or web request
  • 20. CRUD Operations  Create  IDocumentSession.Store(object)  Retrieve  IDocumentSession.Load<T>(string)  Update  Retrieve and modify  Delete  IDocumentSession.Delete(object)  Don’t Forget  IDocumentSession.SaveChanges()
  • 21. Query Operations  Rich LINQ support  Basic Query  IDocumentSession.Query<T>()  Returns a IRavenQueryable<T>  Implements IQueryable<T>  Filtering  Use a Where(…) clause  Paging  Use Skip(int) and Take(int)
  • 22. Dynamic Indexes  Automagically created on demand  Raven learns about your application  Dynamic indexes marked as temporary  Removed if not used  Promoted to permanent if used a lot
  • 23. Static Indexes  Do it your self  It’s just a class  That defines  Implicit or explicit index name  One or more map functions  Optional reduce function  Optional transform function  May define many other options like  Field options  Storage  Analysis
  • 24. More to Learn  Querying  Using the query statistics  Indexes  More options  Hierarchical indexes  Polymorphic indexes  Projections  Document relationships  Attachments  Shards and Replication
  • 25. Even More to Learn  Advanced topics  Transaction support  Document metadata  Spatial search  Dynamic fields  Database commands  Server administration  Deployment options  Multi-tenancy  Using bundles
  • 26. Where to Learn More  Official website  http://ravendb.net  Google group  http://groups.google.com/group/ravendb  GitHub  http://github.com/ravendb/ravendb  Headspring  Exclusive North American Training Partner  RavenDB Boot Camp on Sept 5th-6th  More info @ http://headspring.com  Follow me on Twitter  @alonsorobles
  • 27. The End Alonso Robles @alonsorobles http://alonsorobles.com

Editor's Notes

  • #8: 1970 Edgar F Codd – A Relational Model of Data for Large Shared Data Bank