What Developers Need to Know About Databases
In order to be proficient with databases, developers need to understand SQL, automated frameworks, performance, security, and more
Join the DZone community and get the full member experience.
Join For FreeTo gather insights on the state of databases today and their future, we spoke to 27 executives at 23 companies who are involved in the creation and maintenance of databases.
We asked these executives, "What skills do developers need to be proficient with databases?" Here's what they told us:
SQL
- Strong SQL knowledge. Understand the difference between joins — outer, inner, left right. Know which type of database to use for which use case. Once you learn a programming language, other languages become the same. Know ML and DL libraries as well as Python. Know the different kinds of design patterns.
- SQL is never going away. Mongo, H-base Hadoop, and Cassandra all have SQL interfaces. SQL is still the most well-known language. Understand how SQL impacts the performance of the data store. Developers must understand the platform and the performance of the database. Understand the tools needed to query performance.
- SQL is still the language of choice for databases. Know how to translate objects in the application and how to store. Be able and willing to move to DevOps. Let go and be open to new frameworks. Deploy through cloud containers. Think microservices, not monolithic applications.
- SQL relations understand declarative languages, intersections, and joins. Get rid of if/then logic and understand the language. The database system is designed for getting data in and out well. Don’t fall back on the chosen application language. Take advantage of what the database has to offer to accelerate performance.
- Important to understand SQL even though the frameworks automate. Understand how to model data appropriately to handle scale, agility, and changes. Better modeled is better prepared for the future. Understand characteristics of databases for different services. Know what the right solution is for the problem you are trying to solve.
- SQL is an obvious skill for developers to learn. Every Oracle database includes application express and SQL. We support all developer frameworks so there is no relearning of tools or languages required.
- The short answer is SQL. Also, it’s increasingly important to be able to map the real world into a schema that describes the relationship between objects/entities.
Databases
- Understand the data model and the end goal of the application so that you can choose the right database. How will other processes and tooling work around the database to shorten the development cycle and enable the faster development of features?
- Make sure you use the right tool for the job. Make sure the solution you are building has copious test data so you can test every scenario. You can’t have too much good test data. Keep it simple; don’t go out of scope.
- Have the right tool for the right job. Know multi-storage. While you may be inclined to become an expert in a particular system and data stores, make sure you understand distributed databases and fundamental system levels, problem-solving, and systems thinking in a distributed manner.
- A lot of information is available. Understand the tradeoffs with solutions. What tradeoff comes from transactions, durability, and consistency? In programming, anything is possible but there are tradeoffs. As apps move faster be able to changes quickly. How far to make changes for how long and what is the maintenance lifecycle. Work with applications architects to understand requirements.
- Look at the platform and tools and understand when to choose a relational (transactions) versus a NoSQL (reports and analytics). Relational requires more overhead in code with an object relational mapper. No object mapper is needed with NoSQL. How badly do you need transactions?
- For me, it’s skill sets. Databases are not just shrink-wrapped software that’s deployed and then looked after by a DBA. Databases are now part of the DevOps fabric. It takes a different skill set to get business value from them these days. You have to be part programmer, part automator, part infrastructure admin, and part database admin. That’s a unicorn these days.
Other
Performance. What are you doing when the table gets large? Can you write a better query to be more selective? Schema structure, foreign keys which introduce coupling. How to write microservices for key, coupling, and structure? Persist object graphs. Store inside RDBMS. Foreign key references from one object tree to another can cause coupling problems.
- Basic awareness of app areas and a high level of security requirements. Knowing the regulations in any given vertical. Encryption standards. Masking standards.
- A willingness to learn new technologies! Even if you never leave Postgres for instance, there’s a ton of stuff in there that falls outside the classical SQL model, and learning how to use it will improve your craft. But don’t be afraid to leave your comfort zone! If you see a new database that looks crazy and a distribution is available, try it out! Even if you don’t find it useful, you’ll be better for the experience. A good handle on distributed systems is going to become more of a requirement going forward. Beyond that, a critical eye and an understanding of the tradeoffs you make with every decision. Work with product management to understand the business need.
- Don’t focus too much on the technology. Focus on the use case and the long term for apps today and the future. Understand and define the business case.
- Find a problem and figure out how to solve it. Learn by making mistakes. I received a dump of Apache logs and was asked what we could learn from them. I did a terrible job but learned a lot. Find a problem to solve and don’t be afraid to fail. Understand the basic concepts of distributed systems – what’s possible and what isn’t. What’s easy and what isn’t.
- Architect skills. Developers must be architects these days. Understand the big picture of mapping. Reinvent the art of re-evaluating technology. Everything changes so fast the fundamentals you learned five or 10 years ago may no longer be applicable. Something counter to your intuition could work because the underlying facts have changed. Modern networks have reduced latency from tens or hundreds of milliseconds to less than one millisecond. Bandwidth is 100-times greater. Try to find the next set of standards. There are many ways of doing things.
- Memory is the new disc. Think memory first. Have a multi-cloud strategy. Your data grid will act as a data broker unifying data from multiple infrastructures, multiple sources, and making them highly portable.
- Fundamental scalable apps with concurrency using a Scala, Spark infrastructure.
- There are several skills crucial to database management, the least of them being coding knowledge — despite developers’ first instincts. The first is to be organized in your tracking. It’s essential to get a good baseline for the unique KPIs for your specific DBMS. Beyond the basics of querying execution time, each platform often has its own metrics you’ll want to keep an eye on for performance tuning. The second is networking. As documentation can be limited, developers often need to reach out to those colleagues with long histories of working with the database platform. They’ll know the ins and outs of the multiple generations and version updates to best remedy the issue at hand.
- I believe for developers to be proficient with databases they need to have the capability to create efficient data/graph models and queries.
What do you think developers need to know to be proficient working with databases?
Here’s who we talked to:
- Emma McGrattan, S.V.P. of Engineering, Actian
- Zack Kendra, Principal Software Engineer, Blue Medora
- Subra Ramesh, VP of Products and Engineering, Dataguise
- Robert Reeves, Co-founder and CTO and Ben Gellar, VP of Marketing, Datical
- Peter Smails, VP of Marketing and Business Development and Shalabh Goyal, Director of Product, Datos IO
- Anders Wallgren, CTO and Avantika Mathur, Project Manager, Electric Cloud
- Lucas Vogel, Founder, Endpoint Systems
- Yu Xu, CEO, TigerGraph
- Avinash Lakshman, CEO, Hedvig
- Matthias Funke, Director, Offering Manager, Hybrid Data Management, IBM
- Vicky Harp, Senior Product Manager, IDERA
- Ben Bromhead, CTO, Instaclustr
- Julie Lockner, Global Product Marketing, Data Platforms, InterSystems
- Amit Vij, CEO and Co-founder, Kinetica
- Anoop Dawar, V.P. Product Marketing and Management, MapR
- Shane Johnson, Senior Director of Product Marketing, MariaDB
- Derek Smith, CEO and Sean Cavanaugh, Director of Sales, Naveego
- Philip Rathle, V.P. Products, Neo4j
- Ariff Kassam, V.P. Products, NuoDB
- William Hardie, V.P. Oracle Database Product Management, Oracle
- Kate Duggan, Marketing Manager, Redgate Software Ltd.
- Syed Rasheed, Director Solutions Marketing Middleware Technologies, Red Hat
- John Hugg, Founding Engineer, VoltDB
- Milt Reder, V.P. of Engineering, Yet Analytics
Opinions expressed by DZone contributors are their own.
Comments