SlideShare a Scribd company logo
The XML Database for the .NET
        Framework
Endpoint Systems
• Products
  – ShoBiz Biztalk Documentation Tool (CodePlex)
  – ShareScan LOB Connector (eCopy Document
    Management)
  – Figaro
• Services
  – Consulting (BizTalk, K2, .NET)
  – BizTalk/K2 Hosting (on-site, cloud)
     • BizTalk 2009
  – BizTalk/K2 Support
What is Figaro?
• XML Database
  – Application database
  – Client or server
  – < 7 MB (~6.34 MB)
  – Holds up to 256 TB data
• Oracle Embedded Product
  – Oracle Berkeley DB XML
  – Licensed product
Product Stack
Product Editions
• Data Store (DS)
   – Single reader, single writer
   – High performance
• Concurrent Data Store (CDS)
   – Multiple readers, single writer
• Transactional Data Store (TDS)
   – Multiple readers and writers
   – ACID transaction support
• High Availability
   – Replication layer
   – Coming soon to Figaro (late 2009)
Solution Step-by-Step

FIGARO ASP.NET MEMBERSHIP
PROVIDER
Designing the Provider
• Single-app solution
  – Data Store access (single reader/writer)
  – Build up, then out
     • CDS, TDS
• Object serialization
• One container per provider
  – CDS, TDS scenarios can help create
    SSO/centralized credential store
Membership Provider Key Objects
• FigaroMembershipProvider
• FigaroMembershipUser
  – [Serializable]
  – Intermediary to MembershipUser
• FigaroMembershipData
  – DAL
Figaro Key Objects
•   FigaroEnv
     – Environment manager
     – Not used in this example
•   XmlManager
     – Manage containers, object creation
•   Container
     – The database
     – Node storage or ‘wholedoc’ storage
     – Every entry has a ‘file name’ – either auto-generated or assigned
•   QueryContext
     – Assign variable values
     – Set XML namespaces
•   Figaro.BerkeleyDb.Xml.XmlDocument
     – Not to be confused with System.Xml.XmlDocument
          •   (but you can explicitly convert to it)
     – File name, Metadata
FigaroMembershipUser
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<FigaroMembershipUser xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot;
xmlns:xsd=quot;http://www.w3.org/2001/XMLSchemaquot;
xmlns=quot;http://schemas.bdbxml.net/membership/user/2009/quot;>
            <Email>bojangles@test.com</Email>
            <Comment>comment test</Comment>
            <IsApproved>true</IsApproved>
            <LastLoginDate>2009-04-30T02:13:02.3791226-04:00</LastLoginDate>
            <LastActivityDate>2009-04-30T02:13:02.3791226-04:00</LastActivityDate>
            <CreationDate>2009-04-30T02:13:02.3791226-04:00</CreationDate>
            <IsLockedOut>false</IsLockedOut>
            <LastLockoutDate>2009-04-30T02:13:02.3791226-04:00</LastLockoutDate>
            <LastPasswordChangedDate>2009-04-30T02:13:02.3791226-04:00</LastPasswordChangedDate>
            <PasswordFormat>Clear</PasswordFormat>
            <PasswordQuestion>Favorite Food</PasswordQuestion>
            <ProviderName>FigaroMembershipProvider</ProviderName>
            <ProviderUserKey xmlns:q1=quot;http://microsoft.com/wsdl/types/quot; xsi:type=quot;q1:guidquot;>794a07ab-fe38-
48aa-869f-994fbab00a38</ProviderUserKey>
            <UserName>mrbojangles</UserName>
</FigaroMembershipUser>


 Object Serialization
Adding Users
public MembershipCreateStatus CreateUser(FigaroMembershipUser user)
       {
           var status = MembershipCreateStatus.Success;
           StartTimer();
           try
           {
               var ms = new MemoryStream();
               serializer.Serialize(ms, user);
               ms.Seek(0, SeekOrigin.Begin);
               var reader = XmlReader.Create(ms);
               var doc = mgr.CreateDocument(reader);
               doc.Name = user.UserName;
               container.PutDocument(doc,mgr.CreateUpdateContext(),PutDocumentOptions.None);
           }
           catch (Exception ex)
           {
               status = MembershipCreateStatus.ProviderError;
               var e = ExceptionHandler.HandleException(ex, source);
               if (null != e) throw e;
           }
           finally
           {
               //you must sync or your data will disappear when you close the container!
               container.Sync();
               StopTimer(quot;CreateUser quot; + user.UserName);
           }
           return status;
       }
Getting User Info
• GetUserPassword
  – for $x in collection('membership') where
    $x/FigaroMembershipUser/UserName = $user return
    xs:string($x/FigaroMembershipUser/Password)

• GetNumberOfOnlineUsers
  – for $x in collection('membership') where
    xs:dateTime($x/FigaroMembershipUser/LastActivityDate) >=
    $y return $x
How does it perform?
                                   •
•                                      MembershipData.CreateUser
    MembershipData.Query
                                       testuser995 completed in
    completed in 0.0079436
                                       0.0581908 seconds.
    seconds.
                                   •   MembershipData.CreateUser
•   MembershipData.GetUser             testuser996 completed in
                                       0.0749375 seconds.
    completed in 0.0030428
                                   •   MembershipData.CreateUser
    seconds.
                                       testuser997 completed in
•   MembershipData.Update              0.0581884 seconds.
    completed in 0.0500253         •   MembershipData.CreateUser
    seconds.                           testuser998 completed in
                                       0.0750547 seconds.
•   MembershipData.UpdateUser
                                   •   MembershipData.CreateUser
    completed in 0.0008002
                                       testuser999 completed in
    seconds.                           0.0580407 seconds.
•                                  •
    ChangePasswordQuestionAndAns       MembershipData.CreateUser
                                       testuser1000 completed in
    wer completed in 0.1160279
                                       0.0582832 seconds.
    seconds.
MembershipProvider Design:
          Going Forward
• Concurrency
  – CDS/TDS
  – COM+ layer?
• Indexing
  – The more users added, performance will slow
  – “2 Gb Rule”
• Data Partitioning
  – Keep roles, profile properties separate, or add to
    membership container?
Planning for Concurrency
• Consider the Framework

• Consider the OS Features
  – COM+
  – MSDTC
• Consider the Figaro API
  – Concurrent Data Store (CDS) switches
  – Transactions
Benefits
•    FLEXIBILITY
       – Put whatever you want into your containers
       – Change management just got a whole lot easier
•    Scalability
       – Concurrency
       – Gigabytes, Terabytes
       – Replication/HA*
•    Security
       – File
       – Application layer
       – AES Encryption support
•    Performance
       – Sub-millisecond operations
       – ACID transaction support
       – In-memory databases, log files (TDS)
•    ROI
       – Get more out of your XML
       – Reduced need for resources (no database server!)


    * Coming late 2009
Where do you want to go today?
• Client                          • Server
   – Office                          – ASP.NET
      • Custom OpenXML Packages      – CMS (e.g. Oxite)
   – Visual Studio                   – CodePlex Projects
      • Developer tools              – WCF, REST, Services SDKs
   – WPF?                            – Cloud/Saas/Software +
   – Search/Indexing                   Services
   – ISV products                    – Server Products, Platforms
• Mobile/Embedded                        • MOSS, BizTalk
                                         • Search Server
                                         • Exchange?
                                     – ISV Products
What the Future Holds
• 64 bits
• Configuration Framework
    – Environment setup/configuration
• Replication/High Availability
    – WCF stack?
• Diversified output
    – Event Window Tracing
    – Custom Listeners
• Further Framework Integration
    – 3.0, 3.5, 4.0
    – IQueryable, LINQ
• Performance Counters
• Powershell
Licensing Options
•   Client, Server
•   DS, CDS, TDS[, HA]
•   ISV
•   Enterprise
•   Partner Programs Available
Come and Get It!
• Figaro Product Portal
  – http://bdbxml.net
• Product Documentation
  – http://help.bdbxml.net
• Endpoint Systems
  – http://endpointsystems.com
