Jamie Thomson’s SQL Data Services and Entity-Attribute-Value models post takes issue with Jeffrey Schwartz’s question and Niraj Nagrani’s answer in Jeff’s UPDATED: Microsoft Exec Explains SDS About-Face article for Visual Studio Magazine.
Q. Are you basically not going to be offering SDS with the EAV tables any more?
A. We are looking into our future roadmap to make sure that Astoria [ADO.NET Data Services] can be leveraged on top of SDS and Entity Data Model continues to exist, and we will continue to provide for that through Astoria. We will continue to work with the Astoria framework and figure out how SDS can support that.
Obviously, the answer was to a question that appears not to have been asked. I can’t think of any reason that relational SDS couldn’t support the server-side pieces of SQL Server Data Services (Astoria) v1.
Firstly, whilst the current incarnation of SDS is (underneath the ACE model abstraction) built upon an EAV model (which I think is what the interviewer was alluding to) I don’t believe its true to say that the ACE model with which a user interacts is an EAV model in itself.
Secondly, it is absolutely not the case that it won’t be possible to host EAV models on the future incarnation of SDS. That version of SDS will be built upon SQL Server 2008 which contains the new sparse column feature – a perfect storage mechanism for EAV models. Moreover, its more than possible to build EAV models on a traditional relational database (I’ve done it myself) and if you want to know how to do it then go and read Arnie Rowland’s excellent treatise on the subject at Through the Looking Glass: Elegant -or Not?.
My take is that SDS (and its predecessor, SQL Server Data Services) were based on the EAV data model.
Although it would be possible for the SDS team to implement an EAV version, Azure Tables use the EAV data model and will have much greater scale-out capabilities than SDS v1, which will be limited to “departmental” size databases.
Undoubtedly, SDS will be carry a surcharge over plain-vanilla (but fully elastic) Azure EAV Tables, like the SQL Server option for Windows Server running on Amazon EC2. So implementing EAV on SDS would carry a significant price penalty over native EAV with Azure Tables.