SlideShare una empresa de Scribd logo
1 de 49
Priorities, Design Patterns, and Thoughts on
Data Modeling for Transactions
Relational Data Modeling
Trends for Transactional
Applications
Ike Ellis, MVP
General Manager Data & AI Practice
Solliance, Crafting Bytes
Please silence
cell phones
everything PASS
has to offer
Free online
webinar events
Free 1-day local
training events
Local user groups
around the world
Online special
interest user groups
Business analytics
training
Get involved
Free Online Resources
Newsletters
PASS.org
Explore
Ike Ellis
General Manager – Data &
AI Practice
Solliance
/ikeellis
@ike_ellis
www.ikeellis.com
• Founder of San Diego Power
BI and PowerApps
UserGroup
• San Diego Tech Immersion
Group
• MVP since 2011
• Author of Developing Azure
Solutions, Power BI MVP Book
• Speaker at PASS Summit,
SQLBits, DevIntersections,
TechEd, Craft
Agenda
1. summary of where we’ve been in
data modeling
2. current priorities, state of data
modeling, and design guidelines
3. practice modeling data
through-out this presentation, remember three things
• schema controls scalability (performance) and
changeability
• in the average transactional application, reads outnumber
writes by 10 to 1, schema often emphasizes writes, but it
should emphasis the reads
• schema has to change for the future
• change with the business
• change with technology
schema definition
• a representation of a plan or theory in the form of an outline
or model
• would you begin any major project without a plan or a
theory?
EF Codd
first normal form
• That the data is in a database table. The table stores information in rows and
columns where one or more columns, called the primary key, uniquely identify
each row.
• Each column contains atomic values, and there are not repeating groups of
columns.
Example:
• There is a primary key
• Each column only has one piece of data.
• Bad Example: Order1Date, Order2Date, Order3Date, etc.
second normal form
A table is in 2nd Normal Form if:
• The table is in 1st normal form, and
• All the non-key columns are dependent on the table’s
primary key.
Example:
• you wouldn’t put corporateHeadquartersAddress in the
orders table. it’s irrelevant.
third normal form
A table is in third normal form if:
• A table is in 2nd normal form.
• It contains only columns that are non-transitively
dependent on the primary key
Example:
• you wouldn’t put employeeFullName in the orders table,
even though employeeID is in the orders table
EF Codd’s ideas are a bit outdated
his assumptions and priorities are not our assumptions and
priorities
assumption: disks will always be expensive
my first hard drive was 10MB and cost my dad $1,400 in 1984
results
• this means that we need normalization to decrease
repeating data and thus decrease the overall size of the
data on the disk
• this means that there would be a benefit to over-
normalization, ie a person table
results of over-normalization: terrible
performance with joins
• over-normalization has several drawbacks
• too many joins in a query will always have bad performance
• over-normalized data models are too difficult for new developers or
contractors to learn
• the total number of tables explodes on us. 300 tables per database is very
common in a transactional model
• over-normalization is too steep a learning curve to figure out how to
delete or insert records
• data has to be constantly aggregated to show results if we avoid
repeating data
assumption: the database is the center of
all applications
results
• one application can’t release changes to the database
without testing all applications
• this greatly increased the testing surface area, and delays
product releases
results: database as an integration point
application 1 uses the database to communicate to
application 2
results: database as a messaging service
• application1 tells application2 what to do by using the
database
• multiple columns in a table that have status date tells you
there might be a queue
• deletes on a queue are logged operations. takes a lot of
time and locks the table between applications
results: applications affect the
performance of other applications
high load on app1 is now affecting the performance of app2
results: in order to upgrade app1, you
have to upgrade app2
app1 might need money and better performance. we have to
pay to upgrade app2 as a result.
assumption: because the database is
shared, it’s best to have it be responsible
for data accuracy and consistency
data is only stored one time between all
applications. the database is in charge of the data
being accurate.
result: business logic begins to go in
the database
• it’s the one place where business logic is guaranteed to be
enforced
• this loads the cpu of the database
• hurts sql server licensing
• hurts database scalability
• incentivizes the use of stored procedures and triggers to
consolidate business logic
• both things are difficult to test, difficult to refactor, difficult to read
NOW LET’S TALK ABOUT CURRENT
DESIGN PRIORITIES (CDP)
cdp#1: the data needs to be consistent
and high quality
• choose the correct data type
• allow for nulls when the value is unknown
• when data is wrong, create a correction plan and fix the
bug
• build automated tests around data quality
cdp #2: schema should be able to change
• business is complaining that the database is not changing as fast as
the business
• business changes taxonomy. they change student to learner. they change
eligibility to enrollment. if the database doesn’t change, this creates bugs,
confusion, and ambiguity
• technology changes
• new index structures, new table structures, new database technology, new
versions of existing technology
• very fast pace of change
• moving to the cloud
cdp#2: the microservices method ~ ways
to keep schema flexible
one application to one database
No Excel
No ETL
No other apps
No SSRS, Power BI
cdp#2: consolidate database logic in a
data tier layer
data tier
for all
data
access
cdp#2: use an ORM, views, codegen,
swagger
data tier
for all
data
access
cdp#2: application integration is
through apis, messaging, and eventing
cdp #3: optimize for reads
• the application will be judged based on read-speed, not
write speed. users expect writes to take a long time.
schema should focus on the reads
cdp#3: optimize for reads
cdp#3: optimize for reads
cdp#3: optimize for reads
Customers Table
CustomerID
CustomerName
Address
TotalOrderAmount
AllOpenOrdersJSON
Orders Table
OrderID
OrderDate
Qty
UnitPrice
TotalPrice
cdp#3: reads ~ index table
Create three tables
• Customers
• Orders
• CustomerOpenOrders
cdp#4: make the schema easy and
discoverable
• delete columns no one is using
• delete tables no one is using
• avoid acronyms in naming
• avoid jargon
• avoid spaces
• remove unnecessary tables
• name the tables after business names
cdp#5: it’s the network, not the disk
• the network is the real problem
• tough to upgrade
• shared by everything
• latency
• hard to optimize
• create schema for the network
• minimize round-trips
• only get the columns and rows that you need
• keep transactions small
• it’s ok to say no to users
cdp#5: optimize for network
mobile carrier bandwidth load times and too much
network affect SEO and
bounce rates
cdp #5: network ~ data locality
cdp #6: raw performance
• think of de-normalization as just another index
• proper schema can increase performance by 1,000 times
• limit joins
• think of the indexing
cdp #7: what can we remove that isn’t
100% necessary?
• audit trails: different database
• blobs: azure blob storage
• temp data: different database
• staging data: different database, azure blob storage
cdp #8: plan for partitioning
• choose a partition key
• make partition key available in every applicable table
• shouldn’t have to join to a different table to get the partition key
• shouldn’t have to hunt for the partition key
• keep lookup tables small or in their own database
• use api for lookup with caching backend as their own
domain
cqrs
command query segregation responsibility
app takes your
order or
request
publish
app responds
to user “we’ve
received your
request”
ack
pull
function takes request
and transforms the data
into data repo optimized
for read and cache
persist data store
Design Practice!: #1 Blog
• Comments
• Posts
• Tags
• Archives
Design Practice #2: Online Store
• Product Catalog
• Shopping Cart
• Orders
• Past Orders Screen
• Phone number field?
• Order Total by Customer
Design Practice #3: Refrigeration Trucks
Session
Evaluations
Submit by 5pm Friday,
November 15th to
win prizes.
Download the GuideBook App
and search: PASS Summit 2019
Follow the QR code link on session
signage
Go to PASSsummit.com
3 W A Y S T O A C C E S S
Ike Ellis
Twitter: @ike_ellis
YouTube: https://www.youtube.com/user/IkeEllisData
Solliance
Microsoft MVP
www.solliance.net
www.craftingbytes.com
www.ikeellis.com
Thank You
Speaker name
@yourhandle
youremail@email.com

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Data Modeling on Azure for Analytics
Data Modeling on Azure for AnalyticsData Modeling on Azure for Analytics
Data Modeling on Azure for Analytics
 
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
 
