comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Windows Ada database support.
Date: Mon, 6 Dec 2004 21:49:52 +0100
Date: 2004-12-06T21:49:52+01:00	[thread overview]
Message-ID: <rxz54uvfmxv7.1uvuujeserkhx$.dlg@40tude.net> (raw)
In-Reply-To: K_0td.8027$l%5.510635@news20.bellglobal.com

On Mon, 06 Dec 2004 12:52:40 -0500, Warren W. Gay VE3WWG wrote:

> Dmitry A. Kazakov wrote:
>> On Mon, 06 Dec 2004 09:48:09 -0500, Warren W. Gay VE3WWG wrote:
> ...
>>>Keep in mind that you cannot use a relational database without
>>>using SQL (at least no examples come to my mind). So if you
>>>don't like SQL, then you have to either forget relational,
>>>or build a higher level "protocol" that compiles/translates
>>>to SQL underneath.
>> 
>> Yes, this is exactly what I meant. In short, Ada bindings should have
>> Create_Table (...) instead of Execute ("CREATE TABLE ..."). Let SQL be
>> perfect, firmly standardized, validated etc. Even so to have a language
>> within another language is a bad idea.
> 
> This problem is virtually unsolvable with the existing products

(SQL products)

> that people out there use. Some database products (PostgreSQL
> for example) promote the use of Object IDs (basically Row IDs).
> Still others don't support the concept at all (MySQL). A grey
> area exists in a 3rd area (like Informix), which allows you to
> use them at your own peril (Row IDs are unique, if you keep
> within certain database design restrictions).

I think that this is a shortcoming of the very concept of a relational
view. Relation is not an array. Period. So IF it should be
Ada.Database.Relational, then there will be no such think as row ID. [ But
it is a good sign. Database vendors start to conceive shortcomings of the
existing models. This will erode SQL dominance. ]

Also we should distinguish two cases:

A. Some Ada application stores its data in a database. The way the data are
organized there is free.

B. Accessing existing (but unknown at design time) data base. The data
structure is fixed and the application must adapt to it.

A is much easier than B. Not everybody needs B. Further B is often bound to
some concrete data base, in which case data base specific bindings make
much sense. So we could ignore B for a while. At least until it will be
clear how to provide at least A.

> Related to this same issue is how to identify rows that lack
> a natural primary key. Some databases support an identity
> type for the purpose (Sybase), while others use sequences.
> Still others like MySQL use some weird idea of an auto
> increment integer field (I am too lazy to look up the
> specifics for this, but this is documented in the APQ
> manual).
> 
> Here's another good one: Some databases allow you to declare
> a VARCHAR(256). Others are restricted to VARCHAR(255), and you
> must switch to a different type (TEXT I think), if you need
> longer fields.
> 
> Some support boolean types, and others do not. Some support
> arrays, others do not. If they both support arrays, they
> are guaranteed to work with different rules and syntax.
> 
> There seems to be virtually no agreement on how blobs are
> handled and managed, between the different products.

This is the case B. I think that it could still be possible to solve it in
an OO way. All database types should be derived from one base. Factory can
be used to create values "like in the column". Differences between VARCHAR,
TEXT, LONGCHAR etc are uninteresting for the application. It should have
some string type derived from the base. That may have constrained subtypes
or derived types according to the database constraints.

In general I do not think that primitive data types are the greatest
problem. The problem is that the semantics of "what and how" slips away. It
is too low level.

> The list of incompatibilities and differences are many
> more. For example, there are differences in the way the
> client libraries work (ability to fetch one row at a time,
> randomly or not (PostgreSQL), must fetch them all into
> client memory for random access, or use one-at-a-time
> sequential access (MySQL), etc.)
> 
> The challenges for a "unified Ada access" layer are so
> numerous, that I consider it unachievable. I took a stab
> at providing a "portable" binding in APQ, but had to
> make various compromises along the way (these are documented
> in the manual).

