Jump to content

What does database engineer do everyday? (if you are please come in and I have some questions regarding SQL for you)

mrchow19910319

I am learning SQL recently, of course, there are tons of online video tutorials about it, the one I am following is the khan academy one. 

I have learned the basics stuff, how to create new tables, join two tables, select some of the elements in there. 

 

What I have not know is what does database engineer do everyday? 

I want the more specific answer, not like: "yeah, we deal with database all the time and delete elements/ sort things out ". 

 

For example do you open Sequel Pro and edit in there? Or you download some database file from github and edit it in atom then re-upload it back??

I am familiar (sort of) with web development, I know if I want to design a website, I need to 

 

1. create HTML CSS JS file write shit in it

2. open browser and see what it looks like

3. upload the shit to some server or something like that.

 

But when it comes to SQL I have no idea. 

Could someone walk me through it? 

 

 

If it is not broken, let's fix till it is. 

Link to comment
Share on other sites

Link to post
Share on other sites

One of my tasks is managing our company's databases, so I can give a bit of an overview. To be clear, we are a small company and we like to K.I.S.S - keep it stupid simple (or keep it simple, stupid, I'm not sure). In larger companies, DBAs work together with data architects to find the most optimal solution for storing and accessing data, running big data analysis, but also sysadmins, to make sure underlying system is working correctly. That really depends on the infrastructure and how it is set up.

 

So, first point is managing the database. Making sure it has enough resources, it is not running out of disk space and allocating more if necessary. Depending on the size of the company, there might be a dedicated team who manages all the disk storage. In our case, we don't - we just add gigabytes and we are good for a while.

 

On daily basis, I monitor the database. We have configured a bunch of monitoring applications, that keep an eye on performance numbers (CPU, memory, disk usage, transactions count), connections count, bandwidth usage and much more. Some of these are monitored automatically and if any of these goes out of spec, we get a notification on our phones. Others I check every (other) day (which is pretty much reading graphs and takes 2-3 minutes) and make sure everything is running optimally.

 

Now, speaking of the database itself. There is no specific routine what we do every day. On most days, there isn't anything that needs doing on the database (we only have about 4). Maybe few times a month, we do minor changes in the database, as in adding or changing a row. Anything bigger is carried out via database migrations, so that all changes are reviewed and approved by others. We do need to create complicated SQL queries every now and then, to get the most recent data as cheap as possible (so minimal time and network bandwidth consumption) while also getting all the data from multiple tables (e.g. single SQL over 4-5 tables).

 

As a general rule, we avoid accessing production database directly as much as possible and use database migrations instead. This is mostly for security purposes (so we do not need to keep active credentials), but also for historical purposes, so that we have a record of who carried out and what changes were made. This is stored in a git repository.

 

In our team, we use command line tools for directly accessing databases, that is psql for PostgreSQL and mysql for MySQL. GUIs are slow, bulky and often hard to find the correct buttons/features. Command-line tools also allow you to write scripts, so if there is a task you need to do often and requires 5 commands, you can combine that to one.

 

That is pretty short and very simplified overview of what I do. I highly recommend checking out r/Database (also has links to database-specific subreddits) and maybe also r/sysadmin, there are a lot of guys hanging around there, who can describe their jobs as well.

HAL9000: AMD Ryzen 9 3900x | Noctua NH-D15 chromax.black | 32 GB Corsair Vengeance LPX DDR4 3200 MHz | Asus X570 Prime Pro | ASUS TUF 3080 Ti | 1 TB Samsung 970 Evo Plus + 1 TB Crucial MX500 + 6 TB WD RED | Corsair HX1000 | be quiet Pure Base 500DX | LG 34UM95 34" 3440x1440

Hydrogen server: Intel i3-10100 | Cryorig M9i | 64 GB Crucial Ballistix 3200MHz DDR4 | Gigabyte B560M-DS3H | 33 TB of storage | Fractal Design Define R5 | unRAID 6.9.2

Carbon server: Fujitsu PRIMERGY RX100 S7p | Xeon E3-1230 v2 | 16 GB DDR3 ECC | 60 GB Corsair SSD & 250 GB Samsung 850 Pro | Intel i340-T4 | ESXi 6.5.1

