views:

2422

answers:

8

I have seen the references to VistaDB over the years and with tools like SQLite, Firebird, MS SQL et. al. I have never had a reason to consider it.

What are the benefits of paying for VistaDB vs using another technology? Things I have thought of:
1. Compact Framework Support. SQLite+MSSQL support the CF.
2. Need migration path to a 'more robust' system. Firebird+MSSQL.
3. Need more advanced features such as triggers. Firebird+MSSQL

+5  A: 

Well, the main thing is that it is pure managed code - for what that is worth; it works not only on your typical Windows machines running .NET, but works wherever you run the Compact Framework and even works on Mono. Here are some noteworthy bullet points from their homepage:

  • Small < 1 MB footprint truly embedded ZeroClick
  • Microsoft SQL Server 2005 compatible data types and T-SQL syntax
  • None of the SQL CE limits
  • Single user, multi user local or using shared network.
  • Partially trusted shared hosting is no problem.
  • Royalty-free distribution - single CPU deployment of SQL Server costs more than a site license of VistaDB!

One thing worth noting is that Rob Howard's company, telligent, uses it as the default database for their new CMS software, "Graffiti."

I have played with it here and there but have yet to build anything against it.

Jason Bunting
A: 

BTW, SQLite supports triggers.

Joel Lucsy
Not CLR Triggers or Triggers that can run managed code AFAIK
Jason Short
A: 

I hadn't seen VistaDB before, it does look pretty cool.

Update: Received a comment from someone from VistaDB - their update model is only for getting new versions. Your old ones won't stop working if your license expires, which is good to know.

Keeping the original post here as IMHO the warning about expiring software licenses is still worth thinking about, even though VistaDB itself is fine.


It definitely seems 'more featureful' than SQLite, but I don't see anything there to justify the cost. The site seems to indicate that you can buy one license for $279, but it implies this is just a 1 year subscription. Would you have to then pay another $279 next year to stop your site falling over?

If so, remember to factor into the 'cost' how much inconvenience it's going to be when you get a call at 3am (murphy's law, it's always 3am) from your panicking customers because their VistaDB license has expired :-(

I've had this experience personally with some expiring software, and it's never good. You can send your customers emails and messages and flash their entire screen blinking red saying "YOU NEED TO GET A NEW LICENSE BEFORE NEXT WEEK" and they'll still never do it, and you'll still get the pain at 3am when it does expire.

Orion Edwards
No, the license doesn't expire - you simply don't get updates after the subscription period is up.
Jason Bunting
The runtime license never expires. The subscription is for support and updates. You can't get any new builds from us after your subscription expires.
Jason Short
+19  A: 

The VistaDB client runtime is free. The runtime will never "expire at 3am" as you put it. Only the developer tools are licensed in that manner. You need 1 license per developer, simple. We even offer a really inexpensive Lite version with no Visual Studio tools.

Some other benefits

100% managed code - there are no interop or other unmanaged calls in the engine. This is a big deal to some, and others could care less.

No registry access required - Most other in proc databases require registry access to look for parent controls, or permissions. VistaDB only does what you tell it to do, and will even run in Medium Trust.

XCopy deployment for runtime and your database (single file). You can xcopy you application, the runtime, and your database and run. Nothing to install or configure on the machine, no special privileges needed (we can run in Medium Trust or higher).

Isolated storage - You can put your entire database into Isolated Storage and run it from there directly. This makes it very easy to build secure click once applications that write databases in a domain friendly way for corporate environments. There is no need to store the user data on a shared drive or worry about permission mapping.

CLR Triggers / CLR Procs - You can write CLR Code and use them as Triggers or Stored Procs. We have just recently introduced changes to make it even easier to maintain a single CLR Assembly that can run in both VistaDB and SQL Server 2005/2008.

T-SQL Procs - VistaDB T-SQL Procs are compatible with SQL Server 2005/2008. Any procedure that works in our engine will run in SQL Server. That does not mean anything that runs there will port to us. We are a subset of the functionality in SQL Server. But we are also the only way to run T-SQL Procs without SQL Server (SQL CE can't do it).

I personally think one of the biggest features is the ability to upsize to SQL Server later. All of the VistaDB types, syntax, and CLR Procs, T-SQL procs, etc all will run on SQL Server. (You can't take everything from SQL Server down to VistaDB though, it is a subset)

32/64 bit Deployment - VistaDB is a single assembly deployment that runs both 32 and 64 bit without changes. SQL CE requires two different runtimes depending upon the OS, and cannot run under IIS at all. Access has no 64 bit runtime, and the most recent 32 bit runtime can only be deployed through MSI. The 32 bit version of Windows has the runtime, the 64 bit version does not.

Relational Integrity - VistaDB also actually enforces your constraints and Foreign Keys. You can specific cascade update, and delete operations. The person who commented we are like SQLITE is wrong in this regard. They parse constraints, but do not enforce them.

EDIT: They do have support for FK's now in SQLite. But they are not compiled in by default, and do not use the same syntax as SQL Server.

Medium Trust - The ability to run on a medium trust web server is another feature that many will not care about, but it is a big deal. Many third party controls can't even run in Medium Trust. We can run the complete engine within Medium Trust because of our commitment to 100% managed code and least permission required.

- Full disclosure - I am the owner of VistaDB so I may be biased. :)

Jason Short
It would be awesome if VistaDB was supported by migratordotnet: http://code.google.com/p/migratordotnet/ I'd like to use it for unit testing with NHibernate, and I've been really happy using migratordotnet for database migrations.
Lance Fisher
I use VistaDB in a commercial application, and it works great. I am very happy with it.
Dana Holt
I use VistaDB in many of my personal applications. We are going to start using it at work in a small disconnected application. It works great and ability to copy over our T-SQL sprocs is awesome! I also need to say that it is a lot easier making key constraints than it is with SQLite (need to write triggers with SQLite to enforce key constraints.)
PhantomTypist
Latest SQLite version 3.6.19 supports foreign key enforcement.
Christian Schwarz
SQLite FK enforcement is disabled by default. From their site "the library must be compiled" that means it depends upon the BUILD even, and then you have to enable it as well. If I wanted to maintain the code and build it I would have built my own engine (oh wait, I did... VistaDB - nevermind)
Jason Short
I didn't find any pricing on VistaDB "Lite" version, is it still available?
Andreas
No, Lite has been discontinued. Personal is the lowest edition on the site as of Feb 2010.
Jason Short
Do you have professional support ? - Always a benefit for many. You might also want to add a link
Romain Hippeau
+4  A: 

For me this most interesting feature of VistaDB is that it can be run in Medium Trust environment. Which makes it perfect solution for creating small to medium .NET websites which can be deployed on server by copying and pasting (x-copy deployment).

And almost all windows shared hosting providers (like GoDaddy) won't let you run your websites in Full Trust mode. And also won't install for you any 3rd party binaries into GAC like System.Data.SQLite.dll if you wish to use SQLite for example.

Koistya Navin
A: 

Does VistaDB support entity Framework (EDM)

Yes `This also includes support for the Visual Studio Entity Framework designer.`From [VistaDB Features Page](http://www.vistadb.net/vistadb/default.aspx)
Andrew Burns
VistaDB 4 supports Entity Framework from .Net 3.5 SP1 and .Net 4. Model first is not supported in the current release.
Jason Short
A: 

Can I open a VistaDB databasefile via SQLConnention? ( and all these SQLData things)?

Ali Sabahi