Firebird Embedded in comparison to SQL Server Compact Edition 4
Scott Guthrie recently posted article about New Embedded Database Support with ASP.NET. This made me think about other options, Firebird in particular, and advantages and disadvantages. What I’m going to do is to very shortly introduce Firebird Embedded here and then compare it with features Scott wrote in his article.
Firebird Embedded, shortly, is Firebird database server in one DLL. No need to install etc., just load this DLL and use it. To be precise, there are some other DLLs, i.e. to support national charsets, but it’s still in under 10MB all. The database itself is built from same sources as “full” server and it’s not limited in any way.
Works with Existing Data APIs – as I said, Firebird Embedded is based on same codebase as “full” server, thus the SQL and API is same. And not only this, the ADO.NET provider for Firebird works with it and you’re programming using same thinking.
No Database Installation Required and Database Files are Stored on Disk – databases created by Firebird Embedded are stored wherever you want, with any extension. Firebird itself doesn’t have any master database, thus even the “full” server works with any (valid database) file.
Shared Web Hosting Scenarios Are Now Supported with SQL CE 4 – sure you don’t need to install anything with Firebird Embedded, that’s why it’s called Embedded. And not only this, from version 2.5, you can open database from different processes, i.e. IIS worker process and Apache workers or some console application doing something in background.
Visual Studio 2010 and Visual Web Developer 2010 Express Support – as the tool set for Firebird Embedded is exactly same as for “full” Firebird, you can use DDEX (aka Server Explorer support), Entity Framework (LINQ), …
Supports Both Development and Production – this is something I’m silently expecting. But yes, you can do the same with Firebird Embedded too.
Easy Migration to SQL Server – ahh, my favorite point. The Firebird Project has of course whopping number of tools to support migration from Embedded to “full”. The most used is … nothing. The databases are fully compatible and you can switch servers without any other tools, migration, conversion, … Just place it where you want it and connect to it, either with “full” or Embedded Firebird. And to switch your application? Again nothing. Same ADO.NET provider, just change connection string, if needed. Mostly you’ll add server IP address and maybe different path and manually switch server type, if you want. Really the migration is so simple. It is one minute task and thanks to same tool set, no matter what you version your targeting during development, your application will work with the other as well without any additional effort.
You like Firebird Embedded? I do, a lot. SQL Server Compact Edition 4 looks promising, but Firebird has something to offer as well. And recall, it’s based on same sources as “full” Firebird, very mature codebase, examined with tons of installations.



There's 12 Comments So Far
July 5th, 2010 at 15:50
Firebird embedded has (had?) some limitations regarding security. It would attach any username/password combo with SYSDBA privileges if you connect in embedded mode (possibly fixed?).
That said, my life would be a lot poorer without Firebird (and so would thousands of users!!).
July 5th, 2010 at 15:53
No, it’s still there. The reason is the embedded DLL is loaded into *your* address space, so playing with usernames/passwords is completely useless, because you can do (and screw up) anything you want there.
July 7th, 2010 at 21:50
Is it possible to encrypt Firebird embedded?
How secure is Firebird embedded?
July 7th, 2010 at 22:15
ad encrypt> By default no. Firebird has no such function. But you can do it yourself, as sources are freely available.
ad secure>
What you mean exactly?
July 26th, 2010 at 14:01
About the encryption. Are there any ready solutions available? Or samples at least?
July 26th, 2010 at 14:05
http://www.firebirdfaq.org/faq160/
Also RedSoft (http://www.red-soft.biz/en/index.html) has fork of Firebird with a lot of security enhancements and AFAIR ecnryption is there. Maybe you can ask them.
July 26th, 2010 at 14:09
Thank you, I will have a look at the red-soft products…
August 4th, 2010 at 22:06
The most used way to encript all the port messajes using ZeeBeDee: you configure it at the server to encript using a given password, then install on the clients with same password and make the work for you in the background, your app doesn’t even know about it.
http://www.firebirdsql.org/downloads/firebird_zebedee_eng.pdf
August 4th, 2010 at 22:08
I forgot to mention: The port to encript is TCP 3050 (on the default FireBird installation) so you need to chose this port on both sides, server and client, when installing ZeeBeDe.
August 5th, 2010 at 01:19
Sorry but firebird has a lot of other issues, one being the strange supposedly standard sql syntax variant it used, plus the .net provider is very limited.
August 5th, 2010 at 09:12
Firebird is trying to stick to SQL standard as much as possible. Compared the syntax etc. to i.e. T-SQL, it’s much cleaner.
According to .NET provider, it’s also open source, so feel free to step in and improve something.
Who Linked To This Post?
Share your thoughts, leave a comment!