SELECT careerhelp FROM much better informer mefites.
October 23, 2011 7:47 PM   Subscribe

It is time to refine my career. Help me become an excellent database administrator.

I have been working as a political campaign manager since I asked this AskMe question. It has been a blast. But I am trying to move my career in a new direction doing data work. I have been working with relational databases with voter information and fundraising data but it is time to step up my game.

I am utilizing some recommended recommended resources to teach myself SQL (SQLzoo, Galazql among others). But I am having some difficulty seeing the big picture. What skills I will need to have to get a full time data job from which I can afford to live so I can do political data work? What other languages should I be fluent in? Any certification programs a must? And what resources can you point me to to get me there?

Thanks ask always. Metafilter has always been helpful in my meandering career.
posted by munchingzombie to Computers & Internet (6 answers total) 13 users marked this as a favorite
 
SQL is definitely the place to start, though you'll need to make sure to specialize in whichever flavor of SQL is predominant in your field. There is an SQL standard, but it's never used 100% by any database vendor. If you find yourself working with Oracle databases, that means PL/SQL; Microsoft SQL Server => T-SQL. MySQL and Postgres have their quirks as well. Once you get that, you learn that some queries run fast, and others like molasses. Of course you want everything to be fast, so you dive into the world of query optimization and learn about indexes, keys, and normalization/denormalization. Whew!

Next you need to learn about all the things that make up a database. Yes, there are tables that you issue queries on. There are also views, stored procedures, triggers, user-defined functions, jobs... they all have a place in the DBA's world. They're not hard once you know SQL, it's more important to just know that they're out there and are, like Mrs. Robinson, available to you.

Then you start leading into a little something called users, and suddenly you realize that there's a whole world of security you need to know about. Some people may only have access to certain views, or stored procedures. Others need to be able to write to some databases, but never others. Pretty important stuff. And there's the how's as well -- can your server be accessed by TCP/IP? Which machines can talk to yours? Etc, etc, etc.

Databases are also hugely, wildly important stores of information, so you'll need to learn about how they are safely backed up in the event of a disaster. So you'll get to learn about transaction logs and backups. But you have to not skimp on the flip side, aka recovery. Many a dba has thought their database was perfectly well-backed up but then discovered to their horror that the backups couldn't be recovered for some bizarre reason. And you get to learn about ways those backups are secured (Burn to CD? Tape? Secure internet storage site of the day? They all have their place, and for very sensitive data some orgs will use a combination of these things.)

If you have REALLY REALLY BIG databases you get to learn the joys of clustering, sharding, and linking servers. And if you have lots of people accessing an important database from all over, you get to discover replication. Having to learn this stuff is a Good Problem To Have as it probably means you're doing something well.

Another angle that you might want to pursue -- which you can do concurrently with your other learning -- is data warehousing. This involves using specialized products that grab data from your perfect data store and store off a bunch of really heavy denormalized views for analysis. (Did I lose you with that sentence? That's just fancy talk for "create a big fat database that you can use to do research within your data.") I don't know if campaigns would use this or not, but I would bet political parties as a whole would need to. This is not as important for a day-to-day DBA but I bet it would make you even more valuable. (Ask around.)

Good luck with this. FWIW I'm not a DBA, just a programmer, but I've toyed with the idea in the past.
posted by rouftop at 9:37 PM on October 23, 2011 [1 favorite]


What kind of work with databases have you been doing (e.g., querying, normalizing,reforming maintenance)? What have you enjoyed the most? I ask because I wonder whether you are enjoying database administration or database development. The answers to your ask me will really depend on what you like specifically since being a DBA and being a developer are 2pretty different things.
posted by Maisie at 9:39 PM on October 23, 2011


(fucking autocorrect)
posted by Maisie at 9:42 PM on October 23, 2011


how do you know what flavor of SQL to specialize in?

Don't. That shit's for programmers; don't limit yourself by specializing.

A DBA is a person who administers a database, not somebody who writes the programs on top of it. Your role is not to write stored procedures in the language of choice. It's to maintain a robust access to, integrity of, and reliable backups for your company's data store.

The worst DBAs I know are the ones who think that it's about writing SQL and limiting access, and essentially act as obstinate gatekeepers to an information store that's essential to the enterprises' continuity. By and large those guys are former sysadmins who don't think they're making enough money, so they pony up for Oracle training and whatever Ellison is putting in the water over there turns them from regular jerks to just fantastically crusty old assholes.

The best DBAs I know, and they're few and far between, are the ones who consistently, quietly help people do things better. They're not necessarily experts in this or that SQL, though they might be. But they're always willing to look at the logs on the test DBs they set up for their programmers and tell them that you really don't need to open one connect per transaction because that's inevitably going to fail under loads you haven't tested for yet, or that I see what you did there with those joins and it's going to hurt you in production, and I see that you really aren't doing quite the thing you asked for in the req, and we'll need to find some space in the budget for larger backups...

My advice is to just learn that stuff. Get some certifications, maybe, where they're relevant and where you think the training they provide is valuable (though Oracle stuff is a big commitment, oof) but the most important thing you can do is to learn (really learn) what a database is and how you can help people gain access to it in a way that's helpful and sustainable.
posted by mhoye at 6:11 AM on October 24, 2011 [1 favorite]


the most important thing you can do is to learn (really learn) what a database is and how you can help people gain access to it in a way that's helpful and sustainable

That's excellent advice, and you can substitute any area of competence for "database" and it remains excellent advice.
posted by flabdablet at 9:55 AM on October 24, 2011


Response by poster: Thanks everyone.

What kind of work with databases have you been doing? What have you enjoyed the most?

Mostly I have been writing queries, formatting data for imports, creating new tables to add new types of information, and lots of data entry. What I have enjoyed most is making really complex tasks easy. Or finding out new things from analyzing lots of data.

For example, on a campaign I figured out a list of likely supporters by selecting among district and voter participation on a library bond measure. So, it is what mhoye suggested, how I can help people access information in a useful way.
posted by munchingzombie at 3:17 PM on October 24, 2011


« Older Can anyone provide resources for learning to be in...   |   It's hard to justify a 14-hour round trip drive... Newer »
This thread is closed to new comments.