This is the first in a series of blog posts where we take a look at our driver technology and how we build our products, with a focus on building connectors to 300+ data sources across various technologies such as ODBC, JDBC, ADO.NET, and more. We examine different perspectives used to understand the level of effort involved in building a driver for a new potential data source, including protocol considerations, serialization formats, data model considerations, metadata discovery, authentication models, query capabilities, and the complexities that arise from these aspects, which can impact the technical effort required to add support for a new data source. Our drivers expose a relational model, but also support non-relational data sources such as document databases, key/value stores, graph databases, hierarchical stores, analytical stores, and raw stores, each with unique challenges. We have invested heavily in metadata caching and improving performance in this area, and our product architecture and technology enable us to deliver over 300+ data sources across every major data access technology.