Should I move my database to the cloud?
Should I move my database to the cloud?Should I move my database to the cloud?
Should I move my database to the cloud?
 
Exploring sql server 2016
Exploring sql server 2016Exploring sql server 2016
Exploring sql server 2016
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
 
Azure Data Factory V2; The Data Flows
Azure Data Factory V2; The Data FlowsAzure Data Factory V2; The Data Flows
Azure Data Factory V2; The Data Flows
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
 
Tableau API
Tableau APITableau API
Tableau API
 
Azure data platform overview
Azure data platform overviewAzure data platform overview
Azure data platform overview
 
Introduction to Azure Data Lake
Introduction to Azure Data LakeIntroduction to Azure Data Lake
Introduction to Azure Data Lake
 
RDX Insights Presentation - Microsoft Business Intelligence
RDX Insights Presentation - Microsoft Business IntelligenceRDX Insights Presentation - Microsoft Business Intelligence
RDX Insights Presentation - Microsoft Business Intelligence
 
Synapse for mere mortals
Synapse for mere mortalsSynapse for mere mortals
Synapse for mere mortals
 
How does Microsoft solve Big Data?
How does Microsoft solve Big Data?How does Microsoft solve Big Data?
How does Microsoft solve Big Data?
 
Microsoft cloud big data strategy
Microsoft cloud big data strategyMicrosoft cloud big data strategy
Microsoft cloud big data strategy
 