Figaro

More Related Content

What's hot

Advance java session 7
Advance java session 7Advance java session 7
Advance java session 7
Smita B Kumar
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core Data
Inferis
 
Apache Cassandra and Drivers
Apache Cassandra and DriversApache Cassandra and Drivers
Apache Cassandra and Drivers
DataStax Academy
 
Di and Dagger
Di and DaggerDi and Dagger
Di and Dagger
K. Matthew Dupree
 
Open Source Ajax Solution @OSDC.tw 2009
Open Source Ajax  Solution @OSDC.tw 2009Open Source Ajax  Solution @OSDC.tw 2009
Open Source Ajax Solution @OSDC.tw 2009
Robbie Cheng
 
07 cookies
07 cookies07 cookies
07 cookies
snopteck
 
Gc crash course (1)
Gc crash course (1)Gc crash course (1)
Gc crash course (1)
Tier1 app
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
Top Ten Web Defenses - DefCamp 2012
Top Ten Web Defenses  - DefCamp 2012Top Ten Web Defenses  - DefCamp 2012
Top Ten Web Defenses - DefCamp 2012
DefCamp
 
Multi-threaded CoreData Done Right
Multi-threaded CoreData Done RightMulti-threaded CoreData Done Right
Multi-threaded CoreData Done Right
morrowa_de
 
Coursera Cassandra Driver
Coursera Cassandra DriverCoursera Cassandra Driver
Coursera Cassandra Driver
DataStax Academy
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendix
ColdFusionConference
 
Developing on SQL Azure
Developing on SQL AzureDeveloping on SQL Azure
Developing on SQL Azure
Ike Ellis
 
High Performance Core Data
High Performance Core DataHigh Performance Core Data
High Performance Core Data
Matthew Morey
 
DataStax 6 and Beyond
DataStax 6 and BeyondDataStax 6 and Beyond
DataStax 6 and Beyond
David Jones-Gilardi
 
Users' Data Security in iOS Applications
Users' Data Security in iOS ApplicationsUsers' Data Security in iOS Applications
Users' Data Security in iOS Applications
Stanfy
 
Cookies in php lecture 2
Cookies in php  lecture  2Cookies in php  lecture  2
Cookies in php lecture 2
Mudasir Syed
 
A quick tour of Mysql 8 roles
A quick tour of Mysql 8 rolesA quick tour of Mysql 8 roles
A quick tour of Mysql 8 roles
Giuseppe Maxia
 
Manual Tecnico OGG Oracle to MySQL
Manual Tecnico OGG Oracle to MySQLManual Tecnico OGG Oracle to MySQL
Manual Tecnico OGG Oracle to MySQL
Erick Vidbaz
 
smartdc by Ruby
smartdc by Rubysmartdc by Ruby
smartdc by Ruby
ogom_
 

What's hot (20)

Advance java session 7
Advance java session 7Advance java session 7
Advance java session 7
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core Data
 
Apache Cassandra and Drivers
Apache Cassandra and DriversApache Cassandra and Drivers
Apache Cassandra and Drivers
 
Di and Dagger
Di and DaggerDi and Dagger
Di and Dagger
 
Open Source Ajax Solution @OSDC.tw 2009
Open Source Ajax  Solution @OSDC.tw 2009Open Source Ajax  Solution @OSDC.tw 2009
Open Source Ajax Solution @OSDC.tw 2009
 
07 cookies
07 cookies07 cookies
07 cookies
 
Gc crash course (1)
Gc crash course (1)Gc crash course (1)
Gc crash course (1)
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache Cassandra
 
Top Ten Web Defenses - DefCamp 2012
Top Ten Web Defenses  - DefCamp 2012Top Ten Web Defenses  - DefCamp 2012
Top Ten Web Defenses - DefCamp 2012
 
Multi-threaded CoreData Done Right
Multi-threaded CoreData Done RightMulti-threaded CoreData Done Right
Multi-threaded CoreData Done Right
 
Coursera Cassandra Driver
Coursera Cassandra DriverCoursera Cassandra Driver
Coursera Cassandra Driver
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendix
 
