Board index » delphi » Re: About Entity-Relationship Diagram in BDS 2007

Re: About Entity-Relationship Diagram in BDS 2007


2006-05-19 11:06:45 PM
delphi276
Quote
You keep saying that, without any apparent justification. Can you give
an example of what you mean?
Most deadly one: objects -for which you don't have the source- that are
streamed and placed in a blob/clob, ala bitmap, except it is not using a
standard format - and why should it be, the OPF application is perfectly
happy with it, it is super-convenient and super-fast for it to store
things that way...
Listed other variations in another post in this thread.
Eric
 
 

Re: About Entity-Relationship Diagram in BDS 2007

Eric Grange writes:
Quote
Most deadly one: objects -for which you don't have the source- that
are streamed and placed in a blob/clob, ala bitmap, except it is not
using a standard format - and why should it be, the OPF application
is perfectly happy with it, it is super-convenient and super-fast for
it to store things that way...
In particular I seem to recall InstantObjects works or worked this
way. I don't know if it is changed since I looked at it.
--
Craig Stuntz [TeamB] ?Vertex Systems Corp. ?Columbus, OH
Delphi/InterBase Weblog : blogs.teamb.com/craigstuntz
Useful articles about InterBase development:
blogs.teamb.com/craigstuntz/category/21.aspx
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Huh? How would you do that using Eric's example?
Which example? His "intermediate values in expressions or evaluations" comment?
Quote
(I presume by "normal debugging windows" you in fact
mean "debugging windows other than the CPU window.")
Along with virtually everyone else who uses Delphi, yes, that is what I mean :-)
Quote
Yes, I could shut down, re-write, re-compile, and re-run,
but now I have lost my flow and lost the context
of the bug, which may or may not be easy to recreate.
Really? You don't find that you do that all the time anyway?
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Surprising question, maybe you haven't used the de{*word*81} recently?
Actually, not the Delphi 7 one. But I imagine your question is rhetorical.
Quote
And don't come telling me that good design shouldn't involve "dynamic"
methods
There is no longer any great value in dynamic methods, is there? Not that I was
going to mention them, anyway. I am afraid I don't quite understand the point of
your example either, or what you meant by the "too cheap" comment.
Quote
You mean to say that you never have any crash or bug in your
applications at runtime because all the possible failures are convered
by unit tests?
Eric, why do you persist in making stupid remarks like this? It is extremely
irritating and one reason why people often don't take you seriously.
If I had wanted to make such a ridiculous claim I'd have done so. I clearly
did nothing of the sort.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Speaking of which I'd be interested to see code you write.
Plenty of it around.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
it's just another methodology amongst the others
Calling it a methodology is inaccurate IMO. It is clearly superior to non-OO
techniques in procedural languages.
Quote
by repeating this you don't go any further
I have to keep repeating it because you are not grasping a fundamental point.
This is not something over which there can be disagreement - it is fundamental
computer science.
Quote
perhaps you would be quite surprised to know that I am somewhat
familiar with Martin Fowler, Scott Ambler (etc.) papers :)
Yes, I would.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Much of the so-called "impedance mismatch," I think,
comes from the fact that OO systems frequently don't address (and
certailny almost never mandate) things which RDBMSs define / conform to
quite formally, like concurrency control and set theory.
Concurrency control is a general issue, not particularly related to OO or
RDBMSs. It is a problem all over the place.
Set theory is an issue in the sense that it is why there is the "impedance
mismatch", since that is why there are the structures (data and logical) there
are in RDBMSs.
Quote
In short, I dispute the implication that RDBMSs are what we have to
put up with just because nobody has managed to write a functional
OODBMS.
I think they are what we have to put up with until we no longer have to rely on
slow external storage for our persistent data. I am not convinced about OODBMSs
either. If memory was non-volatile and sufficiently large, I think we would use
other techniques again.
Quote
it's going to require some far-reaching changes to OO frameworks to
support concurrency
Eh? As I understand it, that is an issue no matter whether you use an RDBMS or
not, isn't it? And an RDBMS doesn't precisely solve all issues to do with that
either.
Quote
That said, anyone who wants real concurrency control and massive
scalability today is using an RDBMS no matter what their code looks
like.
OPFs do not preclude that possibility - they almost certainly rely on the being
an RDBMS as the backend, otherwise there would be little value in the OPF.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
No, it is not flawed
Yes, Eric it **is** a flawed argument. If someone cuts their finger with a saw
whilst cutting a piece of wood, it does not mean that a saw is no good for
cutting wood.
Quote
Even in a moderately flawed OPF, the data isn't guaranteed to be
accessible anymore.
You keep making this claim, without saying how such a thing is possible. I've
certainly always been able to get at data, and I have certainly used badly flawed
OPFs. Try explaining what you mean, instead of repeating the same statement.
Quote
Actually, even in a "perfect" OPF, the data isn't
guaranteed to be accessible to the outside, and for that to happen, they
merely have to be using a proprietary data repository, and not be
providing the tools to migrate it to a standard repository.
What on earth are you talking about? That is a sentence devoid of any meaning I
can make out.
Quote
Besides you're (once again) trying to misrepresent what I said, either
through malice or ignorance.
Hah, you're a fine one to talk about misrepresentation. You can not let a
discussion go by without leaping hugely to incorrect conclusions.
Quote
My point isn't that you should not use an OPF, but that you should not
design the data structures from the OPF, but instead design the data
first, and have the OPF and OO layers access that, as a way to
*guarantee* the accessibility of the data.
You can do that with some OPFs, if they let you customise the data mapper layer
sufficiently. I'd argue that you should only do that when you are accessing
an existing database. Otherwise it is better to design your objects first, since
they are the reflection of your problem domain.
I don't understand what you mean about guaranteeing the accessibility of the
data. How could that fail to be the case?
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Brilliant idea! Just load your complete database into memory and it
will speed up things tremendously.
There is no need to be sarcastic, since if such a thing was possible it
obviously *would* speed up things considerably.
Do you not understand why there are such things as databases in the first place?
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
Most deadly one: objects -for which you don't have the source- that are
streamed and placed in a blob/clob
Yes, that is a dumb-arse thing to do. I know of one OPF that does that (worse, it
does it with lists of objects). I also know of one RDBMS vendor that has done
that in the past.
Quote
Listed other variations in another post in this thread.
Already answered
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
In particular I seem to recall InstantObjects works or worked this
way. I don't know if it is changed since I looked at it.
AFAIK it still does. it is why I never used it - that was obviously such a
problem the evaluation went no further.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Jim Cooper writes:
Quote
>Huh? How would you do that using Eric's example?

