Firebird Relational Database 1.5 Final Out
firebirdy writes "The Firebird Project is pleased to announce that the v1.5 release of the Firebird database engine is now available for immediate download. The v1.5 release represents a major upgrade to the engine, which has been developed by an independent team of voluntary developers from the InterBase(tm) source code that was released by Borland under the InterBase Public License v.1.0 on 25 July 2000. Development on the Firebird 2 codebase began early in Firebird 1 development, with the porting of the Firebird 1 C code to C++ and the first major code-cleaning. Firebird 1.5 is the first release of the Firebird 2 codebase. Install packages are currently only available for Windows and Linux but other platforms should follow shortly." This product is not to be confused with newly renamed Firefox web browser, which was also called Firebird for some time.
It's not a matter of ease, they were around for a lot longer and had the name long before Mozilla co-opted it.
Finkployd
Seriously, though -- I hadn't heard of this particular firebird before the Mozilla fiasco happened. I'm sure I can speak for a lot of folks who couldn't name this project when asked to name the OSS database apps they know.
Of course now they'll be known as the folks that got the name "Firebird" when Firebird changed its name to Firefox. Oh yeah, and they make a database.
Firebird is supported by PHP quite well. Just take a look at the InterBase Function Reference for more information.
I guess Perl has a module for it as well...
No, I didn't
it's right here
Any idiot could of figured that out.
I tried building the Firebird code a few months ago, and found out that step 1 is...
...start with a running version of Firebird!
Bootstrapping might seem like a K00l trick, but there is something uncomfortable about self-referential build procedures (not to mention that it was a pain in the ass to find a preexisting version of Firebird to run).
Gimme a pile of c/cpp & h files and let me build it from scratch, dammit!
Is that possible today? Dunno...the build guide appears to be still under construction.
Not sure, but I'll say that I will investigate it and give it a try for CGI/Web stuff because of the countless headaches one encounters with mysql.
I always thought mysql was a fairly 'lite' db compared say to Oracles tools, but in practice its given me nothing but trouble. I never heard of interbase before today, databases are not my thing, but I will give it a try. The list of people who put their trust in this software is also impressive.
On the other hand, I hated having to administer that hell-pit of a server so badly that I wrote a migration program to transfer entire databases from Firebird to PostgreSQL. I can't describe how happy I was to switch a fairly large online store's backend to a modern platform.
Dewey, what part of this looks like authorities should be involved?
Since Interbase was around long before MySQL and PostgreSQL, why did anyone bother making them? Besides, we need enough DBs to match the number of editors available.
One line blog. I hear that they're called Twitters now.
Not quite true, it cause some maning conflicts in some distros (in gentoo firebird refers to the DB and mozilla-firebird refered to the browser).
How hard is it really to do a search on freshmeat, sourceforge, and google before you name a project? I do it all the time.
Plus it isn't like it was a dead project or a one person project, it had a (albiet not MySQL size) following and was under active development.
Sorry, I love Mozilla but they were in the wrong here.
Finkployd
Rows have implicit unique row ids which make each row unique. So, there are no duplicates.
I used interbase at a previous shop (had to, the "fearless leader" was a borland guy through and through).
I can say that it seemed to handle fine, the server never crashed, there was never a corruption etc - and this was for fairly large databases as well (million+ records etc)..
Firebird I'm sure improves even further on it, the only problem I had with it was it's horrid horrid gui interface(s).
Wrong. This is a fine database that was built from the once open-sourced Borland Interbase. Anybody working with free databases should know it (people who are comparing it to MySql: is mysql a *real*, relational, transactional database server? stored procedures? triggers? foreign keys? )
Related to the naming issue: the mozilla people choosed a name that was already taken by another project, they changed their name now, and that's it...
Why do we ask companies to GPL their aging products and then ask if anyone cares?
This RDBMS is a viable peer to PostgreSQL. It has many features that MySQL does not have.
Just the other day, there was a good article about this database.
Basically, the main difference is that Firebird is a fully transactional database server, whereas MySQL is not.
Rollback and commit.
This is utter nonsense. I see the author's argument but it is incorrect and pedantic. In nearly all cases duplicate records are not returned. When I say "nearly all" the exceptions are: tables without a primary key containing otherwise duplicate rows, and the results of multiple SELECT statements using the "UNION ALL" keyword. UNION ALL tells the engine to go ahead and give me ALL of the rows including duplicates.
I'm also an Oracle guy. I find MySQL loathesome and inadquate for all buy toy-level applications. I see Firebird and PostgreSQL both as viable midrange solutions. I think they each could work in settings were you aren't really stressing the newest features of Oracle, but want "standard" RDBMS functionality. Both have stored procedures, triggers, and some kinds of subqueries (at least in the WHERE clause -- oracle has them also in the from clause and even in the SELECT clause).
I think you'll find that materialized views, at least as far as doing refresh-on-commit and query rewriting, are a really advanced feature that only Oracle has. In many warehousing or decision support applications, they are a must have feature that makes the difference between project success and failure.
Assuming you aren't in such a high performance setting, you can often simulate a materialized view by simply populating a transformation table using stored procedures. In such settings, I think either Firebird or PostgreSQL would work fine, cost less, and avoid icky proprietary licence restrictions.
Firebird has a few minor claims to fame. The big one is that it's a real relational DBMS, not an ISAM driver with a pseudo-relational front-end.
Follow the first "Interbase" link in my post to read the explanation I'd written earlier. Some of the problems might've been fixed by now, but it boils down to this: PostgreSQL is widely used, fast, supports the same features, and has major commercial backing. Firebird's main strength is that is used to be Interbase and is a good thing for people with legacy applications built around that system. It's almost like a comparison of Python and COBOL - both are Turing complete, sure, but I'd hate to do new development on the latter unless I worked in a shop that depended on it.
Dewey, what part of this looks like authorities should be involved?
Slashdot reported it when Interbase was first announced to be going open source, and followed up on the actual releases afterward, so lots of people cared a few years ago. Interbase keeps getting mentioned by users in more general database discussions as well, so at least some Slashdot users still care, even users who are more interested in database features than in database names.
I too love postgresql, but let's be honest:
.org site is PostgreSQL.
1: The OO stuff as regards table inheritence is broken, and no one's in a hurry to fix it.
2: It's easy for me to install, for some people, not so much.
3: FirebirdSQL is just as free as PostgreSQL, using their own version of the Mozilla Public License.
The main things that PostgreSQL is that FirebirdSQL is not is heavily tested in enterprise environments. Remember, every time you go to slashdot.org, the database serving up that site is MySQL, but the database serving up the IP for that
However, I totally agree there's a negative probability that anyone will ever use the name Postgresql for any other project.
--- It is not the things we do which we regret the most, but the things which we don't do.
That's one difference. But query optimization is also a big deal. It's not obvious from simple queries, but MySQL takes a big performance hit if you do anything that involves relations between tables. That's why Slashdot went to indexing posts using a single field, instead of referencing the parent story every time. (It also has the effect of discouraging "first posts" since there's no longer a post #1. But Taco doesn't actually care about that!) I find it hard to take seriously any database that doesn't optimize queries.
I, on the other hand, am still annoyed that Oracle doesn't allow taking a slice of a result set and still can't do outer/left/right joins in a standard fashion.
What are you talking about?
ANSI standard syntax for such joins was added two versions ago in Oracle. Personally, I hate the ANSI syntax.
What exactly does "taking a slice" of a result set mean? Oracle gives you half a dozen different ways to do this. The standard one is to use native dynamic sql to add arbitrary WHERE clause conditions at runtime. If that isn't enough, Oracle 9i provides a far greater capability: pipelined table functions allow arbitrary programmatic construction of a result set that can be used as a table in a FROM clause.
Configuration, what you seem to be talking about, is not rocket science either. Of course it is harder than configuring MySQL, because it does more. In the case of access permissions, PostgreSQL seperates database permissions (GRANT SELECT ON some_table TO some_user) and the right to connect to the server in the first place (which you set up in pg_hba.conf). This is more work than the pure GRANT-based scheme of MySQL, where GRANTs not only based on user id, but also the remote host etc. It is also more flexible - For example, PostgreSQL can authenticate a connection with Kerberos or PAM - as far as I know, this is not possible, or at least not trivial, with MySQL.
As always, both have their place. If you want easy, use MySQL. If you want flexible, use PostgreSQL. Firebird's claim to fame in this regard has to be filled in by someone else, I don't know it well enough :-)
Programming can be fun again. Film at 11.
I've used it in several projects, over the years. In my day job, we recently added Firebird to the list of databases that we support as warehouse targets for our application. Firebird's instant installation, small footprint, and portability (a few meg) are good reasons to do this. Another good reason is that it outperforms Oracle on the same hardware, as well as several other commercial databases.
We used to deploy Interbase as part of a product at a company I worked at years back. We would install, start the system (which had multi-gigabyte databases at times), and then not look at it again for YEARS. Two years could go by without tuning, transaction log clearing, or anything else, for that matter. It doesn't have transaction logs (doesn't need them), and sweeps itself clear of most detritus automatically.
Backups could effortlessly be done on the fly. Full two-phase commit support. And when it comes to complex transactions, it's one of the best databases out there because of its generational architecture (something it shares with PostgreSQL).
There are a few rough edges on it, like the lack of a standard GUI administration tool. Java support was slow to evolve. The lack of care given by Borland hurt the product for a time. The Firebird people seem to have done a lot of hard work, and deserve praise.
And for the record, Firefox or whatever the hell it is calling itself this week is one of the stupidest excuses for a software package I've seen to date. It's Mozilla minus most of the features that make Moz useful and extensible. It doesn't run any faster than Moz in resident mode. It performs no useful function I am aware of. The adulation it receives utterly escapes me; it seems to be a prime example of building software for the past. The engineering effort would have been far better spent on Moz itself.
Any reason not to use the "gbak" application included with Interbase/Firbird to backup you database?
Well maybe they don't like *your* attitude! You, sitting there, picking the fluff out of your fat ass and making condescending statements like the above!! ;)
These are commited people, spending their own time on a quality database that is available to everyone. You don't have to use it, but don't bleat about just 'cos somehow they've upset you because of a product naming arguement that in all likelyhood you are probably not a party to anyway!
I mean, regardless of if you think Firebird-SQL, Mozilla or both were in the wrong over the naming debacle, it is now resolved, and the vast majority here are fortunate to have the opportunity to use *BOTH* for free without having to do a thing.
So climb down off the moral high-ground, and say something constructive or nothing at all!
Hardly. They did publish a list of people the express dissatisfaction to, which in hindsight was an incredibly stupid mistake, but the wording wasn't anywhere near the "spam/flame all these people" you make out. Arguably they didn't expect many people to respond as the Firebird community (much like the Delphi community that uses Firebird) is fairly small, tight-knit and rational - so they didn't expect people to behave childishly by flooding the mailboxes of the Mozilla team.
However, because it made "good news" to have an open-source battle (or to create one, which the media is sometimes guilty of) it gained publicity fast and was picked up by people on both sides, including those who'd probably used neither product who thought it'd be good to fan the flames and as a result things escalated wildly - to the extent that some stupid Firebird fanboys mailbombed the Moz devteam while on the other hand some idiotic Mozilla zealots found an SSL bug in the Firebird website and deleted everything...
So to say that only the "FirebirdDB people" handled things improperly is a pretty wide-sweeping generalisation that, if you stepped back a bit and checked out the facts, might reveal a slight subconscious leaning to Mozilla 'cause you like their browser? I've used both products and saw plenty of mistakes made on *both sides*...
FYI I did a a writeup of events last time around.
With "current MySql versions", you mean the pre-alpha development release which for example will have (potentially crude) stored procedures? As opposed to the current unsupported beta version, which is the first to finally have subqueries (of course, after years of telling customers that you don't want them anyway, just as MySQL AB did with all other basic DBMS features they only now promise to support in a few years)?
Programming can be fun again. Film at 11.
hmmm your observations on firebird are mostly FUD, and should be modded down:
1 - if you change your dir layout, a symlink pointing to the new db locations is enough (helloooo, stop thinking in terms of apps, learn some basic sysadmin)
2 - Firebird has a new isql with readline capabilities, and there are plenty of good frontends (ibexpert is one) for interbase, isql is a tool of last resort
3 - same as no. 2, but I wonder which IB you were using, SuperServer or Classic? you should specify that
4 - YMMV, I never experienced any corruption and I suspect it's a hardware issue; there's a tool (gfix) to fix the db anyway which usualy works, and hot backups are so easy (gbak -B -V dbfile.gdb bakfile.gbk) you should do them often
5 - you can extract metadata, I'm not sure about SQL statements, but as you say it's not difficult todo it by hand; good clients (eg IBExpert) have a "data pump" to do exactly that
IB is stable, has a small footprint and lots of goodies only found in major league RDBMSs.
I use both firebird and postgres almost daily. They are very similar in many ways. Both are easy to install, and administer. Both have support for true database features like foreign keys, triggers, and transactions. Interbase runs well on Windows. Although I don't like using windows as a server the fact that our clients feel like they have a choice between linux and windows has helped us close the deal on a few occasions (advantage Firebird). Postgres is more popular with the OpenSource community and more free software is written for Postgres than for Firebird so if you are setting up open source software for your clients there is probably more free stuff available for Postgres - I suppose that is an advantage for Postgres.
It was once Netscape... until they screwed up in the market so bad that they gave up on it and released the source as:
Mozilla... until it became so bloated and overdesigned (and dangerously close to a movie company's trademark on a mutant lizard) that they had to start over as a project called:
That's a bit harsh - how about unfair competition? Anyway, "Mozilla" was the internal codename for Navigator at Netscape. It has always been it's name and it still is today (now for the whole suite).
To quote the "Freeing the Source: The Story of Mozilla " :
Mozilla was a term initially created by Jamie Zawinsky and company during the development of Navigator. The team was working at a similarly frantic pace to create a beast vastly more powerful than Mosaic, and the word became the official code name for Navigator.Firefox... which, (assuming they finally did their homework and checked on trademarks) is actually the best name since the original "Netscape".
They better! The name is catchy and the logo is quite beautiful. Try "Help" > "About Mozilla Firefox".
zWhat would an EWOULDBLOCK block, if an EWOULDBLOCK could block would? -- me
Obviously you can generate duplicate rows any number of ways if you include non-unique column combinations in your SELECT.
In any rate, because SQL allows you to create a table *without* a primary key (which then means that result sets can have duplicate rows) then it is not relational. End of story.
No one is saying that SQL is double-plus ungood, just pointing out that it is not relational (just as saying that 2+2 != 5, and the sky is not made of fish), and don't attribute deficiencies of SQL to deficiencies of the relational model.
You can begin to understand how Date and Pascal et al at DBDebunk.com feel if you consider the following scenario (this thought exercise presupposes that perfect is possible):
Now that this long-winded description is over you can replace The Perfect Car with The Relational Model and "Perfect Car" Implementations with {Oracle, MySQL, etc.}. You can replace "New Perfect Car Models" (including "Without Significant Scientific Background") with {XML, OO-DBMS, 'Persistence Layers', etc.}.
No one is saying that you cannot use SQL products or XML, or that you cannot accomplish tasks in these tools, just that when used in the context of data management they are poorly solving what the Relational Model already solved.
Because IT practitioners are poorly educated and increasingly fad-driven they latch onto non-solutions (like XML, "Post-Relational", OO-DBMS, etc.) and put little or no pressure on DBMS vendors to get it right. Even worse, if someone does release a Truly Relational DBMS there are no guarantees that anyone will buy it due to the ignorance of the IT community.
Put simply: People don't know what they're missing, so they don't know to ask.
Thanks,
--
Matt
What language? What platform?
Let's start with a nice Win32 Gui to administer the db: IBExpert
OK, now the drivers: there are plenty of ODBC, OleDB, .NET and JDBC drivers available. I personally use IBProvider,
it's a OleDB driver. I have also used the open sourced
ODBC
driver with great success.
RowIDs typically are:
1) Not visible to the user
2) Based on physical (e.g. on-disk) row placement (e.g. Oracle's ROWID pseudocolumn)
Both of these are violations of the relational model.
If, however, every table had a unique sequence number or something, then sure they would not be materially in breach of the uniqueness constraint. However, remember that result sets are *also* relations so you would have to have DISTINCT appended to every SELECT statement to also pass the uniqueness test.
Thanks,
--
Matt
Firebird has a few minor claims to fame.
What about distributed transactions? AFAIK, no other open source relational database supports them (neither PostgreSQL, nor MAXDB, nor MySQL). I do quite a bit of distributed object programming, so I can't do without distributed transactions, and Firebird's work well.
What about server-side event notification? AFAIK PostgreSQL is the only other open source relational database that supports them. Switching from a polling architecture to event notification can yield huge performance benefits.
What about nested transactions? Firebird 1.5 supports savepoints, which are a basic rendition of nested transactions. AFAIK, MAXDB is the only other open source relational database with nested transaction support (though MAXDB's are full-fledged nested transactions, not just savepoints).
This isn't just some Firebird-propaganda-bullet-list. I find all these features indispensable.
I think you are being a bit unfair to mysql. You may have experience with isam/myisam tables under mysql - I agree that those are terrible. At my workplace we had no end of troubles with mysql and myisam tables. Since we upgraded to InnoDB format, we have not had one problem in two years of heavy use. I believe I read that mysql is going to use InnoDB as its standard storage engine in the future (version 5 and up?).
I'm not quite sure what it offers over PostgreSQL.
It's difficult to work with from an administrative level, and not terribly well documented...
I agree that the documentation is mediocre, but firmly disagree that it's hard to administer. The key is: don't. Make a couple of changes in the config file if you need to, configure automatic backups, then forget about it.
Erlang.org: wow
You don't need to know the physical location anymore. Version 1.5 has aliases.
...there is no sig...
Personally, as a DBA, I don't like mySql because of the numerous gotcha's it has unlike postgreSql. That speaks for itself... but hey, if you write bugfree code and trust that others do as well, then go ahead, use it. BTW> I'm a fan of postgreSQL, I wouldn't hesitate to recommend that if $$$ are a concern.
"Thanks to the remote control I have the attention span of a gerbil."
Uh, no. A typical modern RDBMS will use a scheme similar to WAL (write ahead logging) to record data changes and allow recovery from crashes. Unless you can manage to make tar+gzip atomic (which is true if you're using a filesystem-level snapshot feature, but not true if you're actually using tar), you won't get a consistent on-disk snapshot of a DBMS like that. The reason is that the WAL and the data files will be out of sync.
In order to effectively back up such a database using tar, you need to shut down the DBMS (which is hardly an appropriate backup technique),
It is worth noting that MySQL with InnoDB has supported SAVEPOINT's now for a few versions. [code]http://www.mysql.com/doc/en/Savepoints.html[ /code]
One argument is to run natively on a Windows server. In saying this, I am not recommending Windsows as as server, just pointing out that Firebird/Interbases has good traction and support there.
Of course not.
The bug was found by us, and the release of it publicly was done, initiated by us, through CERT. http://www.cert.org
Updated versions and patches were availabe before the public release of the security bug.
Cheers
Mark
There's a lot of examples of what MySQL can't do, but I'll just give two. Let's say you want to do this:This SELECT gets all words used in an article, and looks them up in a dictionary. You can't do this in MySQL.
What you can do in the latest alpha versions is this:But this will only return one row, so it's not the same. Other DB systems will also let you create functions inside the database, which can be reused later.
Another thing you can't do with MySQL is set up DOMAINs (or constraints); with Postgres you can specify that a field in a table should be an integer, but only integers between (for instance) 1 and 1,000,000.
And it's a lot more. But admittedly most people won't be needing the advanced functions a lot, if at all, so if MySQL suits your need just use it. Databases are a little like other tools: You use the one that's best suited for the job.
That is one thing you should never do. Never ever trust any web site as authoritative.
What could be good for you is to read the arguments critically, and think. Perhaps even get a book, either on you library or buying it -- Date's _An Introduction to Database Systems_ *is* the standard reference textbook in the area, so it's worth it.
BTW, all caps in a title is perfectly accepted practice.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
More insightful information on the differences between SQL-DBMS and R-DBMS is on DB Debunk
OT: Have to post AC, have been modding.