Reply to Re: Database abstraction layers

Your name:

Reply:


Posted by Kenneth Downs on 05/14/06 19:54

Colin McKinnon wrote:

>
> In my search I came across a couple of systems which seemed to come close
> to what I wanted, but both used a static description of the data structure
> which was maintained independently of the DBMS - yes that causes problems.
>

I would argue from experience that it solves far more problems than it
causes.

If we pull back to the highest architectural view, you have these two big
things called "the db server" and "the application" (wherein the
application may be further divided into web server + browser etc).

The application must know the structure of the tables or it can't do
anything. If you go the non-abstract route, you code directly to the
tables, and you have to change a lot of code when you change tables. If
you go the abstract route and have libraries that perform standard
functions, then they must be provided with a data dictionary that tells
them about the tables.

So if we take it that database abstraction implies a data dictionary, the
question becomes, where is the data dictionary? It can either come out of
the server as a result of scripts that have built the database (read:
INFORMATION_SCHEMA), or it can be outside the server and used to build the
database.

If you locate the data dictionary outside the server, you can in fact
automate every aspect of the software cycle. Database creation, database
updates, deployment to remote servers, application abstraction,
documentation, testing, platform independence and change management all
benefit from the existence of the dictionary, since they all need it.

All of this is database abstraction taken to its logical conclusion.
Abstracting database access in the application is easy enough, there are
countless classes and frameworks out there that seek to do it, but it does
nothing for the entire software cycle. If you wish to abstract the entire
cycle and gain the benefits from soup to nuts and through successive
iterations than you need a dictionary that is outside both the server and
the application, and which is used to generate components for both, and
which governs both.



--
Kenneth Downs
Secure Data Software, Inc.
(Ken)nneth@(Sec)ure(Dat)a(.com)

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация