introducing-a-separate-database-for-queries-slides
introducing-a-separate-database-for-queries-slides
Queries
Vladimir Khorikov
@vkhorikov www.enterprisecraftsmanship.com
Meet Scalability
App Domain
API
services model
Database
Simplicity Performance
Scalability
Meet Scalability
Independent scaling
Meet Scalability
Create
Update Read
Delete
1 server 10 servers
Meet Scalability
Commands Queries
Single
machine
Writes Reads
Client
Meet Scalability
Separate databases
for reads and writes
Indexed view
Database replication
Separation at the Data Level in the Real World
Replica 2
Master Replica 1
Separate databases
for reads and writes
Indexed view
Database replication
Designing a Database for Queries
Master Replica
Commands Queries
Designing a Database for Queries
SELECT s.*
FROM dbo.Student s
WHERE (s.FirstCourseName = @Course
OR s.SecondCourseName = @Course OR @Course IS NULL)
AND (s.NumberOfEnrollments = @Number OR @Number IS NULL)
ORDER BY s.StudentID ASC
Recap: Creating a Database for Queries
return students;
}
}
Recap: Creating a Database for Queries
App Domain
API
services model
Client
App Domain
API
services model
App Domain
API
services model
Client
App Domain
API
services model
Replace with a
document database
Scalability
Simplicity
Performance
Scalability
Scalability
Client
Commands Queries
Sync
Immutable
Scalability
Application
Write model
App Domain
API
services model
Client
App Domain
API
services model