Application is out of sync. with the DB
BLS
Killing_Zoe at web.de
Wed Feb 14 02:56:29 PST 2007
Hi Andrei, as promised some ideas to solve the Application is out of
sync. with the DB
Simplified, ORM around a customer table.
Our code :
class CUSTOMER
{
// map the table structure
ulong id;
char[] lastname;
char[] firstname.
// do something
void write()
void del()
void query()
}
Problem -> Tablestructure is out of sync. Added Middle Initial to table
structure.
Instead of mapping the table into concrete data types, I would kike to
suggest to use
memory-mapped files instead;
Due to the fact that you are allways able to query the database system
tables you should be able to
extract all nessesary information. to query, update... the db
Another solution requires that a D compiler and DDL are part ouf your
application.
Uses
if applicationOutOfSync()
generateAdequateCode(), compile2DDL()
LoadCodeAtRuntime()
This will at least solve the compile-time problem <g>
Bjoern
Andrei Alexandrescu (See Website For Email) schrieb:
> BLS wrote:
>
>> Hi Andrei,
>>
>> Andrei Alexandrescu (See Website For Email) schrieb:
>>
>>> Sorry, I'm not sure I understand. My understanding of the mechanism
>>> is the following:
>>>
>>> 1. The app runs a SQL-to-target-language parser to build an idea
>>> about the database.
>>>
>>> 2. The database folk changes the database in any number of ways. This
>>> is not a process that automatically notifies the target language
>>> application.
>>>
>>> 3. The target language application must undergo some change to
>>> accommodate the change in the database.
>>>
>>> I did DB/financial work in 1998. This scenario was a total bitch
>>> because we didn't have small and fast test cases for all logic code
>>> to run when the database changed. Basically it was the customer
>>> (financial analysts) who let us know when something bombed, and they
>>> actually got so used to it that they even weren't pissed anymore.
>>> Andrei
>>
>>
>> I understand and I know about the problem. Due to the fact that this
>> is a serious task, which should not be answered (like before) within a
>> simple statement, and the fact that I am not used to think and argue
>> in english, requires that I have to write down my thoughts in german
>> first and to translate them later. This may take a while, I hope you
>> understand.
>>
>> Allow me a few WHYs
>> WHY a datastore called database has such an influence/impact on
>> consumer applications, f.i. your Software ? I mean a database should be
>> a Black Box ONLY accessable through your application by using a public
>> key in the sense of (PGP)... Your Application should master the
>> database and not vice versa.
>>
>> Since about 24 years I am in the database business and I have seen
>> only one implemantation which keeps you away from this kind of
>> trouble, let me quote /
>> Suneido has an integrated client-server relational database. The
>> database is accessed via a language which includes administration
>> requests and update operations as well as actual queries. The query
>> language is based on the relational algebra language in An
>> Introduction to Database Systems by C.J.Date.
>> /
>>
>> D is young and refreshing: So WHY not implementing this kind of DB
>> System in D ?
>>
>> Since I know that you are very busy I hesitate to offer you a this
>> link but I think you will find some very interesting information
>> worth spending a few minutes...
>> http://www.suneido.com/index.php?option=com_content&task=view&id=49&Itemid=1
>>
>>
>> Further. a big step
>> I could imagine that it could be a matter of interest to port the new
>> MINIX kernel into D having a DB system instead of "journaling file
>> system" (Beside, still wonder why this kind of filesys. is not
>> allready reality) Why not doing that in D ? This is indeed a vision
>> and as our old german chanceler "Helmut Schmidt" says : People having
>> visions should see a doctor really quick.
>
>
> I've seen Tanenbaum talking about Minix. It's a jewel; the kernel is
> only 4000 lines of code, and everything else is modularly implementable
> in user space. Writing Minix's kernel in D would definitely be an
> interesting D project.
>
>
> Andrei
More information about the Digitalmars-d
mailing list