Azure Lowlands: An intro to Azure Data Lake
Azure Lowlands: An intro to Azure Data LakeAzure Lowlands: An intro to Azure Data Lake
Azure Lowlands: An intro to Azure Data Lake
 
Data Lake Overview
Data Lake OverviewData Lake Overview
Data Lake Overview
 
What’s new in SQL Server 2017
What’s new in SQL Server 2017What’s new in SQL Server 2017
What’s new in SQL Server 2017
 
Introducing Azure SQL Data Warehouse
Introducing Azure SQL Data WarehouseIntroducing Azure SQL Data Warehouse
Introducing Azure SQL Data Warehouse
 
Azure data platform overview
Azure data platform overviewAzure data platform overview
Azure data platform overview
 
Dipping Your Toes: Azure Data Lake for DBAs
Dipping Your Toes: Azure Data Lake for DBAsDipping Your Toes: Azure Data Lake for DBAs
Dipping Your Toes: Azure Data Lake for DBAs
 

Similar a Relational data modeling trends for transactional applications

Building a highly scalable and available cloud application
Building a highly scalable and available cloud applicationBuilding a highly scalable and available cloud application
Building a highly scalable and available cloud application
Noam Sheffer
 
Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?
IDERA Software
 
Why Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best OpportunityWhy Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best Opportunity
Zach Gardner
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
Mugunth Kumar
 
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
confluent
 

Similar a Relational data modeling trends for transactional applications (20)

Optimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptxOptimizing Application Performance - 2022.pptx
Optimizing Application Performance - 2022.pptx
 
Breaking data
Breaking dataBreaking data
Breaking data
 
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
 
Boosting the Performance of your Rails Apps
Boosting the Performance of your Rails AppsBoosting the Performance of your Rails Apps
Boosting the Performance of your Rails Apps
 
UNIT3 DBMS.pptx operation nd management of data base
UNIT3 DBMS.pptx operation nd management of data baseUNIT3 DBMS.pptx operation nd management of data base
UNIT3 DBMS.pptx operation nd management of data base
 
Building a highly scalable and available cloud application
Building a highly scalable and available cloud applicationBuilding a highly scalable and available cloud application
Building a highly scalable and available cloud application
 
Delivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesDelivering Changes for Applications and Databases
Delivering Changes for Applications and Databases
 
Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?Geek Sync | Is Your Database Environment Ready for DevOps?
Geek Sync | Is Your Database Environment Ready for DevOps?
 
Taming the shrew, Optimizing Power BI Options
Taming the shrew, Optimizing Power BI OptionsTaming the shrew, Optimizing Power BI Options
Taming the shrew, Optimizing Power BI Options
 
Why Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best OpportunityWhy Bad Data May Be Your Best Opportunity
Why Bad Data May Be Your Best Opportunity
 
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionEnterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
 
Introduction to Database Management Systems (DBMS)
Introduction to Database Management Systems (DBMS)Introduction to Database Management Systems (DBMS)
Introduction to Database Management Systems (DBMS)
 
DoneDeal - AWS Data Analytics Platform
DoneDeal - AWS Data Analytics PlatformDoneDeal - AWS Data Analytics Platform
DoneDeal - AWS Data Analytics Platform
 
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
A Marriage of Lambda and Kappa: Supporting Iterative Development of an Event ...
 
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACLPerformance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
 
From ddd to DDD : My journey from data-driven development to Domain-Driven De...
From ddd to DDD : My journey from data-driven development to Domain-Driven De...From ddd to DDD : My journey from data-driven development to Domain-Driven De...
From ddd to DDD : My journey from data-driven development to Domain-Driven De...
 
Delivering changes for applications and databases
Delivering changes for applications and databasesDelivering changes for applications and databases
Delivering changes for applications and databases
 
Tah 03302015 withendclient
Tah 03302015 withendclientTah 03302015 withendclient
Tah 03302015 withendclient
 
Pr dc 2015 sql server is cheaper than open source
Pr dc 2015 sql server is cheaper than open sourcePr dc 2015 sql server is cheaper than open source
Pr dc 2015 sql server is cheaper than open source
 

Más de Ike Ellis

Más de Ike Ellis (20)

Storytelling with Data with Power BI
Storytelling with Data with Power BIStorytelling with Data with Power BI
Storytelling with Data with Power BI
 
Storytelling with Data with Power BI.pptx
Storytelling with Data with Power BI.pptxStorytelling with Data with Power BI.pptx
Storytelling with Data with Power BI.pptx
 
Build a modern data platform.pptx
Build a modern data platform.pptxBuild a modern data platform.pptx
Build a modern data platform.pptx
 
Pass 2018 introduction to dax
Pass 2018 introduction to daxPass 2018 introduction to dax
Pass 2018 introduction to dax
 
Pass the Power BI Exam
Pass the Power BI ExamPass the Power BI Exam
Pass the Power BI Exam
 
Slides for PUG 2018 - DAX CALCULATE
Slides for PUG 2018 - DAX CALCULATESlides for PUG 2018 - DAX CALCULATE
Slides for PUG 2018 - DAX CALCULATE
 
Introduction to DAX
Introduction to DAXIntroduction to DAX
Introduction to DAX
 
60 reporting tips in 60 minutes - SQLBits 2018
60 reporting tips in 60 minutes - SQLBits 201860 reporting tips in 60 minutes - SQLBits 2018
60 reporting tips in 60 minutes - SQLBits 2018
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017
 
A lap around microsofts business intelligence platform
A lap around microsofts business intelligence platformA lap around microsofts business intelligence platform
A lap around microsofts business intelligence platform
 
Survey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeSurvey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data Landscape
 
11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL Developers11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL Developers
 
SQL PASS BAC - 60 reporting tips in 60 minutes
SQL PASS BAC - 60 reporting tips in 60 minutesSQL PASS BAC - 60 reporting tips in 60 minutes
SQL PASS BAC - 60 reporting tips in 60 minutes
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
 
Tips & Tricks SQL in the City Seattle 2014
Tips & Tricks SQL in the City Seattle 2014Tips & Tricks SQL in the City Seattle 2014
Tips & Tricks SQL in the City Seattle 2014
 
