Gabriela (or Gabi, as she prefers) is a highly respected Data Engineer. She is a marvelous person and often helps the community in database related issues. She is going to appear at Laracon 2016 as a speaker where she will talk about making the most out of MySQL.
In this interview with Cloudways, Gabi talks about how her career started and her interests. She talks about the comparisons between SQL and NoSQL and her experiences with databases. Near the end, she gives great advice to people who are looking forward to their career as a Data Engineer.
Cloudways: Hello Gabriela! How are you? Can you tell us why you switch your role as a software engineer to a full time data engineer? What was the motivation behind such a switch that attracted you towards database rather than software?
Gabriela: Call me Gabi! I am good, enjoying the sun of my hometown for now. At first this answer was about a page and a half long, and I thought: that’s too big, might as well make it a blogpost! The reader’s digest version is: it was a long way to the Data Engineering track, and sometimes I don’t even see myself as a Data Engineer because how new the title is for me.
However, somehow in the companies I’ve worked for I always end up doing data related jobs: creating ETLs, getting data using workers and sending to queues and then processing, creating data caches, implementing NoSQL storage, or looking at performance in Relational Databases; mostly using MySQL and PostgreSQL.
You learn a lot when dealing with legacy monoliths running on a DB with poorly designed tables and queries. So the title really just acknowledges a shift in my work focus that has been ongoing for years. I get to work with a lot of different storage technologies and that is exciting on its own. See, there are so many solutions out there, and what I can do is limited by what I am already familiar with plus what I can absorb within the timeline of a given project but at some point impostor syndrome may kicks in.
Cloudways: Observing your interest in databases, I wish to ask have you ever created a Distributed Database Design? If yes, what are some of the difficulties that occur while designing them and how can we resolve them easily?
Gabriela: I have not created a DDBMS yet. I have worked with some when using for Data Warehouses. It is hard, as it needs to be transparent to the application layer, but also has significant advantages like with replication or partitioning. For instance when you use Redshift you can define which tables are replicated through the cluster, and which will be partitioned. It is expected that Dimensional tables be replicated (we often do JOINS on it, so it’s faster to have them through the whole cluster) whereas big tables (in the row count – for example an “invoices” table) should be partitioned by the most searched key which, depending on the table or model, could be a field with a date, user_id, or order_id. So there is no static recipe for that; knowing the business is fundamental to having an effective Data Warehouse.
Cloudways: How would you compare SQL with NOSQL like Mongodb, Firebase, etc? Can it compete with SQL in terms of designing a database system or managing relational databases
Gabriela: I wouldn’t compare. I think they complement each other. It is like a 3 course meal. You have your appetizer, main course, and dessert. Of course you can have only one thing, but you will still have the feeling that something is missing. An example of where a NoSQL would be helpful complementing the database is with Magento. It uses EAV (Entity, Attribute and Value) to store customised form data. When you have a small store it’s ok, you don’t feel the performance toll, but when you have one too many products the reindex could take more than 2 hours (depending on hardware of course) because it needs, in the end, to make it “flat”, to be more easily readable by the frontend interfaces. So why not store this “custom” object in a NoSQL engine? Of course, I know the implications of having that forced on an open source project are huge! People would have to add another thing for their stack, but in the architectural sense, it is more logical to store that not in EAV format. There are many ways to solve that problem, but this is just an example of how one can complement the other.
From the relational side, we have, for instance, how you can link which user bought which products through the customer_entity (Customer’s table) > sales_flat_order (Order’s table) > sales_flat_order_item (Item’s Order table). Storing that in a document based system would result in huge objects to sort through and you would have a N3 problem, performance wise, to solve.
From this example, total sales volume is easy to see, as well as sales per product and sales per customer. Nonrelational would only be good for one, and therefore is less useful on its own.
Cloudways: What is your advice to beginners and students seeking to build a career as a Database Developer? How do you motivate them?
Gabriela: The problem with databases is that getting information in and out is easy for the most part. So everyone thinks they know it already and don’t go deeper. About 5 years ago, I thought I knew a lot about databases and would be mad at the company DBA cause he was “blocking” my work. Now I know better and, for the record, I only knew a small fraction of what I know now, and I still have plenty to learn. So, my advice for whoever wants to start this career is: there are so many technologies, don’t get tied to the thing you already know. Try to do the extra mile, and please do a START TRANSACTION before any live updates 😉
Cloudways: When did you started developing your interest in conferences? In your opinion, attending such conferences can be advantageous or disadvantageous? How did you feel when you were debuting as a conference speaker? Would you like to share your experience with the readers?
Gabriela: I had always thought that the people talking at conferences were the masters of their trades. I was learning Laravel at the time, and was unemployed, when I saw the CFP opened for LaraconEU. I wanted to show people how having diversity can be helpful to a team. Of course, I wanted to talk about tech, but I was scared to death, so I decided to submit a Soft Talk and was accepted for their community day.
At that time (August 2014), community day wasn’t recorded; however, I have the same talk recorded for DjangoconUS 2015. It was my first ever talk in a conference, and it was in English, which is not my native language. I was scared, and on my feedback, people even said that they couldn’t understand me well at the start of the talk, but that I was more clear as I got into it.
I think speaking at conferences provides a really nice opportunity for you to meet the people you already follow on Twitter and see that most of them are really just normal humans like you. We don’t know everything, and doing talks at conferences is also a way to push yourself to be better, because no one wants to be embarrassed in front of dozens of people.
Cloudways: Who are some of the people that you may recommend to follow within the PHP and MySQL community? Are there any people who have influenced you during your journey in the PHP and SQL world? Please share us your experience with them.
Gabriela: I think there are a lot of people that is worth following, first look around you and find peers in a user group near to you, in your country. There also very expressive people in the PHP community, and I would recommend Jenny Wong, Michelle Sanver, Ross Tuck and Anthony Ferrara. On the MySQL side of things I recommend you to follow Dave Stokes and Morgan Tocker and me (joking! Or not…).
Cloudways: I noticed that you are a Lego fan. Have you ever expressed your creativity using lego? What have you built by far? Please share some pictures of your creations if you like.
Gabriela: So Lego I use for decompression, I usually go for the collection sets, not much thinking, just building. I pass my whole day thinking, solving problems, at the end of the day or the week, I just want to put myself to work without thinking and have something done. I also know cross stitching, but that was a kind of a secret.
Cloudways: How do you spend your time when you are free from your work?
Gabriela: I think we developers are never far from work. If we are reading, most likely is a technical book or a personal project, it is how many minds works. I try to do completely different stuff, like legos, travelling and playing board games. Going out is also part of that. I am more of a social butterfly than an introvert!
Cloudways: People say that MariaDB is faster and more secure than MySQL. What are your thoughts on it?
Gabriela: I can’t comment much further on that because unfortunately I have no production environment experience with MariaDB. Only with MySQL and AWS Aurora. Since projects like that are forks or spin-offs of the original project, they get to tune specific parts they want to improve; however, you may have to wait a few months or years on the new feature releases. There is a trade off there to be made.
Cloudways: How would you compare MongoDB, Firebase and other databases with MySQL? What do you think mobile app developers should use as their database?
Gabriela: I don’t believe in a silver bullet solution, nor in a single database to rule them all. In my experience with mobile development we always had an extra layer to access the data through an API, so then we could use any database we wanted. Locally, in the device I know there are technologies available, they also have resource constraints, as well as legal constraints, depending on the platform, that will limit your choices.
Cloudways: Cloudways provides one-click installation of popular PHP based apps like WordPress, Magento, Drupal and others with databases such as MySQL and MariaDB . Would you be interested to see if Cloudways can provide the ability to clients such as launching standalone DigitalOcean, Vultr, AWS EC2 and GCE servers with MySQL and MariaDB?
Gabriela: I am always interested to see how companies manage to enable developers to learn and explore the new options and technologies available in the market. I think you do a great job with one-click install apps, because everything is contained inside the same server and easily manageable. When you talk directly about database hosting, it implies having the application in the same network too because of latency and such. One idea I would be interested in seeing in action would be getting a big client with high traffic and database needs and remove the DB from that one-click install and seeing how that goes. There is a lot going into tuning, specially for Magento, I think you could do good things with that experience.
Ahmed was a PHP community expert at Cloudways - A Managed PHP Hosting Cloud Platform. He is a software engineer with extensive knowledge in PHP and SEO. He loves watching Game of Thrones is his free time. Follow Ahmed on Twitter to stay updated with his works.