On Saturday, 24 February 2018 at 18:56:23 UTC, Denis F wrote:
On Saturday, 24 February 2018 at 05:45:45 UTC, rikki cattermole wrote:
There is plenty of desire to build a generalized SQL interface for Phobos.

But somebody needs to do it and it won't be all that much fun to do.

I want to dwell on this.

It seems to me that this is a common misconception that it is possible to create a good universal tool for accessing the database in place of the many existing ones.

SQL is something like BASIC from the 70-80s: there is no single standard, there are many dialects. And the differences are both syntactic and deep, for example, Postgres and Oracle differently interpret the ANSI standard concerning transactions. The same applies to the connection layer: some of the databases allow you to organize a gradual download of the results, some - feedback in the form of something like "events", etc. Also, Postgres quarantiees that result of query will be immutable and this is very useful, but some one another DB maybe not.

At best, such a tool will be suitable for simple trivial things.

On the other hand, needing for this is also not obvious - databases in real projects isn't switched usually every week/month because they are not interchangeable, except for some very simple cases. Usually RDBMS engine should be elected based on your requiriments before you start to use it.


I agree that the differences in both the client interface and the underlying SQL support are complicated issues. However, it seems pretty clear that languages have some level of standardized db interface have benefited enormously in terms of adoption for building real word applications (JDBC for instance). I think it is true people don't switch databases that much, but having a standard interface (especially one that is easy to use) that covers the most common uses cases does make the use of the platform itself that much more approachable.

Some of the differences can be hidden internally for the basic use case (such as gradual downloads) and optionally available as a introspective capability when the underlying driver supports it for more advanced usage. The goal is to expose as much capability without overly complicating the interface. This is easier to do now with modern abstractions then it was with ODBC in the 90's.

It would be good, however, to keep track of the specific problem areas that you mentioned to ensure that they are addressed well.

If one thing is clear from this thread, documentation is critical. I'm also aware that vibed support, for the databases that can most readily support it, is also a high priority.

erik

Reply via email to