Oslo repository
The central challenge of repository implementations is how to provide support for an extensible list of metadata schema. The most common solution is to use a universal schema (e.g. an entity table, a property-value table and a relationship table). This makes writing tools like repository browsers easier but at a significant cost. Repository performance and queriability suffers. Queries run slowly and standard database tools like SQL Server Reporting Services do not work well because they expect well structured data.
Instead of using a universal schema approach, the design of the Oslo repository has focused on making well structured relational APIs work. This makes the engineering effort harder but customers benefit from a performant store that can be easily queried and used with a wide variety of stores. For example, the query to retrieve name and accessibility of a particular CLR method using the universal schema approach would be something like:
select N.[Value] as [Name], A.[Value] as [Accessibility]
from [Properties] as N, [Properties] as A
where N.[Id] = @id and A.[Id] = @id and
N.[Property] = ‘82aba91a-ca89-4e4f-bd39-9b67ec02ab5a’ and -- Name Property
A.[Property] = ‘efad35c8-46bb-439e-8a5d-7bd0f695d27f’ -- Accessibility Property
by contrast the repository query is:
select M.[Name], M.[Accessibility]
from [CLR].[Methods] as M
where M.[Id] = @id
which is a natural SQL query.
Reliance on universal schema are just one of the issues past repository implementations have suffered from. Now that the repository is announced I am free to talk about its design. In subsequent articles I will go through these design tradeoffs and how we resolve these issues.
Last week, as part of the Oslo announcement, Microsoft announced that we are building a metadata repository that will ship in System Center, BizTalk and Visual Studio. If you are interested in reading more about Oslo and the repository then the Oslo site, press release and Directions on Microsoft articles are good starts.
We need great developers and testers to complete the repository team. If you are interested in helping change the way software is built and managed then please apply for one of the following positions:
Development Manager (position #179184)
Software Developer (position #179188)
Program Manager (position #185006)
Comments
- Anonymous
January 05, 2008
I haven't read your blog for a while, so please excuse the delayed post. I really don't know much about oslo. However, I will investigate your links.Is there room, in oslo, to fit a global conceptual schema into the mix? ORM? - Anonymous
December 17, 2008
Sorry for the delay in posting many of the details of the Oslo were secret until recently. The Oslo Repository has a core catalog that attempts to strike a balance between SQL Server's core representation of data and more end-user oriented representations like ORM. In some ways it goes beyond ORM. For example, in the repository catalog are localized names for the various structures users can see and hints about how they should be displayed to a user.