Larkware

We get up early so that you don't have to.

Review: VistaDB

VistaDB 2.0.1 .NET Edition, $129
Vista Software
La Jolla, California
(800) 653–2949
http://www.vistadb.net

One of the things that Microsoft did with .NET was open up new opportunities for ISVs. And one of the companies to decide to stake their fortune on .NET's success is Vista Software. From roots as an xBase vendor, they have now completely rebuilt their core database engine as an alternative database engine aimed at the .NET developer who wants a lightweight embeddable database with native ADO.NET support that's suitable for small and medium applications. I poked around a bit with their latest release to see what it has to offer.

What it has to offer is a file-server database engine that weighs in at under a megabyte - right there you have a major advantage over shipping around Jet or MSDE (though, of course, that may be moot if you need to install the .NET Framework anyhow). There's a client-server version promised for "late 2005", but for the moment multi-user applications depend on a traditional shared file-locking scheme. The engine supports a reasonable subset of SQL-92, though if you're porting an existing application you'll probably find some pain points. For instance, there are no views or stored procedures at all, ALTER TABLE cannot add a default, the supported data types are a bit limited compared to the full SQL standard, and so on. Still, there's plenty here to write the average desktop database application. There is support for transactions, including nested transactions, column-level encryption, triggers, constraints, and referential integrity, among other features. Version 2.0.14 (just released) adds support for in-memory databases and tables as well as an ASP.NET 2.0 managed Membership Provider.

To see how well your existing data maps into VistaDB, you can use the VistaDB Data Migration Wizard. This is an excellent little utility that can connect to Access, Oracle, SQL Server, FoxPro, Clipper, dBASE, and a batch of other database types. You can choose which tables, columns, indexes, and relations to migrate, change the names of objects as they're migrated, and decide whether to migrate just the schema or the schema and the data. There's also a nice little Data Builder utility that lets you browse through an existing VistaDB database, execute SQL statements, and perform various administrative tasks. Once your data is in the VistaDB format,. working with it from .NET is simple. There's a managed ADO.NET provider; if you've used ADO.NET at all, working with the VistaDbConnection, VistaDbDataAdapter, and VistaDbCommand objects is simple. It integrates well with the Visual Studio design environment, complete with a Wizard to build commands and datasets for you. As an alternative, there is a second set of "direct data access" objects that bypass ADO.NET and talk directly to the VistaDB engine for speed. (Depending on what you're interested in and which edition you buy, there are also COM and VCL interfaces available).

As far as data capacity goes, VistaDB shouldn't give anyone a problem: 4 billion rows or columns in a table, BLOBs up to 4GB each, column names default to 64 bytes but you can change this at database creation time, practical database limit 10GB; while some day we'll outgrow these limits, they're reasonable for a file-server database in 2005. There isn't a lot of sample code with the installation, but the help files are good. There's a fairly responsive online forum for support. The company's anti-Jet marketing is a bit over-the-top, taking advantage of Microsoft's confused message on whether or not the Jet engine is going away (and it's ironic that I say that, given that they quote from one of my own books on their Jet comparison page), but that's the nature of marketing.

Overall, it looks to me like VistaDB is a respectable entrant in the embedded database market for the .NET developer. I'd consider it for an application that isn't intended to have massive multi-user transactional traffic (a caveat based on general experience with file server databases, not specific testing), provided I had enough up-front design time to get comfortable with VistaDB's SQL dialect. The frequent release cycle and good range of support for .NET technologies are encouraging signs, and I look forward to seeing what their client-server version can deliver.

Mike Gunderloy is the lead developer for Larkware and author of numerous books and articles on programming topics.