Which example? His "intermediate values in expressions or
evaluations" comment?
Yes.
Quote
>(I presume by "normal debugging windows" you in fact
>mean "debugging windows other than the CPU window.")

Along with virtually everyone else who uses Delphi, yes, that is what
I mean :-)
ITSM that "virtually everyone else who uses Delphi doesn't even use
the call stack, to judge from the quizzical replies I get when I ask
people to post the call stacks from problems they're having. The CPU
window is perhaps the most terse of all of the power tools, but I'd
hate to have a version of Delphi which included only what the "average"
user needed.
Quote
>Yes, I could shut down, re-write, re-compile, and re-run,
>but now I have lost my flow and lost the context
>of the bug, which may or may not be easy to recreate.

Really? You don't find that you do that all the time anyway?
Not half as often as I would have to without the ability to put in
breakpoints midline, reset the EIP, etc.
--
Craig Stuntz [TeamB] ?Vertex Systems Corp. ?Columbus, OH
Delphi/InterBase Weblog : blogs.teamb.com/craigstuntz
How to ask questions the smart way:
www.catb.org/~esr/faqs/smart-questions.html
 

Re: About Entity-Relationship Diagram in BDS 2007

Jim Cooper writes:
Quote
Concurrency control is a general issue, not particularly related to
OO or RDBMSs. It is a problem all over the place.
Yes, of course. What is distinct about RDBMSs is that they* are based,
from the ground up, on a theory-grounded approach to provable
concurrency. They are designed to make it difficult to implement
systems which can not scale. With OO frameworks, it seems to be that at
best you get some features which are useful when you want to think
about concurrency, but you are never required to use them. When you do
choose to use them you are typically required to connect a lot of
plumbing (think XA) and approach your application in a completely
different way than you would do hi world.
* Yes, I am excluding MySQL and the like. You get the point!
Quote
Set theory is an issue in the sense that it is why there is the
"impedance mismatch", since that is why there are the structures
(data and logical) there are in RDBMSs.
Again, one of the core issues here is that while anyone who designs a
relational database can be expected to be aware of normal forms and
Codd's principles, there is no widely-agreed upon, theoretical
foundation for OO design. Yes, there are a lot of bad database designs
in the world, and any tool can be misused. But you can chalk that up to
simple ignorance. If you don't understand relational principles, you
don't understand the tool.
With OO systems, OTOH, you can not call someone ignorant if they've read
the GoF but not Meyer. it is not fair to do so because not everyone
agrees with Meyer (or the GoF). And even if you do, their output can
best be described as "well-reasoned," not grounded in theory and
provable.
Keep in mind, I am a fan of OO. I am not trying to give it any
disrespect or suggest that we all revert to procedural designs. But it
has substantial, longstanding shortcomings which RDBMSs address very
well. Why hasn't OO learned more from RDBMSs? To me it is in no small
part because of the silly notion that OO is "better" than relational
architectures, and hence couldn't possibly learn anything from them.
Quote
>In short, I dispute the implication that RDBMSs are what we have to
>put up with just because nobody has managed to write a functional
>OODBMS.

