Developers and DBAs Farmers and City Slickers have different mindsets
About ~ Øyvind Isene DBA Consultant working for Bicon in Oslo Optimization and helping developers with db OUGN and the Oracle community @OyvindIsene on
A city slicker «A person raised in the city and accustomed to life there. This often leads to naivety in certain matters, and sometimes unusual prejudices.» Urbandictionary.com
About farmers «An almost always respectable person, who grows the food that the general public so ungraciously eats. Don't take farmers for granted. Hell, love us. WE FEED YOU PEOPLE!.» urbandictionary.com
So I came up with this metaphor Realised that disputes came from different mindsets Started to describe what I care about Wondered why the developers don t care
Developers Work on their own code Focus on code, data not so much PC with plenty of CPU, RAM, storage, time Creative and love hype paradigms
The DBA focus on the database Data over code Lots of users Multiversion concurrency Consistency and no data loss Availability and scalability
Thought we were done with this subject We still have challenges In projects down to a single «tuning» task This will be about how to avoid stress in your job Not wanting to start a flame war
I m biased DBA from start of career but I grew up on a small farm Used to blame the developers until I realised I could be part of the problem
A database without developers is like a bank without credit cards.
Typical conflicts Admins perceived as non-agile and slow even hostile to change Developers perceived as inconsiderate no respect for a 24/7 multi-user environment
More examples See @DBAReactions on Twitter
An old DB not going away The Oracle database is over 30 years old yet up to date with all the new cool stuff Not going away anytime soon Not even in this cloudy mobile big data era
Different Mindsets
Scope of a developer
Scope of an admin
Function vs Stability Function Does what it is supposed to New cool feature Stability Available 24/7 Predictable
«Being in the zone» vs ADHD Coders can concentrate on one thing and isolate Requires planning and hard work DBAs do support and keep the wheels running Many things at the same time - automate Reluctant to stuff that requires manual work
Concurrency in a db Coders forget about this - they only see their stuff This is probably what freaks me out most when working with them
Devops? Certainly a good idea as long as they remember to do what the admins have always been doing backups - support - DR - upgrades - migration
Done with the psycho Moving on to practical stuff
Methods a procedure, technique, or way of doing something, especially in accordance with a definite plan
Datamodelling DBAs need to know this! Get in early and look for bad patterns A good model gives you better SQL Possibly the most proactive thing you can do! No data model? No release!
Seriously This is where you start Work closely with the devs, making suggestions Avoid unscalable stuff moving in to your DC Use SQL Dev Data Modeler - read Heli s new book A good data model is a good map for all
The rest is all about optimisation? How to do reactive fixing together Aka tuning
3 simple concepts 1. Response time 2. Filter early 3. Latency If you can agree on this you have made it far.
Response time Surprised to see how many forget about this Put the end user into focus Introduce programmers to another one; Cary Millsap and his Method R Clearly the most important thinking I ve learned
You have to measure it Oracle trace files Ask programmers about their log files Everyone uses timestamps these days, right? Use it for profiling
Latency You know that student who learned PHP and two SQL statements Fetched 10,000 rows from database and generated an UPDATE for each of them
Latency or TTT 100 ms isn t fast when repeated 1000 times Latency shows why certain algorithms and architectures are bad.
Filter Early The less you do, the sooner you finish Works for databases too! As early as possible in the process Dramatic effect on joins, sorting, and transport Quick question: What is the secret sauce of Exadata?
Health checks? Only if you re an consultant and need to bill more IT too complex for random ransack of whatever.
Find a common ground DBAs should code - learn: SQL and PL/SQL well APEX - make nice stuff Some of this stuff runs a lot faster than apps on Pluto. Automate with code and scripts
Project work Some recommendations
Attitude Give the other part a chance put yourself in their position Better cooperation => less fights
Some emotional IQ DBAs and developers tend to take it personally Let the other part explain Learn well the stuff you care about - and how to explain it
Have a DBA in the project One DBA that is part of a development project Sounds like a devops A gatekeeper with full access See the project from the inside Shortens the distance from problem to solution
Testing Functional / acceptance testing Benefits support too System testing - QA before deployment Volume testing - verify scalability before the users do
ITIL - a library for herding cats When you are too tired - call the CAB Frustrating for developers and people who know what they are doing Use it if you have to stop what is not ready for production need a break
Project managers Should offload admin work Change requests Fight with management Not a peace negotiator, but a facilitator Make sure everybody has the same map and goal
almost Final words Make a habit of proving yourself right or wrong Admit mistakes and rise above criticism Have fun and laugh of all the creativity out there ;-)
Big Data and Cloud Almost kidding let s discuss this over beers The DBA work is not obsolete we are not going to die with our customers But cloud will put new expectations to fast delivery