Search Wiki:
Project Description
i4o (index for objects) is the first class library that extends LINQ to allow you to put indexes on your objects. Using i4o, the speed of LINQ operations are often over one thousand times faster than without i4o.

i4o works by allowing the developer to put an Indexable attribute on any class, and then using the IndexableCollection<T> to implement a collection of that class that will use indexes, rather than sequential search, when doing LINQ operations that can benefit from indexing.

i4o reduces the amount of code required to implement custom indexes in collections to mere decoration of classes, while allowing LINQ queries over IndexableCollection<T> to automatically use the indexes where appropriate. i4o makes the idea of indexed LINQ not just a theory, but a "here and now" reality.

For more information please reference the initial blog posting describing the project here:

http://blog.magenic.com/blogs/aarone/archive/2007/04/09/Introducing-i4o.aspx
Last edited Aug 3 2007 at 2:31 AM  by ericksoa, version 6
Comments
DamonCarr wrote  May 20 at 6:57 PM  
This is really nice stuff... When you consider that Linq should surface perhaps many of the same issues that the RDBMS folks had to solve years (decades?) ago, I wonder how much we will see in the Linq space that is similar as you have done here. Clearly when dealing with large sets/hierarchies we'll need even more advanced query parsing and optimization, sync, Out of Process 2-phase commit? This really becomes interesting ...... I suppose distributed objects and the WS-* standards have covered a lot of this, so Microsoft could likely leverage WCF for the out of proc transactions updates.

I wonder what (if anything) we can borrow from the work of the object database vendors? It seems they must have had to solve many of these issues... I know Oracle has support for this (at least in some facility) but I've heard nothing from the upstarts that years ago tried to make traction there.

Anyway, I am really liking Linq. It is so much NOT your average Microsoft acronym. In my opinion at least it appears to be an astoundingly productive technology to put in the hands of million of developers. Now if we could just get the domain experts and the developers speaking the same language ..... (grin)...

Thanks,
Damon Wilder Carr




ericksoa wrote  May 23 at 2:02 AM  
Thanks Damon.

Certainly, as far as indexing goes, we are moving forward and borrowing ideas from db vendors by indexing using balanced trees. Linq to objects is such a naive implementation of what this stuff can do that there is a ton of room for taking these concepts from dbms land and moving them into the framework.

Updating...