Native .NET Local Storage with VistaDB
VistaDB is a database engine written entirely in .NET managed code. It's a great solution for distributed applications that need to store data locally.
Distributed applications often need local storage. The requirements for local storage are adequate performance, reliability, integration with your existing tools and ease of deployment. VistaDB scores well on all of these fronts.
While compact, VistaDB doesn't skimp on database technologies you'd expect, providing referential integrity, views and stored procedures, and a transaction monitor. Granted, in the Microsoft .NET Framework, all database engines tend to look alike, but the people at Infinite Codex Inc. have worked hard to make their product compatible with SQL Server. The .NET technologies that VistaDB supports are broad and include ADO.NET, Entity Framework, direct database access and writing stored procedures in a CLR-compatible language.
I found performance to be more than adequate for a local database; I didn't do extensive load testing, however. Running on a slow computer, I could sequentially process more than 160,000 records in about 30 seconds, update 1,000 records in about 20 seconds, and retrieve a single, non-indexed record from the same 160,000 record table in less than a second.
The VistaDB integration with Visual Studio is excellent. To use a VistaDB database, you just need to add a reference to a single DLL, or two references if you want to use Entity Framework. You can add a new VistaDB database to your solution from the Add New Item menu. To manage your database, you can either add a connection to a database to Server Explorer or just double-click on the database in Solution Explorer.
There's nothing wrong with the price, either: $250 for unlimited distribution rights and a runtime that will never expire. That price not only includes the VistaDB engine itself, but a standalone database administration tool (see Figure 1), as well as a data migration wizard (though the migration wizard would rather replace a database than add another table to it). The only licensing requirement is that you add an .LICX file to your application. If you're creating a component that will be used by other developers to create their application, you'll need to get an additional license from the company.
[Click on image for larger view.]
|Figure 1. The source code for an unbranded version of the VistaDB standalone database administration tool is included in the VistaDB package, so you can distribute the tool with your application and your branding on it.|
I shouldn't suggest that VistaDB is intended to be used for local storage only. The company has also positioned the product to act as a database for ASP.NET applications. For instance, in the Add New Item dialog, you can add a VistaDB to your project with all of the tables to support ASP.NET membership.
The documentation for VistaDB, beyond describing the API, is skimpy. To put together a ClickOnce deployment package that included VistaDB and my application's database, I had to pull information from a number of sources -- including refreshing my knowledge of ILMerge to insert the database into my .EXE. Task-based walkthroughs aren't available, though you can often find what you're looking for in the company's support forums.
I also have to say a word about the VistaDB support policies: There is no phone support. Pre-sales and technical questions are initially handled through the company Web site. Personally, I don't like phone support and would prefer to use e-mail, but you may have different preferences.
VistaDB is impressive and I certainly like the price. Performance is more than adequate and the feature set is surprisingly large. I'll be talking my clients into using VistaDB whenever they need local storage for applications.
Infinite Codex Inc.
Price: $250 for the VistaDB Developer bundle, $600 for the Professional Bundler
Quick Facts: A database engine (and supporting tools) written in .NET and designed to simplify deployment and integration
Pros: Quick performance, full featured, support for all .NET technologies from ADO.NET to Entity Framework
Cons: Documentation is sparse
About the Author
Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.