Hadoop for the Absolute Beginner
Hadoop for the Absolute BeginnerHadoop for the Absolute Beginner
Hadoop for the Absolute Beginner
 
SQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & TricksSQL Pass Architecture SQL Tips & Tricks
SQL Pass Architecture SQL Tips & Tricks
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Relational data modeling trends for transactional applications

  • 1. Priorities, Design Patterns, and Thoughts on Data Modeling for Transactions Relational Data Modeling Trends for Transactional Applications Ike Ellis, MVP General Manager Data & AI Practice Solliance, Crafting Bytes
  • 3. everything PASS has to offer Free online webinar events Free 1-day local training events Local user groups around the world Online special interest user groups Business analytics training Get involved Free Online Resources Newsletters PASS.org Explore
  • 4. Ike Ellis General Manager – Data & AI Practice Solliance /ikeellis @ike_ellis www.ikeellis.com • Founder of San Diego Power BI and PowerApps UserGroup • San Diego Tech Immersion Group • MVP since 2011 • Author of Developing Azure Solutions, Power BI MVP Book • Speaker at PASS Summit, SQLBits, DevIntersections, TechEd, Craft
  • 5. Agenda 1. summary of where we’ve been in data modeling 2. current priorities, state of data modeling, and design guidelines 3. practice modeling data
  • 6. through-out this presentation, remember three things • schema controls scalability (performance) and changeability • in the average transactional application, reads outnumber writes by 10 to 1, schema often emphasizes writes, but it should emphasis the reads • schema has to change for the future • change with the business • change with technology
  • 7. schema definition • a representation of a plan or theory in the form of an outline or model • would you begin any major project without a plan or a theory?
  • 9. first normal form • That the data is in a database table. The table stores information in rows and columns where one or more columns, called the primary key, uniquely identify each row. • Each column contains atomic values, and there are not repeating groups of columns. Example: • There is a primary key • Each column only has one piece of data. • Bad Example: Order1Date, Order2Date, Order3Date, etc.
  • 10. second normal form A table is in 2nd Normal Form if: • The table is in 1st normal form, and • All the non-key columns are dependent on the table’s primary key. Example: • you wouldn’t put corporateHeadquartersAddress in the orders table. it’s irrelevant.
  • 11. third normal form A table is in third normal form if: • A table is in 2nd normal form. • It contains only columns that are non-transitively dependent on the primary key Example: • you wouldn’t put employeeFullName in the orders table, even though employeeID is in the orders table
  • 12. EF Codd’s ideas are a bit outdated his assumptions and priorities are not our assumptions and priorities
  • 13. assumption: disks will always be expensive my first hard drive was 10MB and cost my dad $1,400 in 1984
  • 14. results • this means that we need normalization to decrease repeating data and thus decrease the overall size of the data on the disk • this means that there would be a benefit to over- normalization, ie a person table
  • 15. results of over-normalization: terrible performance with joins • over-normalization has several drawbacks • too many joins in a query will always have bad performance • over-normalized data models are too difficult for new developers or contractors to learn • the total number of tables explodes on us. 300 tables per database is very common in a transactional model • over-normalization is too steep a learning curve to figure out how to delete or insert records • data has to be constantly aggregated to show results if we avoid repeating data
  • 16. assumption: the database is the center of all applications
  • 17. results • one application can’t release changes to the database without testing all applications • this greatly increased the testing surface area, and delays product releases
  • 18. results: database as an integration point application 1 uses the database to communicate to application 2
  • 19. results: database as a messaging service • application1 tells application2 what to do by using the database • multiple columns in a table that have status date tells you there might be a queue • deletes on a queue are logged operations. takes a lot of time and locks the table between applications
  • 20. results: applications affect the performance of other applications high load on app1 is now affecting the performance of app2
  • 21. results: in order to upgrade app1, you have to upgrade app2 app1 might need money and better performance. we have to pay to upgrade app2 as a result.
  • 22. assumption: because the database is shared, it’s best to have it be responsible for data accuracy and consistency data is only stored one time between all applications. the database is in charge of the data being accurate.
  • 23. result: business logic begins to go in the database • it’s the one place where business logic is guaranteed to be enforced • this loads the cpu of the database • hurts sql server licensing • hurts database scalability • incentivizes the use of stored procedures and triggers to consolidate business logic • both things are difficult to test, difficult to refactor, difficult to read
  • 24. NOW LET’S TALK ABOUT CURRENT DESIGN PRIORITIES (CDP)
  • 25. cdp#1: the data needs to be consistent and high quality • choose the correct data type • allow for nulls when the value is unknown • when data is wrong, create a correction plan and fix the bug • build automated tests around data quality
  • 26. cdp #2: schema should be able to change • business is complaining that the database is not changing as fast as the business • business changes taxonomy. they change student to learner. they change eligibility to enrollment. if the database doesn’t change, this creates bugs, confusion, and ambiguity • technology changes • new index structures, new table structures, new database technology, new versions of existing technology • very fast pace of change • moving to the cloud
  • 27. cdp#2: the microservices method ~ ways to keep schema flexible one application to one database No Excel No ETL No other apps No SSRS, Power BI
  • 28. cdp#2: consolidate database logic in a data tier layer data tier for all data access
  • 29. cdp#2: use an ORM, views, codegen, swagger data tier for all data access
  • 30. cdp#2: application integration is through apis, messaging, and eventing
  • 31. cdp #3: optimize for reads • the application will be judged based on read-speed, not write speed. users expect writes to take a long time. schema should focus on the reads
  • 34. cdp#3: optimize for reads Customers Table CustomerID CustomerName Address TotalOrderAmount AllOpenOrdersJSON Orders Table OrderID OrderDate Qty UnitPrice TotalPrice
  • 35. cdp#3: reads ~ index table Create three tables • Customers • Orders • CustomerOpenOrders
  • 36. cdp#4: make the schema easy and discoverable • delete columns no one is using • delete tables no one is using • avoid acronyms in naming • avoid jargon • avoid spaces • remove unnecessary tables • name the tables after business names
  • 37. cdp#5: it’s the network, not the disk • the network is the real problem • tough to upgrade • shared by everything • latency • hard to optimize • create schema for the network • minimize round-trips • only get the columns and rows that you need • keep transactions small • it’s ok to say no to users
  • 38. cdp#5: optimize for network mobile carrier bandwidth load times and too much network affect SEO and bounce rates
  • 39. cdp #5: network ~ data locality
  • 40. cdp #6: raw performance • think of de-normalization as just another index • proper schema can increase performance by 1,000 times • limit joins • think of the indexing
  • 41. cdp #7: what can we remove that isn’t 100% necessary? • audit trails: different database • blobs: azure blob storage • temp data: different database • staging data: different database, azure blob storage
  • 42. cdp #8: plan for partitioning • choose a partition key • make partition key available in every applicable table • shouldn’t have to join to a different table to get the partition key • shouldn’t have to hunt for the partition key • keep lookup tables small or in their own database • use api for lookup with caching backend as their own domain
  • 43. cqrs command query segregation responsibility app takes your order or request publish app responds to user “we’ve received your request” ack pull function takes request and transforms the data into data repo optimized for read and cache persist data store
  • 44. Design Practice!: #1 Blog • Comments • Posts • Tags • Archives
  • 45. Design Practice #2: Online Store • Product Catalog • Shopping Cart • Orders • Past Orders Screen • Phone number field? • Order Total by Customer
  • 46. Design Practice #3: Refrigeration Trucks
  • 47. Session Evaluations Submit by 5pm Friday, November 15th to win prizes. Download the GuideBook App and search: PASS Summit 2019 Follow the QR code link on session signage Go to PASSsummit.com 3 W A Y S T O A C C E S S
  • 48. Ike Ellis Twitter: @ike_ellis YouTube: https://www.youtube.com/user/IkeEllisData Solliance Microsoft MVP www.solliance.net www.craftingbytes.com www.ikeellis.com