Rating: 4 out of 5 stars
I find Language Integrated Query (LINQ) to be one of coolest, most useful, and highly functional technologies recently developed by Microsoft. The ability to quickly ascertain result sets from a variety of data sources using simple syntax is especially exciting to someone like me who has had to deal with some pretty hairy SQL syntax in the past. However, all this power comes at a cost of less than optimal performance, especially when dealing with multiple joins across disparate data sources. Fortunately, the talented developers at ComponentOne recognized this constraint as an opportunity and created LiveLinq to help other LINQ programmers achieve maximum performance out of the technology.
The primary magic behind LiveLinq's functionality is its ability to create in-memory indexes, making data lookups as fast as in-memory processes allow. Such approaches can make pretty dramatic improvements in results, especially when dealing with large data sets.
The product comes with several examples to help demonstrate LiveLinq's usefulness (see Figure 1).
Figure 1: Exploring LiveLinq data set features
One of the best of these that showcases the most powerful aspects of the product is a performance comparison application that benchmarks using Objects, ADO.NET and XML (see Figure 2).
Figure 2: LiveLinq performance comparison
The LINQ results are quite revealing and really show off the power of this efficient and versatile technology. Examining the well-documented source code reveals how developers can leverage LiveLinq in their own projects for maximum benefit.
A Quick Start PDF is available for download from the LiveLinq webpage and shows how easy it is to harness the assembly into your own projects. Using various caching mechanisms, performance increases of 50 times or more are possible. In my own projects, improvements ranged between 10 to 30 times faster depending on how much I had already tuned the queries as well as the size of the result set. In addition to data bound WinForms examples, the Quick Start guide also shows how to wire LiveLinq within Windows Presentation Foundation (WPF) and declarative programming scenarios.
Lacking in the version I reviewed, but available as a separate beta download, is the ability to leverage LiveLinq in Silverlight applications. Although I did not test this capability due to the not-yet-final nature of this support, I anticipate this functionality to be out of beta and rolled into the commercial release around the time that this review is published.
Although LiveLinq with Platinum Level support isn't cheap, the access to ComponentOne's technical support can be extremely useful (even though the activity on the ComponentOne-hosted LiveLinq forum is a tad meager). While expert developers may be able to roll their own in-memory indexing solution, testing and maintaining such a custom codebase in various LINQ scenarios would be a questionable investment of time and effort (unless of course the intention is to commercially compete against ComponetOne). The smarter approach would be to load up the trial version of LiveLinq, harness it within your own data-intensive LINQ-employed projects, and see if the gains are worth the financial commitment.
In my opinion, the product should be strongly considered by any developer or organization planning to leverage LINQ in their projects. The performance gains and optimizations made as a result of using LiveLinq are stunning. For those who can afford the up-front costs, LiveLinq has the potential to pay for itself in faster systems and ultimately happier end users of your product or service.
Mike Riley ( [email protected]) is an advanced computing professional specializing in emerging technologies and new development trends. He is also a contributing editor for DevProConnections. Follow Mike on Twitter @mriley.