We live in a world of ever-increasing amounts of data, and data management systems have become ever-more critical pieces of our daily lives. From banks to e-commerce websites, almost every one of these interactions stores data in a database under the hood. For software or data practitioners, it is almost essential to know how to use databases effectively to deliver compelling solutions in each of these interactions that customers see in their daily lives.
Unfortunately, databases can be daunting to learn for the uninitiated. While the core concepts of SQL are straightforward once you know the rules of the system, getting over that initial hurdle can be challenging if you are not comfortable with set theory from math classes. Often, developers are thrust into database programming when writing applications, and the programming environments can differ greatly. Most programming environments (Java, C#, C++, Python, and so on) use procedural or imperative models to write out methods and functions to control a program, while SQL is much more declarative and requires understanding a bit about the data schema to be able to write effective queries. These differences in approach often lead to coding patterns against a database that can perform poorly, causing frustration until a different approach is tried that leverages the power of the relational model.
In the years I've spent working with customers on architectural reviews and designing solutions to work at the highest scales on SQL Server and SQL Azure, it is critical to know how to use the right approaches to get results efficiently from the database layer. This requires an understanding of the system through the logical layer of designing tables and writing SQL queries to the indexes and other physical database aspects that ultimately govern the performance limits of your application. Knowing how to balance CPU, memory, I/O, and network throughput give you the power to understand algorithmically which kinds of solutions can scale to the limits of the hardware. When you add the broader industry transition from on-premises data centers to public cloud infrastructure, where you move from a buy to a rent model, getting optimal performance becomes a monthly opportunity to tune your application to save money as your business grows instead of just buying a giant machine and hoping the application still performs on it as your business grows year-on-year.
Pam and Pedro have years of experience of working with customers, and specifically working on the problems that get escalated to Microsoft from customer support to the product team. This experience is both challenging and extremely fun—you get paid to learn by drinking from a firehose of information all day, every day. This experience informs insights and wisdom about how customers commonly get stuck using SQL Server/SQL Azure and how to learn from those lessons. Their team has also built tooling to automate many of the common pain points they see in customer upgrades, so knowing how to use those saves time and headaches compared to doing it by yourself. Many of the tips, insights, and best-practice patterns also come from the hard work of making the most demanding customers succeed every day. This book is a great way for someone to get a jump start on writing great data-driven applications and solutions based on SQL.
Conor Cunningham
Partner Architect – SQL Server and Azure SQL – Microsoft