In the last past month I got a lot of question about how to learn to fundaments of being a DBA/DBO. So I decided to write a (hopefully) comprehensive post about this.
First of all as always it depends. Lately I see an upcoming trend to make sharp distinction between DBAdministrator and DBOwner. Because of this I want to write a little about these two roles.
Basically the DBA is the one who’s responsible for the database server (software mainly MySQL, Oracle, Postgresql etc.) to run smoothly. They are maintaining configurations, install databases and create tools for make the management easier. They need to be (very) familiar with the OS which runs the database. Usually DBAs help a lot to developers for creating efficient schemas, indexes and queries but this depends on the company’s culture.
Database Owners are responsible for the datas in the database. Usually they don’t care (they don’t have to care) about the OS, the server or sometimes even the database itself. They just have to care about the data. They are the ones who made the decisions about schemas, datas to store, datas to archive, datas to migrate or aggregate. This role is getting more and more popular in the last couple of years. Formerly only large (and I mean LARGE) companies were able to afford themselves to have dedicated DBOs around. At smaller companies product owner and the developers shared this role.
DBAs need to be very good in:
- Fundaments of the host operating system
- Very deep knowledge of the database server’s behaviour
- Scripting and automatation (usually Shell, Perl or Python)
- Backup and recovery solutions
DBOs need to be very good in:
- SQL – database schemas, querying
- Understands the business context
- Data warehousing and data mining
- “See the big picture”
How to learn?
First of all with a lot of reading
A great book about MySQL: High Performance MySQL ( I would recommend everybody to read this even if he/she isn’t working with MySQL. )
Very handy to learn SQL: Learning SQL
Another useful book about designing database: Beginning Database Design
Read forums, blogs and try to keep up with the community. For example you can find me on stackoverflow, quora, twitter and I read mysqlperformanceblog.com and other people’s blog. Try to be up to date as much as possible. IT trade is running faster than you think.
As you might have seen I don’t speak about anything unless I didn’t try it. If I had any doubt about something I would create a test environment and reproduce the problem and check the results. This is the best way to learn. Always facing real life problems. Solving real life problems will teach you more than all the books you can possibly read.