I think they are what we have to put up with until we no longer have
to rely on slow external storage for our persistent data. I am not
convinced about OODBMSs either. If memory was non-volatile and
sufficiently large, I think we would use other techniques again.
??? It already is. NAS arrays can give you persistent storage at RAM
speed. The day you're waiting for came years ago. It hasn't made
OODBMSs any better.
Quote
>it's going to require some far-reaching changes to OO frameworks to
>support concurrency

Eh? As I understand it, that is an issue no matter whether you use an
RDBMS or not, isn't it?
Concurrency is an issue with or without an RDBMS, true, but:
Quote
And an RDBMS doesn't precisely solve all
issues to do with that either.
It's not a magic bullet (what is?) but it gives you a proven set of
tools you can use to solve the problem, and OO frameworks, for the most
part, don't.
Quote
>That said, anyone who wants real concurrency control and massive
>scalability today is using an RDBMS no matter what their code looks
>like.

OPFs do not preclude that possibility - they almost certainly rely on
the being an RDBMS as the backend, otherwise there would be little
value in the OPF.
Again, I am a fan of this stuff -- you've no doubt seen me plugging
ECO. But I don't pretend that the DB isn't there, which is the point of
my initional reply in this thread.
--
Craig Stuntz [TeamB] ?Vertex Systems Corp. ?Columbus, OH
Delphi/InterBase Weblog : blogs.teamb.com/craigstuntz
Everything You Need to Know About InterBase Character Sets:
blogs.teamb.com/craigstuntz/articles/403.aspx
 

Re: About Entity-Relationship Diagram in BDS 2007

Quote
What is distinct about RDBMSs is that they* are based,
from the ground up, on a theory-grounded approach to provable
concurrency.
Hmm, not what I'd have said they are based on myself, although they do
implement some form of concurrency control, as far as the server ap itself is
concerned.
Quote
They are designed to make it difficult to implement
systems which can not scale.
Oooh, highly contentious claim :-) Where did you get that from?
Quote
With OO frameworks
Hmm. Is not the VCL an OO framework? Are you specifically talking about OPFs
here? There is more to OO than OPFs, which are only needed if you want to store
objects.
Quote
there is no widely-agreed upon, theoretical
foundation for OO design.
And that is a bad thing because...? There is no widely-agreed upon, theoretical
foundation for procedural languages in general.
Quote
If you don't understand relational principles, you
don't understand the tool.

With OO systems, OTOH, you can not call someone ignorant if they've read
the GoF but not Meyer.
On the other hand, there are widely-agreed principles on what OO is and how it
can be used. Comparing learning relational principles with reading 2 books is
not comparing the same type of thing at all.
And if you want to read something by someone who doesn't understand basic
principles, read anything Date on OO.
Quote
But it has substantial, longstanding shortcomings which RDBMSs address very
well.
And RDBMSs have substantial longstanding shortcomings that OO addresses. We are
comparing things that are not particularly similar, and are intended to address
different problems.
Quote
??? It already is. NAS arrays can give you persistent storage at RAM
speed. The day you're waiting for came years ago.
I would have to disagree with you on that. NAS arrays work at nowhere near the
same speed on my network. Although I'd like one at home.
Quote
It hasn't made OODBMSs any better.
Did you read what I said? I don't put any faith in OODBMSs either.
Quote
but it gives you a proven set of
tools you can use to solve the problem
It does nothing of the sort. It solves one aspect of concurrency issues, that's
all. You always have to do extra work yourself.
And since OPFs generally use RDBMSs for storage, they can take advantage of what
the RDBMS offers in this regard. I think this is a red herring.
Quote
But I don't pretend that the DB isn't there, which is the point of
my initional reply in this thread.
The whole point of abstraction is that you can pretend things aren't there most
of the time. Nobody is suggesting you should pretend the database is not there
all the time, but the more you can do that the better.
Cheers,
Jim Cooper
_____________________________________________
Jim Cooper XXXX@XXXXX.COM
Skype : jim.cooper
Tabdee Ltd www.tabdee.ltd.uk
TurboSync - Connecting Delphi to your Palm
_____________________________________________
 

Re: About Entity-Relationship Diagram in BDS 2007

Jim Cooper writes:
Quote
>What is distinct about RDBMSs is that they* are based,
>from the ground up, on a theory-grounded approach to provable
>concurrency.

Hmm, not what I'd have said they are based on myself, although
they do implement some form of concurrency control, as far as the
server ap itself is concerned.
Well, then, go back and read the research on this. There are a lot of
old papers simply packed with information useful to anyone doing this
sort of work. They're theoretically solid and haven't really aged.
Here's a great place to start:
research.microsoft.com/pubs/ccontrol/
Quote
>They are designed to make it difficult to implement
>systems which can not scale.

Oooh, highly contentious claim :-) Where did you get that from?
The theoretical underpinnings of the design of database servers and
how they approach concurrency. Papers by D.P. Reed, Jim Grey, Philip
Bernstein. What I write above is no hyperbole; whether or not the
systems are in fact successful at their aim they are quite literally
designed around these principles. This is *not* true of OO frameworks
in general.
Quote
>With OO frameworks

Hmm. Is not the VCL an OO framework?
Yes, it is, and...
Quote
Are you specifically talking about OPFs here
No, not specifically.
Quote
>there is no widely-agreed upon, theoretical
>foundation for OO design.

And that is a bad thing because...? There is no widely-agreed upon,
theoretical foundation for procedural languages in general.
Not for all languages in general, but yes, for some in particular.
Lisp is based on the lambda calculus, for example.
The reason it is a problem to have structures not based on a solid
theoretical foundation is that it becomes difficult to impossible to do
things which are provable.
Quote
On the other hand, there are widely-agreed principles on what OO is
and how it can be used. Comparing learning relational principles with
reading 2 books is not comparing the same type of thing at all.
I refer you to "The Quarks of Object Oriented Development," by Deborah
J. Armstrong in the February 2006 issue of the JACM, a comprehensive
(and peer-reviewed) attempt to establish such a taxonomy -- from a wide
ranging survey of computing literature, not just people she happens to
know or what people say on certain newsgroups. There is, frankly,
precious little which is universally accepted, and *no* standard
notation for it. *None* of it deals with concurrency, and only
passingly does it deal with data structures.
Quote
>But it has substantial, longstanding shortcomings which RDBMSs
>address very well.

And RDBMSs have substantial longstanding shortcomings that OO
addresses.
Oh, I certainly agree with that, which is why I use both. I don't
claim that one is just a relic which will be obsolesced by the other.
Quote
We are comparing things that are not particularly similar,
and are intended to address different problems.
Again, yes, which is why the claim that one makes paying attention to
the other, which started this discussion, is so absurd.
Quote
>??? It already is. NAS arrays can give you persistent storage at RAM
>speed. The day you're waiting for came years ago.

I would have to disagree with you on that. NAS arrays work at nowhere
near the same speed on my network. Although I'd like one at home.
I said they can, not that yours will. But pick whichever technology
you like -- in-memory databases or whatever. The notion that HDDs are
why we need RDBMSs is based around the fallacy that they're merely a
storage system.
Quote
>It hasn't made OODBMSs any better.

Did you read what I said? I don't put any faith in OODBMSs either.
I note that, but again, I am talking about the notion that the only
problem we're trying to solve is persistence, which I don't agree with.
Quote
>but it gives you a proven set of
>tools you can use to solve the problem

It does nothing of the sort. It solves one aspect of concurrency
issues, that is all.
Your second sentence there contradicts the first, but is not much
closer to the mark. Read the first link in this post. Yes, it is long,
but worth it.
Quote
You always have to do extra work yourself.
Of course. Knowing calculus doesn't solve integrals for you, it just
makes it *possible.*
Quote
And since OPFs generally use RDBMSs for storage, they can take
advantage of what the RDBMS offers in this regard.
Again, we're getting back to the beginning: You can not just ignore the
database. It has features you need.
--
Craig Stuntz [TeamB] ?Vertex Systems Corp. ?Columbus, OH
Delphi/InterBase Weblog : blogs.teamb.com/craigstuntz
Useful articles about InterBase development:
blogs.teamb.com/craigstuntz/category/21.aspx