Friday, May 16, 2008

Jon Udell Interviews Quintin Clark on WinFS's Downstream Effects: Entity Framework and SQL Server

An assignment with the WinFS team was a career-killer for many Microsoft folks, but Quintin Clark lived to tell the tale in his 54-minute Channel10 interview with Jon Udell: Where is WinFS now? Quintin's now a general manager of the SQL Server team.

WinFS and the ADO.NET Entity Framework

Quintin says the following (in part) about WinFS and ADO.NET Entity Framework (EF):

The WinFS APIs were a precursor to a more generalized set of object/relational APIs, which is now shipping as what we call entity framework in ADO.NET.

What's getting delivered as part of VS 2008 SP1 is an expression of that, which allows you to describe your business objects in an abstract way, using a fairly generalized entity/relationship model. In fact we got best paper at SIGMOD last year on the model, it's a very good piece of work.

So you describe your business entities in that way, with a particular formal language...

The true precursor to EF (and LINQ to SQL) was ObjectSpaces, which surfaced as a technical preview named "Orca" (for Object/relational component architecture?) at the 2003 PDC, as I recall the year. An Orca beta was scheduled for Whidbey (Visual Studio 2003 beta) but canceled, and included in Orcas (Visual Studio 2005) beta 1 but removed from beta 2 and later. Finally ObjectSpaces was subsumed by the "black hole of Object Spaces" to the chagrin of its management team, primarily Luca Bolognese and Matt Warren.

I discussed in my Matt Warren's "The Origin of LINQ to SQL" post of May 31, 2007 Matt's outspoken The Origin of LINQ to SQL post of May 31, 2007, as well as architect Michael Pizzo's long comment to my Defining the Direction of LINQ to Entities/EDM post of May 29, 2007, part of which reads as follows:

It’s an undeniable fact that Microsoft has fumbled the ball repeatedly when it comes to delivering an O/R solution. The biggest reason we didn’t ship ObjectSpaces was not technical, but rather a lack of recognition at a management level of the importance of providing such a solution. The only way for ObjectSpaces to gain traction was by aligning with something bigger (i.e., MBF or WinFS). The biggest thing that’s changed (thanks largely to the success of Hibernate) is that management now gets the importance of a good O/R solution. The support for LINQ, LINQ to SQL, and the Entity Framework at the executive level is what ObjectSpaces never enjoyed, and what gives me confidence that we will finally shed the albatross that’s been hanging around our neck since .NET Framework 1.0.

I also included a link to Dare Obasanjo's Surviving WinFS: How LINQ to SQL Came to Be post of the same date.

My lengthy June 26, 2006 Microsoft Bites the Bullet: WinFS Bites the Dust post delivers the grisly details of the deaths of WinFS, ObjectSpaces, Project Green, and the MBF.

SQL Server 2008's FileStream and HierarchyID Datatypes

Quintin says this about SQL Server 2008's filestream datatype, inter alia:

That approach was so good that we decided to generalize it for SQL Server 2008, as a feature called filestream. It's basically a new kind of blob support for the database. You configure a column for filestream, you can take a file and insert it as a record, you get back a file handle, you can stream things into that file handle. You can do queries and get back file handles, and get streaming API-level NTFS performance on the files you put in there.

and the HierarchyID datatype:

So hierarchical ID is a column type that teaches the optimizer about hierarchy, about path, so you can do queries that find all the things contained within this part of the path.

So we have that feature also shipping in 2008, and there are all sorts of different uses for it. For example, people use it for compliance. They'll create a hierarchy of different confidentialities and compliance levels. This thing is confidential, which is a superset of things that are executive-eyes-only. Hierarchies like that are just out there in the world.

The filestream and HierarchyID datatypes will be much more useful when the SQL Server team incorporates them in the same namespace, as Quintin promises for SQL Server vNext.

Update 3/16/2008: Tim Anderson's WinFS reborn: SQL Server as a file system of May 16, 2008 contains this interesting tidbit:

Put [filestream and HierarchicalID in the same namespace] together with the work Microsoft is doing on synchronization, and you get offline capability too - something more robust than offline files in Vista. Clark says SharePoint will also benefit from SQL Server’s file system features.

Note that Live Mesh does some of this too. I guess SQL Server is there in the Live Mesh back end, but it strikes me Microsoft is at risk of developing too many ways to do the same thing.

Tim had the foresight in his Tech Ed reflections post of November 8, 2007 to make the connection between SQL Server 2008's filestream datatype and SharePoint performance, as well as to recognize early on the potential of ADO.NET Data Services.


Frans Bouma said...

Isn't FileStream just the same as Oracle's good old BFile type? So i.o.w.: nothing new?

--rj said...


It looks like to BFile to me but its performance seems to be better than what I recall for BFile in 10.something.