Abstract: Most modern language platforms, including D, provide some ability to interact with databases through community provided libraries specific to each database. Some languages, however, (notably Java, python, and perl), have had a big advantage in the application and utility domain by offering a standard common interface layer. D, with it's unique mix of speed, modeling power, and ease-of-scripting, could also achieve a similar level or success. A standard interface would provide multiple benefits: a simpler interface for client code to be built more quickly, a level of portability across databases, and a foundational layer on which higher level capabilities can be built.
A fundamental design aspect of the D standard database interface (std.database) is to provide an interface that meets many design goals. It must be both familiar and as easy to use as any comparable interface in any language. The implementations must be designed for high performance that many use cases will require. It must also be flexible enough to take advantage of specific driver capabilities when they are available. The interface must also be carefully designed with a sufficient number of implementations to be stable as more databases are supported over time. The interface must dovetail seamlessly with D language features. The interface must provide both synchronous and asynchronous I/O capabilities to address the growing need for applications with high numbers of connections. Finally, both SQL and NoSQL databases should be addressed.
An exploration of the interface, as well as the growing list supported databases, will include coverage of essential features: including I/O binding for scalars and arrays, range based row sets, detachable row sets, direct vs polymorphic interfaces, type conversion, compile time policy configuration, connection pooling, fluent style interface, and the use of higher level functions that simplify common use cases, including basic serialization and object relational mapping.
Speaker Bio: Erik Smith is a member of the clinical analytics team at Transcend Insights in San Diego. Erik is a specialist in building high performance full stack applications. He is a co-founder of AppFluent, a maker of database caching technology and analytic monitoring software. He has a diverse background in the development of C++ applications involving database interfaces and in the implementation of database engines.