Database Developer -
‘A database developer recognizes that the database is more than an implementation detail’
Thinking about Data
- Sets not rows – Perform operations on sets, not row by row
- Think Like you dress : in layers - use views, procedures functions to separate logic & functionality from data
- Normalize – Use a balance –' Normalise till it hurts, denoramalise till it works'
Decide if you want to be a Generalist or a Specialist?
Some people specialise in a Language, Tool, Feature
- Performance Tuning – Read execution plans, what is going on under covers, turn into actionable results . I/O , memory, indexing etc
- Reporting – Reporting queries different for volumes
- Object Relational Modelling – Optimizing frameworks, ORM Tools - Nhibernate etc
- Modeling – Planning
- Be able to spot patterns – e.g. row rather than set based processing
- Be lazy – make sure your sql is updating least number of rows possible, db doing least work possible. Use referential integrity, foreign keys, use constraints for data integrity, calculated columns Make sure business logic is in ORM.
- Think about the long term – Data choices for storage/
- Understand normalization – Join decisions
- ETL Basics – Transferring & Processing data
- Architecture – Application & Data access patterns
Hints - How do you get there?
- Consult DBAs!
- Joe Celko's Thinking in sets
- SQL and Relational Theory: How to Write Accurate SQL Code
- Pro SQL Server 2008 Relational Database Design and Implementation
- Refactoring Databases: Evolutionary Database Design
- Grant Fitchley's SQL Server 2008 Query Performance Tuning Distilled
- Grant Fitchley's Dissecting SQL Server Execution Plans