Big Mac cluster: 2x Raspberry Pi 2 Model B | 1x Raspberry Pi 3 Model B | 2x Raspberry Pi 3 Model B+

Link to comment
Share on other sites

Link to post
Share on other sites

I'm not what you'd call a "Database Engineer" but I work within the data team of a company with a fairly large Teradata data warehouse.

 

My job is split fairly consistently between DBA work and development of ETL and data transformation code.

 

Day to day tasks usually consist of resolving incidents to do with data loads and transformations, access management (granting access to databases/tables etc) and general performance monitoring. I also specialise in query optimisation and performance, so there's quite a lot of improving other peoples SQL in my day to day role.

 

Hope this helps, and feel free to ask more :)

I will only ever answer to the best of my ability - there is absolutely no promises that I will be correct. Or helpful. At all.

 

My toaster:

Spoiler

CPU: Intel Core i5-4670k @ 4.3GHz
Motherboard: Asus Maximus VI Formula
RAM: 16GB Corsair Vengeance DDR3
GPU: Nvidia GeForce GTX770 2GB
Case: Some free Sharkoon case
Storage: Crucial MX500 500GB SSD | Western Digital Blue 1TB
PSU: Corsair HX750
Display(s): Acer framless 24" 1080p thing | Acer 22" 1600x900 thing
Cooling: Corsair H100i AIO | 2 x Corsair LL120 front intakes on radiator | 1 x Corsair LL120 rear exhaust
Keyboard: Steelseries Apex
Mouse: R.A.T 7
Sound: HyperX Cloud II headset | Creative EAX 5.1 speakers
OS: Windows 10 Pro

 

Link to comment
Share on other sites

Link to post
Share on other sites

44 minutes ago, mrchow19910319 said:

For example do you open Sequel Pro and edit in there? Or you download some database file from github and edit it in atom then re-upload it back??

I am familiar (sort of) with web development, I know if I want to design a website, I need to 

 

1. create HTML CSS JS file write shit in it

2. open browser and see what it looks like

3. upload the shit to some server or something like that.

 

 

 

OFF TOPIC

 

Since you mentioned. Web Development is much harder than you think. First and foremost, you just don't create a page and write some JS. You need to know what the layout is going to look like. How much width, length, etc you're going to need, how many pages you're going to know. Since you asked about it, You're going to need a database to store all the information. For example, you want want to create a booking form. You're going to need JS, as you mentioned, and a database to store all the information

 

ON TOPIC;

I've worked with MySQL, phpmyadmin and other ones which I can't remember. People think it's complicated, it is at first. I'd say creating tables and inserting all the information is more tedious and time consuming. Takes a long time but it's fine. I've got a few customers who keep breaking their WordPress installation so at times I need to rebuild their database. I make sure that all my clients websites and databases are all in tact and backed up. 

CPU: AMD Ryzen 5 5600X | CPU Cooler: Stock AMD Cooler | Motherboard: Asus ROG STRIX B550-F GAMING (WI-FI) | RAM: Corsair Vengeance LPX 16 GB (2 x 8 GB) DDR4-3000 CL16 | GPU: Nvidia GTX 1060 6GB Zotac Mini | Case: K280 Case | PSU: Cooler Master B600 Power supply | SSD: 1TB  | HDDs: 1x 250GB & 1x 1TB WD Blue | Monitors: 24" Acer S240HLBID + 24" Samsung  | OS: Win 10 Pro

 

Audio: Behringer Q802USB Xenyx 8 Input Mixer |  U-PHORIA UMC204HD | Behringer XM8500 Dynamic Cardioid Vocal Microphone | Sound Blaster Audigy Fx PCI-E card.

 

Home Lab:  Lenovo ThinkCenter M82 ESXi 6.7 | Lenovo M93 Tiny Exchange 2019 | TP-LINK TL-SG1024D 24-Port Gigabit | Cisco ASA 5506 firewall  | Cisco Catalyst 3750 Gigabit Switch | Cisco 2960C-LL | HP MicroServer G8 NAS | Custom built SCCM Server.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×