Developing on SQL Azure
Developing on SQL AzureDeveloping on SQL Azure
Developing on SQL Azure
 
High Performance Core Data
High Performance Core DataHigh Performance Core Data
High Performance Core Data
 
DataStax 6 and Beyond
DataStax 6 and BeyondDataStax 6 and Beyond
DataStax 6 and Beyond
 
Users' Data Security in iOS Applications
Users' Data Security in iOS ApplicationsUsers' Data Security in iOS Applications
Users' Data Security in iOS Applications
 
Cookies in php lecture 2
Cookies in php  lecture  2Cookies in php  lecture  2
Cookies in php lecture 2
 
A quick tour of Mysql 8 roles
A quick tour of Mysql 8 rolesA quick tour of Mysql 8 roles
A quick tour of Mysql 8 roles
 
Manual Tecnico OGG Oracle to MySQL
Manual Tecnico OGG Oracle to MySQLManual Tecnico OGG Oracle to MySQL
Manual Tecnico OGG Oracle to MySQL
 
smartdc by Ruby
smartdc by Rubysmartdc by Ruby
smartdc by Ruby
 

Viewers also liked

Figaro
FigaroFigaro
Figaro
OLFU-AC
 
Figaro Coffee Company
Figaro Coffee CompanyFigaro Coffee Company
Figaro Coffee Company
Daniel Edward Ricio
 
Figaro and Gloria Jeans
Figaro and Gloria JeansFigaro and Gloria Jeans
Figaro and Gloria Jeans
Maria Charriza Mordeno
 
FigaroCoffeeCompany
FigaroCoffeeCompanyFigaroCoffeeCompany
FigaroCoffeeCompany
OLFU-AC
 
Micro market analysis coffee shops
Micro market analysis   coffee shopsMicro market analysis   coffee shops
Micro market analysis coffee shops
henryjamesavecilla
 
Situation analysis of nokia
Situation analysis of nokiaSituation analysis of nokia
Situation analysis of nokia
nomanalhasan
 
The Coffee Industry: Philippines & Abroad
The Coffee Industry:  Philippines & AbroadThe Coffee Industry:  Philippines & Abroad
The Coffee Industry: Philippines & Abroad
Bialetti (BFC) Philippines
 
Micro market analysis coffee shop group 3
Micro market analysis coffee shop group 3Micro market analysis coffee shop group 3
Micro market analysis coffee shop group 3
Hannah Abellera
 
Micro market analysis for mc cafe & starbucks[1]
Micro market analysis for mc cafe & starbucks[1]Micro market analysis for mc cafe & starbucks[1]
Micro market analysis for mc cafe & starbucks[1]Alvin Bilolo
 
Coffee shop (santosian cafe)
Coffee shop (santosian cafe)Coffee shop (santosian cafe)
Coffee shop (santosian cafe)
Abhilash Agrawal
 
Figaro Search: Don't go viral, go useful
Figaro Search: Don't go viral, go usefulFigaro Search: Don't go viral, go useful
Figaro Search: Don't go viral, go useful
Branded3
 
coffee shop market ppt
coffee shop market pptcoffee shop market ppt
coffee shop market ppt
market1234
 
Situational analysis, Business strategy and BCG matrix
Situational analysis, Business strategy and BCG matrixSituational analysis, Business strategy and BCG matrix
Situational analysis, Business strategy and BCG matrix
Pinnakk Paul
 
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORKChapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
Ludy Mae Nalzaro,BSM,BSN,MN
 
Starbucks marketing strategy
Starbucks marketing strategyStarbucks marketing strategy
Starbucks marketing strategy
Saravanan Murugan
 

Viewers also liked (15)

Figaro
FigaroFigaro
Figaro
 
Figaro Coffee Company
Figaro Coffee CompanyFigaro Coffee Company
Figaro Coffee Company
 
Figaro and Gloria Jeans
Figaro and Gloria JeansFigaro and Gloria Jeans
Figaro and Gloria Jeans
 
FigaroCoffeeCompany
FigaroCoffeeCompanyFigaroCoffeeCompany
FigaroCoffeeCompany
 
