You'll note that this is marked as a preview rather than a review. That's because
I'm working from a CTP build of the product, and it's definitely incomplete, so
it's not fair to hold it to the standards of a released version. Despite this, VistaDB
3.0 is looking promising. If you're not familiar with VistaDB, it's a lightweight
embeddable database engine for .NET aimed at small and medium applications.With
version 3.0, it's been rewritten as a 100% managed and typesafe application targeting
the full .NET framework, the Compact Framework, and Mono.
The file-server database engine here weighs in at just under 600K, and supports
a respectable (though by no means exhaustive) subset of SQL-92 syntax - certainly
enough to handle most mainstream line of business applications, though if you have
an existing application doing fancy things you should be prepared for some SQL rewrites.
There is support for transactions, including nested transactions, column-level encryption,
triggers, constraints, and referential integrity, among other features. You won't
feel like you're working with a toy database, though like any other database you'll
find some corners that are different from what you're used to. Be prepared to read
the help (at least, be prepared when the help is shipping with the product).
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. 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. The current CTP doesn't implement any Visual Studio wizards, but they're
promised for the release. As far as data capacity goes, VistaDB shouldn't give anyone
a problem: 4 terabytes in a database, 64,000 tables, full-text search and Unicode
support are all included in this version.
VistaDB 3.0 adds support for quite a bit of SQL that's missing in the 2.x versions,
including full support for JOINs, subqueries in WHERE, FROM, and HAVING clauses,
and DISTINCT. There are also reportedly improvements in query optimization, though
this is only partially implemented in the CTP.
It will be interesting to see how the "100% managed" strategy plays out for VistaDB.
Although it has a reasonably robust and mature feature set, it doesn't attempt to
go head-to-head on sheer number of features with other players in the embedded database
market like Microsoft SQL Server Everywhere or Sybase SQL Anywhere. Instead, Vista
Software is apparently hoping that developers have had time to buy into Microsoft's
evangelism for the benefits of 100% managed code in security, easier deployment,
better runtime safety verification, and so on. Assuming their purchase and distribution
terms don't change markedly from 2.0 ($129 for a copy with no runtime royalties),
the cost of entry will be low enough that many developers may be tempted to see
for themselves.