I'm super thrilled to announce that we just shipped a new Stable Channel release for Data Abstract and Remoting SDK 10. Build .1481 brings a range of enhancements and improvements, but there are two that I want to call out in this post specifically.

First, we are really excited that we have been able to bring support for DA SQL to Delphi-based servers.

DA SQL as a technology has been in Data Abstract for a long time, but until now it has been limited to work with servers created using DA/.NET and Relativity Server. We know that many of our users love Delphi as a server platform, so as of this release, DA SQL is now also available when talking to servers created with DA/Delphi.

What is DA SQL?

Every database developer knows SQL — the standard (for certain values of the word Standard ;) query language used by most relational databases. SQL is a flexible and powerful way to express queries against a database — essentially to describe what (sub)set of data your application wants to obtain from the database, and how to filter, sort, partition and combine it.

But traditional SQL works directly against the database, and multi-tier systems such as Data Abstract sit in between your application and the database, abstracting your access from the real data for integrity, security and, well, abstraction purposes. In the case of Data Abstract, that happens through the use of Schemas that define how your middle tier exposes the data to client applications.

As such, the client application does not talk directly to the database, and conversely, cannot use the power of SQL to query data, being limited to "only" the database APIs provided by the middle tier (I put "only" in scare-quotes, because that alone is and has been pretty powerful with Data Abstract).

Of course, this separation is in place to let the middle tier protect your data. The user logged into the client might not be allowed to access all tables (or all columns in a table) or might only have access to a subset of data. There are all kinds of restrictions and checks a middle tier might need to enforce — both on data access and, even more critically, when updating data.

Allowing the client to send arbitrary SQL code (as some competing frameworks do) lets malicious users bypass your security layer, and that is no good!

Enter DA SQL

DA SQL is SQL, but it runs on the middle tier, against the tables as they are exposed by your schema, and against all the business rules, security checks and other restrictions your middle tier might be designed to enforce.

It brings the flexibility of SQL to the client application, without any of the security risks and loopholes that a direct connection to the database has.

As shown in the diagram below, a client application might be naïvely asking for a Customer record by its ID. But does the user have access to seeing that record? Who knows! Actually, the middle tier knows: it takes apart the query, and combines it with (and thus enforces) security restrictions set in the server; in this case, the user might only be allowed to access Customers from a specific region:

Using DA SQL

Of course using DA SQL from the client side can come at various levels. Some advanced applications might actually let the end user type in (or select) custom SQL queries to decide which data to work with. For other (most) applications, DA SQL will simply come in handy to be used internally for how your client code queries for data. And finally some data access mechanisms, such as DA LINQ, can use DA SQL under the hood, without you, the developer, ever being exposed to the generated SQL.

In general, DA SQL adds more flexibility to how your client applications can query for data from your servers — and now, it can be used against DA server created with Delphi, as well

Delphi 10.4 "Sydney"

The second new feature in build .1481 that I want to call out briefly today is the newly added official support for the just-released new update to Delphi (and C++Builder) itself: Version 10.4, or "Sydney".

Data Abstract, Remoting SDK and also Hydra (which was updated to Stable Channel version, today) now integrate and work with Delphi 10.4 out of the box, without a manual recompile. With that, our "for Delphi" products now cover over two decades of Delphi versions with a single codebase, from Delphi 7 all the way through to the latest.

Updated free 30-day trial versions of all three products are also available.