Micro market analysis coffee shops
Micro market analysis   coffee shopsMicro market analysis   coffee shops
Micro market analysis coffee shops
 
Situation analysis of nokia
Situation analysis of nokiaSituation analysis of nokia
Situation analysis of nokia
 
The Coffee Industry: Philippines & Abroad
The Coffee Industry:  Philippines & AbroadThe Coffee Industry:  Philippines & Abroad
The Coffee Industry: Philippines & Abroad
 
Micro market analysis coffee shop group 3
Micro market analysis coffee shop group 3Micro market analysis coffee shop group 3
Micro market analysis coffee shop group 3
 
Micro market analysis for mc cafe & starbucks[1]
Micro market analysis for mc cafe & starbucks[1]Micro market analysis for mc cafe & starbucks[1]
Micro market analysis for mc cafe & starbucks[1]
 
Coffee shop (santosian cafe)
Coffee shop (santosian cafe)Coffee shop (santosian cafe)
Coffee shop (santosian cafe)
 
Figaro Search: Don't go viral, go useful
Figaro Search: Don't go viral, go usefulFigaro Search: Don't go viral, go useful
Figaro Search: Don't go viral, go useful
 
coffee shop market ppt
coffee shop market pptcoffee shop market ppt
coffee shop market ppt
 
Situational analysis, Business strategy and BCG matrix
Situational analysis, Business strategy and BCG matrixSituational analysis, Business strategy and BCG matrix
Situational analysis, Business strategy and BCG matrix
 
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORKChapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
Chapter 6-THEORETICAL & CONCEPTUAL FRAMEWORK
 
Starbucks marketing strategy
Starbucks marketing strategyStarbucks marketing strategy
Starbucks marketing strategy
 

Similar to Figaro

Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
Ortus Solutions, Corp
 
Docker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic StackDocker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic Stack
Jakub Hajek
 
Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek
PROIDEA
 
Elk its big log season
Elk its big log seasonElk its big log season
Elk its big log season
Eric Luellen
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
Javier Toledo
 
SharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi VončinaSharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi Vončina
SPC Adriatics
 
CQRS / ES & DDD Demystified
CQRS / ES & DDD DemystifiedCQRS / ES & DDD Demystified
CQRS / ES & DDD Demystified
Vic Metcalfe
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
Aman Kohli
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
Aman Kohli
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
Engine Yard
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)
Michael Collier
 
Kerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit eastKerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit east
Jorge Lopez-Malla
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the process
guest3379bd
 
Oracle_Patching_Untold_Story_Final_Part2.pdf
Oracle_Patching_Untold_Story_Final_Part2.pdfOracle_Patching_Untold_Story_Final_Part2.pdf
Oracle_Patching_Untold_Story_Final_Part2.pdf
Alex446314
 
Presentation of OrientDB v2.2 - Webinar
Presentation of OrientDB v2.2 - WebinarPresentation of OrientDB v2.2 - Webinar
Presentation of OrientDB v2.2 - Webinar
Orient Technologies
 
Rsyslog log normalization
Rsyslog log normalizationRsyslog log normalization
Rsyslog log normalization
Rainer Gerhards
 
Geek Sync | Performance Tune Like an MVP
Geek Sync | Performance Tune Like an MVPGeek Sync | Performance Tune Like an MVP
Geek Sync | Performance Tune Like an MVP
IDERA Software
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
BradNeuberg
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
Amazon Web Services
 
Realtime Analytics on AWS
Realtime Analytics on AWSRealtime Analytics on AWS
Realtime Analytics on AWS
Sungmin Kim
 

Similar to Figaro (20)

Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
Docker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic StackDocker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic Stack
 
Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek
 
Elk its big log season
Elk its big log seasonElk its big log season
Elk its big log season
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
SharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi VončinaSharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi Vončina
 
CQRS / ES & DDD Demystified
CQRS / ES & DDD DemystifiedCQRS / ES & DDD Demystified
CQRS / ES & DDD Demystified
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)
 
Kerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit eastKerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit east
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the process
 
Oracle_Patching_Untold_Story_Final_Part2.pdf
Oracle_Patching_Untold_Story_Final_Part2.pdfOracle_Patching_Untold_Story_Final_Part2.pdf
Oracle_Patching_Untold_Story_Final_Part2.pdf
 
Presentation of OrientDB v2.2 - Webinar
Presentation of OrientDB v2.2 - WebinarPresentation of OrientDB v2.2 - Webinar
Presentation of OrientDB v2.2 - Webinar
 
Rsyslog log normalization
Rsyslog log normalizationRsyslog log normalization
Rsyslog log normalization
 
Geek Sync | Performance Tune Like an MVP
Geek Sync | Performance Tune Like an MVPGeek Sync | Performance Tune Like an MVP
Geek Sync | Performance Tune Like an MVP
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
Realtime Analytics on AWS
Realtime Analytics on AWSRealtime Analytics on AWS
Realtime Analytics on AWS
 

Recently uploaded

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 

Recently uploaded (20)

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 

Figaro

  • 1. The XML Database for the .NET Framework
  • 2. Endpoint Systems • Products – ShoBiz Biztalk Documentation Tool (CodePlex) – ShareScan LOB Connector (eCopy Document Management) – Figaro • Services – Consulting (BizTalk, K2, .NET) – BizTalk/K2 Hosting (on-site, cloud) • BizTalk 2009 – BizTalk/K2 Support
  • 3. What is Figaro? • XML Database – Application database – Client or server – < 7 MB (~6.34 MB) – Holds up to 256 TB data • Oracle Embedded Product – Oracle Berkeley DB XML – Licensed product
  • 5. Product Editions • Data Store (DS) – Single reader, single writer – High performance • Concurrent Data Store (CDS) – Multiple readers, single writer • Transactional Data Store (TDS) – Multiple readers and writers – ACID transaction support • High Availability – Replication layer – Coming soon to Figaro (late 2009)
  • 7. Designing the Provider • Single-app solution – Data Store access (single reader/writer) – Build up, then out • CDS, TDS • Object serialization • One container per provider – CDS, TDS scenarios can help create SSO/centralized credential store
  • 8. Membership Provider Key Objects • FigaroMembershipProvider • FigaroMembershipUser – [Serializable] – Intermediary to MembershipUser • FigaroMembershipData – DAL
  • 9. Figaro Key Objects • FigaroEnv – Environment manager – Not used in this example • XmlManager – Manage containers, object creation • Container – The database – Node storage or ‘wholedoc’ storage – Every entry has a ‘file name’ – either auto-generated or assigned • QueryContext – Assign variable values – Set XML namespaces • Figaro.BerkeleyDb.Xml.XmlDocument – Not to be confused with System.Xml.XmlDocument • (but you can explicitly convert to it) – File name, Metadata
  • 10. FigaroMembershipUser <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <FigaroMembershipUser xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot; xmlns:xsd=quot;http://www.w3.org/2001/XMLSchemaquot; xmlns=quot;http://schemas.bdbxml.net/membership/user/2009/quot;> <Email>bojangles@test.com</Email> <Comment>comment test</Comment> <IsApproved>true</IsApproved> <LastLoginDate>2009-04-30T02:13:02.3791226-04:00</LastLoginDate> <LastActivityDate>2009-04-30T02:13:02.3791226-04:00</LastActivityDate> <CreationDate>2009-04-30T02:13:02.3791226-04:00</CreationDate> <IsLockedOut>false</IsLockedOut> <LastLockoutDate>2009-04-30T02:13:02.3791226-04:00</LastLockoutDate> <LastPasswordChangedDate>2009-04-30T02:13:02.3791226-04:00</LastPasswordChangedDate> <PasswordFormat>Clear</PasswordFormat> <PasswordQuestion>Favorite Food</PasswordQuestion> <ProviderName>FigaroMembershipProvider</ProviderName> <ProviderUserKey xmlns:q1=quot;http://microsoft.com/wsdl/types/quot; xsi:type=quot;q1:guidquot;>794a07ab-fe38- 48aa-869f-994fbab00a38</ProviderUserKey> <UserName>mrbojangles</UserName> </FigaroMembershipUser> Object Serialization
  • 11. Adding Users public MembershipCreateStatus CreateUser(FigaroMembershipUser user) { var status = MembershipCreateStatus.Success; StartTimer(); try { var ms = new MemoryStream(); serializer.Serialize(ms, user); ms.Seek(0, SeekOrigin.Begin); var reader = XmlReader.Create(ms); var doc = mgr.CreateDocument(reader); doc.Name = user.UserName; container.PutDocument(doc,mgr.CreateUpdateContext(),PutDocumentOptions.None); } catch (Exception ex) { status = MembershipCreateStatus.ProviderError; var e = ExceptionHandler.HandleException(ex, source); if (null != e) throw e; } finally { //you must sync or your data will disappear when you close the container! container.Sync(); StopTimer(quot;CreateUser quot; + user.UserName); } return status; }
  • 12. Getting User Info • GetUserPassword – for $x in collection('membership') where $x/FigaroMembershipUser/UserName = $user return xs:string($x/FigaroMembershipUser/Password) • GetNumberOfOnlineUsers – for $x in collection('membership') where xs:dateTime($x/FigaroMembershipUser/LastActivityDate) >= $y return $x
  • 13. How does it perform? • • MembershipData.CreateUser MembershipData.Query testuser995 completed in completed in 0.0079436 0.0581908 seconds. seconds. • MembershipData.CreateUser • MembershipData.GetUser testuser996 completed in 0.0749375 seconds. completed in 0.0030428 • MembershipData.CreateUser seconds. testuser997 completed in • MembershipData.Update 0.0581884 seconds. completed in 0.0500253 • MembershipData.CreateUser seconds. testuser998 completed in 0.0750547 seconds. • MembershipData.UpdateUser • MembershipData.CreateUser completed in 0.0008002 testuser999 completed in seconds. 0.0580407 seconds. • • ChangePasswordQuestionAndAns MembershipData.CreateUser testuser1000 completed in wer completed in 0.1160279 0.0582832 seconds. seconds.
  • 14. MembershipProvider Design: Going Forward • Concurrency – CDS/TDS – COM+ layer? • Indexing – The more users added, performance will slow – “2 Gb Rule” • Data Partitioning – Keep roles, profile properties separate, or add to membership container?
  • 15. Planning for Concurrency • Consider the Framework • Consider the OS Features – COM+ – MSDTC • Consider the Figaro API – Concurrent Data Store (CDS) switches – Transactions
  • 16. Benefits • FLEXIBILITY – Put whatever you want into your containers – Change management just got a whole lot easier • Scalability – Concurrency – Gigabytes, Terabytes – Replication/HA* • Security – File – Application layer – AES Encryption support • Performance – Sub-millisecond operations – ACID transaction support – In-memory databases, log files (TDS) • ROI – Get more out of your XML – Reduced need for resources (no database server!) * Coming late 2009
  • 17. Where do you want to go today? • Client • Server – Office – ASP.NET • Custom OpenXML Packages – CMS (e.g. Oxite) – Visual Studio – CodePlex Projects • Developer tools – WCF, REST, Services SDKs – WPF? – Cloud/Saas/Software + – Search/Indexing Services – ISV products – Server Products, Platforms • Mobile/Embedded • MOSS, BizTalk • Search Server • Exchange? – ISV Products
  • 18. What the Future Holds • 64 bits • Configuration Framework – Environment setup/configuration • Replication/High Availability – WCF stack? • Diversified output – Event Window Tracing – Custom Listeners • Further Framework Integration – 3.0, 3.5, 4.0 – IQueryable, LINQ • Performance Counters • Powershell
  • 19. Licensing Options • Client, Server • DS, CDS, TDS[, HA] • ISV • Enterprise • Partner Programs Available
  • 20. Come and Get It! • Figaro Product Portal – http://bdbxml.net • Product Documentation – http://help.bdbxml.net • Endpoint Systems – http://endpointsystems.com