I think that APQ could become an alternative to ODBC. ODBC tries to swallow
documents and spreadsheets (like Excel), things that are too far from a
"normal" data base.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2004-12-06 20:49 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-24 12:31 Windows Ada database support Mark Doherty
2004-11-24 15:04 ` Marius Amado Alves
2004-11-24 18:35 ` Pascal Obry
2004-11-24 19:17   ` Alex R. Mosteo
2004-11-24 19:30     ` Dmitry A. Kazakov
2004-11-24 22:32       ` Ching Bon Lam
2004-11-25  1:03 ` David Botton
2004-11-25 17:50   ` Warren W. Gay VE3WWG
2004-11-26  9:15     ` Dmitry A. Kazakov
2004-11-26 18:36       ` David Botton
2004-11-27  8:59         ` Dmitry A. Kazakov
2004-11-28  0:46           ` David Botton
2004-11-28  9:51             ` Dmitry A. Kazakov
2004-11-28 10:23               ` Pascal Obry
2004-11-28 11:03                 ` Dmitry A. Kazakov
2004-11-28 14:38                   ` Martin Dowie
2004-11-28 16:51                     ` Marius Amado Alves
2004-11-28 19:50                       ` Martin Dowie
2004-11-28 20:49                       ` Christopher Browne
2004-11-28 17:29                     ` Dmitry A. Kazakov
2004-11-28 17:47                       ` Marius Amado Alves
2004-11-28 18:56                         ` Dmitry A. Kazakov
2004-12-06 14:57                           ` Warren W. Gay VE3WWG
2004-11-28 18:45                   ` Pascal Obry
2004-11-28 19:13                     ` Dmitry A. Kazakov
2004-11-28 20:04                       ` Pascal Obry
2004-11-29  9:04                         ` Dmitry A. Kazakov
2004-11-29 10:07                         ` Adrien Plisson
2004-11-29 11:00                           ` Alex R. Mosteo
2004-11-29 13:12                             ` Frank Piron
2004-12-01 16:19                           ` Pascal Obry
2004-12-02 10:37                             ` Marius Amado Alves
2004-12-02 10:58                               ` Frank Piron
2004-12-03  2:50                               ` John B. Matthews
2004-11-28 20:36                     ` Marius Amado Alves
2004-11-29  1:40                       ` Georg Bauhaus
2004-11-29 10:30                         ` Marius Amado Alves
2004-11-29  1:28       ` Georg Bauhaus
2004-11-29  8:53         ` Dmitry A. Kazakov
2004-11-29 11:09           ` Georg Bauhaus
2004-11-29 12:01             ` Dmitry A. Kazakov
2004-11-29 14:07               ` Georg Bauhaus
2004-11-29 18:04                 ` Dmitry A. Kazakov
2004-11-29 22:05                   ` Georg Bauhaus
2004-11-30 11:00                     ` Dmitry A. Kazakov
2004-11-30 13:46                       ` Ole-Hjalmar Kristensen
2004-11-30 15:04                         ` Dmitry A. Kazakov
2004-11-30 16:09                         ` Georg Bauhaus
2004-11-30 16:07                       ` Georg Bauhaus
2004-11-30 18:52                         ` Dmitry A. Kazakov
2004-11-30 21:10                           ` Georg Bauhaus
2004-12-01  9:11                             ` Dmitry A. Kazakov
2004-11-29 12:56       ` Marius Amado Alves
2004-11-29 13:26         ` Dmitry A. Kazakov
2004-11-29 15:02       ` Frank Piron
2004-11-29 15:58         ` Marius Amado Alves
2004-11-29 18:16         ` Dmitry A. Kazakov
2004-11-30  7:14           ` Frank Piron
2004-12-06 14:48       ` Warren W. Gay VE3WWG
2004-12-06 16:29         ` Dmitry A. Kazakov
2004-12-06 17:52           ` Warren W. Gay VE3WWG
2004-12-06 19:44             ` Georg Bauhaus
2004-12-06 20:49             ` Dmitry A. Kazakov [this message]
2004-12-07  5:16               ` Warren W. Gay VE3WWG
2004-12-07 10:29                 ` Dmitry A. Kazakov
2004-12-07 15:49               ` Georg Bauhaus
2004-12-07 21:29                 ` Dmitry A. Kazakov
2004-12-08  2:24                   ` Georg Bauhaus
2004-12-08  9:05                     ` Dmitry A. Kazakov
2004-12-08 10:03                       ` Ole-Hjalmar Kristensen
2004-12-08 10:56                         ` Dmitry A. Kazakov
2004-12-08 11:19                           ` Marius Amado Alves
2004-12-08 12:51                             ` Frank Piron
2004-12-08 13:43                               ` Dmitry A. Kazakov
2004-12-08 13:41                             ` Dmitry A. Kazakov
2004-12-08 16:09                               ` Georg Bauhaus
2004-12-08 19:46                                 ` Dmitry A. Kazakov
2004-12-09 12:20                                   ` Georg Bauhaus
2004-12-09 12:59                                     ` Dmitry A. Kazakov
2004-12-08 15:58                           ` Georg Bauhaus
2004-12-08 19:43                             ` Dmitry A. Kazakov
2004-12-09 11:58                               ` Georg Bauhaus
2004-12-09 13:27                                 ` Dmitry A. Kazakov
2004-12-09 18:58                                   ` Georg Bauhaus
2004-12-10 10:22                                     ` Dmitry A. Kazakov
2004-12-10 14:28                                       ` Georg Bauhaus
2004-12-10 15:14                                         ` Dmitry A. Kazakov
2004-12-08 15:52                         ` Georg Bauhaus
2004-12-08 20:22                           ` Dmitry A. Kazakov
2004-12-09 12:12                             ` Georg Bauhaus
2004-12-09 12:59                               ` Dmitry A. Kazakov
2004-12-09 18:45                                 ` Georg Bauhaus
2004-12-09 12:22                             ` Ole-Hjalmar Kristensen
2004-12-09 14:03                               ` Dmitry A. Kazakov
2004-12-10 20:47                   ` Simon Wright
2004-11-25  2:18 ` bubble
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox