[AccessD] LINQ

Arthur Fuller artful at rogers.com
Sat Oct 8 18:01:14 CDT 2005


Call me an old-timer if you wish, but I do think this is NOT hot, but rather
an extension that attempts to trap developers in MS-SQL. The late Dr. Codd
fought long and mightily to eradicate the distinctions lying between the
implementations from various vendors. MS is not the only rapist in the park,
as it were. Oracle was first. I do NOT like this direction. First and
foremost, it moves application logic into the app or middle tier rather than
the database itself. I HATE this direction! IMO all logic that CAN reside in
the db SHOULD reside there, and nowhere else. 
To the extent that LINQ encourages logic in the front end, I think that it
is a serious design mistake.
I distinguish this objection from an object to extending T-SQL (PL-SQL,
etc.) with new languages and constructs. But I want them all to work with
all SQL implementations. Otherwise the genius of Dr. Codd will be buried
along with him. How sad.
SQL should IMO work just like the web: adhere to the spec, and flag your
differences in BOLD type so that the user-developers will realize that to
the extent they use your extensions, they violate the protocol.
Personally, I have bought into various Oracle and MS extensions and paid the
price for it every time. All this marketing strategy reminds me of a crack
dealer saying The first hit is free. I hate this direction. I want
vendor-language transparency -- everything I write in MS is guaranteed
portable to Oracle, Postgres, MySQL, ANTs, etc. ... In all directions. I
realize that the self-serving vendors have chosen to capture their
customers, but I hate it. In my ideal world, I specialize in SQL not in
MS-SQL or Oracle or any other flavour you wish. I want every line of code to
work in every implementation, and to the extent that the implementation
fails, then I do not want to use that product. I want the vendors to propose
language extensions and upon agreement by the other vendors, every vendor
can then implement the extensions.
The late Dr. Codd is most often thought of as having invented relational
databases. Historically, he had no part in the creation of the SQL query
language. In fact, he had lots of objections to it (c.f. The Relational
Model for Database Management, Version Two, ISBN 0-201-14192-2; Chapter 23,
Serious Flaws in SQL)
I have examined the objections of Dr. Codd in detail and I am convinced that
he is correct. His disciple Michael Stonebreaker produced a superior query
language, but as in the case of betamax v. vhs, it does not really matter
whether you are correct. 
It may be that the application logic moves to the front end thanks to LINQ.
I hope that this does not happen. I am fine with various languages moving
into the back end and replacing or augmenting T-SQL, but only if they are
portable to other SQL implementations. 
I have been down this road before, and I now name it VENDOR-ENTRAPMENT. I
hate it. I have instead a vision much like the SQL spec in which all vendors
agree to comply with said spec, and any cool extensions they wish to
introduce should be subject to the scrutiny of all other vendors. 
Given the db players in the market, any my particular fragment of said
market, MS-SQL is the best answer. But I do NOT want to trap myself or my
clients into this solution! Everything could change next month or year. I
want a migration from product X to product Y to be painless. To the extent
that the db vendors stifle me in this, I understand their commercial motives
but I hate them nonetheless.
Codd was about universality and transparency. Please, let us try to remember
that. So what does this mean in real terms...
Vendor X cannot introduce extension Y without first proposing it to the
committee, and having it accepted. (Example: the pivot extensions in SQL
2005.) Unless and until all the other major vendors accept this new
extension and its syntax, it shall not be considered part of the SQL spec.
Back to LINQ... to the extent that the application logic moves to the front
end, regardless of the language, I get very nervous. This is NOT the
direction in which I wish to travel. My vision is opposite: all front-end
developers use the same set of back-end sprocs and views and UDFs,
regardless of their chosen UI. In this scenario, I make one code correction
in a sproc and all possible front-ends inherit it automatically.
Why on earth would we choose to do it any other way... I do not get it. This
seems soooo obvious to me. Perhaps I am missing something. I imagine 5
front-ends to my database -- Access, .NET, Excel, ASP and Delphi -- and I do
NOT want each programmer of each of these to re-think and re-write the
logic! Instead I want them to comprehend the sprocs, pass the params
required and test the result, then act accordingly. 
EVERYTHING THE BE CAN DO THE BE SHOULD DO. The front-ends should interrogate
and that is all they should do.
A.


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: October 7, 2005 9:39 AM
To: accessd at databaseadvisors.com
Subject: [AccessD] LINQ

Hi all

This is hot:

http://msdn.microsoft.com/netframework/future/linq/

Note the link to sample code.

/gustav




More information about the AccessD mailing list