Microsoft Samurai
By @ErikRalston
Challenges in large-scale applications
Flavors of Databases available now
Strategies for "Polyglot Persistence" in web apps
Offerings from Cloud Platforms
Looking for general principles in "Big"
Web developers scaling to "Big"
SQL developers afraid of NoSQL
INSERT INTO ROUND_HOLE VALUES ('SQUARE_PEG')
Pick 2
SQL Server
MySQL
Oracle
PostgreSQL
CouchDB
Cassandra
Riak
Dynamo
MondoDB
Redis
SQL Server, MySQL, PostgreSQL
Data is held as rows in tables with columns
Rows can connect to each other via foreign keys
ACID Transactions
Azure DocumentDB, CouchBase, CouchDB, MongoDB
Data is held in documents with no consistent schema
Documents may be "linked", but usually just independent associations
Usually a hierarchy of Database > Collections > Document
{
"id" : "12345",
"Name" : "Erik",
"Title" : "Presenter"
}
{
"id" : "123",
"Name" : "Tanya",
"Title" : "Attendee"
}
{
"id" : "123",
"Name" : "Tech Tuesday",
"Title" : "Event",
"Attendees" : [ "Chad", "Andre", "Mike" ],
RSVPCount : 5
}
Document
Document
Document
Collection (Uniquely identified with an ID)
Azure Table Storage, Cassandra
Data is held in tables, with partitions and rows, no consistent columns
Table > Partition > Row
Partition (Uniquely Identified with Partition Key)
Table (Uniquely identified with an ID)
Row
Row
Row
Computer A
Computer B
Table 1
Partition X
Table 1
Partition Y
Complex Reporting
User Asynchronous Processing
Variety of products
No Reporting, Minimal Processing
Searching!
Large Volume
Basic Reporting
User Synchronous