samdruk
Check me out on the web at my blog.
Software Engineer, Michigan, MIT, Robotics at SSL-LOOP, Zortech, Cognex, Cygnus, LinkExchange, Microsoft bCentral, Microsoft Jade Studios, Microsoft WinFS, SQL Server, Data Programmability
Expert to Expert: Brian Beckman and Sam Druker - Deep Entity Framework
Dec 16, 2007 at 2:35 AMPass. I'm already overdue for a dunk tank (sorry Jenn).
Expert to Expert: Brian Beckman and Sam Druker - Deep Entity Framework
Dec 16, 2007 at 2:24 AMIn my own view of the "state of the art" app model BL is specific to a tier [Don't ask me about tier-splitting yet--I'm an engineer not a scientist]. Yes code-behind for mid-tier or client logic but your sprocs are still in your data-tier with that dev environnment. Architecturally speaking, I do anticipate being able to write "BL" type sprocs in the database with Entities. Of course, you can write sprocs inside SQL Server using VB or C# today. For certain scenarios that may be a good head start.
In my experience I find schemes for"traveling code" or "code shipping" a big red flag. Distributed deployment is hard enough; adding a self-modifying aspect can get crazy pretty quick.
Sprocs are the "material in the room", as Brian would say. But I can imagine a world where the queries are shipped over directly as canonical trees. This would be like the very first SQL QP which was a new front end basically grafted into the existing QUEL pipeline. The EF architecture was inspired by that example in fact. The EF design was faced with needing to support multiple query syntaxes from day 1.
On the serialization format, note that TDS takes care of all that, just like in pre-EF ADO.NET, ODBC, JDBC, and OLEDB. Whether or not you get XML scalar types.
Small soapox moment, diving into the opening:
Of course "select c as customers where c.active" is itself not a func. It's an expression. Further, it's an expression whose evaluation can be manipulated in very interesting ways by an optimizer. Even better, it can also be composed while maintaining that set of properties. And finally, the monad itself can be treated by the language as a unit of remotability. All 4 of those things are very very good for high-performance, low-obscurity database programming.
Expert to Expert: Brian Beckman and Sam Druker - Deep Entity Framework
Dec 16, 2007 at 2:01 AMThanks, me too.
The EF engine and generators have hooks to enable common validation scenarios. I can't speak to the sproc renaming off the top of my head--let me see if I can get Pablo or Tim or Steve to stop by for an answer.
One nice side effect of doing a bunch of metadata plumbing under the hood is that we can start to regain some of the flexibility with conn strs.
Expert to Expert: Brian Beckman and Sam Druker - Deep Entity Framework
Dec 16, 2007 at 1:53 AMThe EF v1 doesn't do multiple data sources. Fundamentally, it does "reshape" data in a queryable and updateable way, based on the rich model described in the EDM and a set of mapping corresondences. Our core scenarios are around core data access/independence. We will bring the reshaping capability to "disconnected" (don't want to confuse with "offline") programming ala DataSet soon (in a release to be named later, barring acts of force majeure, etc, etc.).
That's an important step along the way to compositing data from multiple sources in the way you describe. Then we'd have the part of the problems that let's a programmer explain what span of data they want, when it shoudl be refreshed, how to push changes, etc. Multiple sources gets complicated with further details like cache coherence and isolation levels and transactions and all that, um, database stuff.
Pablo Castro, Britt Johnston, Michael Pizzo: ADO.NET Entity Framework - One Year Later
Aug 29, 2007 at 11:08 PMPeter Spiro: Building great databases. Making great teams. Leadership. WinFS. The power of having fu
Aug 10, 2007 at 12:59 PMErik Meijer: Volta - Wrapping the Cloud with .NET - Part 1
Jul 11, 2007 at 12:55 PMErik has also been a technical contributor to Microsoft's XML runtimes and tools, the ADO.NET Entity Data Model, LINQ (in a variety of forms), the CLR, CLR compiler labs and of course SQL Server.
</shameless plug for Erik>
Yes, I'm biased.
Polita Paulus - BLINQ
Sep 10, 2006 at 1:02 PMLINQ queries against SQL Server databases do get translated into SQL statements that get sent to the server itself for processing. Of course, SQL Server does optimize those queries like all others; that is you don't have to wrap SQL statements into a stored procedure in order to optimize a query. Stored procedures are good for wrapping up more complex computation than query and view management (updates, especially) of course.
Brian Beckman: Monads, Monoids, and Mort
Sep 10, 2006 at 12:56 PMOne minor correction: Brian is not in Microsoft Research anymore. Brian and his team (including Erik Meijer) work in the Data Programmability team in SQL Server (as do I, for that matter) and do a lot of deeply collaborative development with the VB product team.
Brian knows as well as anyone how high a bar it would be to be the "best programming language". I'm happy he's trying that hard, and I think it will be pretty interesting to see how far it can go. As for C#/VB not being different, let me say they absolutely can be. Sharing a run-time does not mean they are limited to the same semantics and feature sets across the board (as programming languges). Consider the recent IronPython or PHP.NET releases--they use the same runtime as C# but have very different features (and in different dimensions you might consider one or the other more advanced). I can't quite remember if the Haskell implementation in .NET Brian was playing with last year was publically available or not, but it falls into the same camp.
Jim Gray - A talk with THE SQL Guru and Architect
Sep 28, 2005 at 8:51 PMSee more comments…