Do they exist? Do they make you money (or in the case of Firebird meaningfully extend your community)? Would you be unhappy if support would be dropped in PHP 5.3, in PHP 6.0? Do you have ressources to prevent this from happening, by taking ownership of the code in question? Are you interested in ensuring the availability of solid support in PDO? While I do not think support will be dropped in PHP 5.3 (well for FrontBaseSQL I have a hard time standing up in defense like I did for the other 3), there is a good chance this will happen in PHP 6.0. Without PDO support your users will be left more or less in the dust. So if you work for one of these vendors, please talk to who ever who can prevent this. If you know …
[Read more]There are only two kinds of storage devices - those that have failed, and those that are about to fail. That's the view most datacenters have about the traditionally mechanical devices pejoratively referred to as "spinning rust." All disk drives fail, cheap drives fail faster.
If the average time to fail is five years, you and your laptop
can make do with the occasional backup. But when an average
enterprise has 100, or 1,000, or increasingly 10,000 or 100,000
individual disk drives, failure is a daily, if not hourly
occurrence. Mechanical devices fail.
And with failure comes the potential for losing data - using commodity disks to save your boss $500,000 does her no good if she's fined $50,000,000 for violating data retention regulations. Stock transactions, medical images or feature length movies - take your pick, some data has to be perfect. Not a decimal point or pixel out of place.
That's exactly why, years …
[Read more]This is going to be an unusual blog post, because I will continuously update it with features that MySQL still has on top of PostgreSQL, which is generally considered to be more feature rich. Some of these missing features can however hurt a lot. I am including MySQL 5.1 in here, since eventhough its not yet released as GA, more and more people have started to use it in production. At the same time I am also including 8.4. So in a way I am talking about what MySQL has on top of PostgreSQL by the end of the year. I am not going to include stuff like auto increment if there is something that is more or less equivalent with SERIAL. I am also not including features I consider unwise (like REPLACE). Finally I am skipping XML support, because I know both are working on improving the support, but I have not yet looked at it so closely. So here it goes:
- Multiple charsets/collations in the same DB (all the way down to the column level) …
De facto standards are the only ones that matter.
That's a bit of a truism in the technology world - well intentioned standards bodies and departments of justice can do their best, but at the end of the day, volume deployment is the only setter of standards. Ubiquity trumps policy, just about every time.
To that point, I was on a panel recently, discussing the impact of technology on the world's more rapidly developing economies (what's often referred to as "BRICA," or Brazil, Russia, India, China and Africa).
One of the speakers referenced an interesting shift in the traditional media industry: western companies were turning their attention toward the developing world. GDP growth wasn't drawing their attention - as much as demographics. Teenagers and those in their early twenties represent the biggest media buyers in …
[Read more]PostgreSQL is a sleeping giant that is waking up. And instead of wondering around sleepy, they seemed to be jumping forwards in what seems leaps to the other guys, but are just natural steps for them. Heh, I seem to be in a dramatic poetic mood today, but I just wanted to get across with how impressed I am with what is going on with the PostgreSQL community, ever since version 8.0. To me PostgreSQL 8.0 was so critical since with it one of the key obstacles to more wide spread adoption was removed: There was finally a native easy to install version of PostgreSQL for windows. Not that I know many people that deploy on windows, but I do know a ton that develop on windows (which included me back then).
Anyways, since then they have been adding more and more features at a pace that is mind boggling compared to what MySQL seems to be doing with much greater ressources. They are opening up as the same time too, which only seems to be accelerating …
[Read more]A few years ago a backdoor was found in Firebird, the open source fork of Interbase, that already existed in the original Interbase product and was still in the version of Interbase that was sold at the time. Nowadays this is fixed, but it was kind of scary that a company would add a backdoor and then totally forget about it, why else would they not have removed it before open sourcing (after all a backdoor only works through obscurity)? Anyways the other day another security issue (this sort of thing happens to the best of them) in Interbase that was fixed in January in Firebird already.
The security issue has been long disclosed. Now why on earth would the Interbase …
[Read more]Last week I was working with a client that rediscovered a bug where setting expire_logs_days and issuing a flush logs causes the server to crash. It’s MySQL Bug #17733 if you want to have a look. Seeing MySQL crash was enough inspiration to fix something that I and others have wanted to fix in MySQL for years.
Currently a flush logs command tries to flush all of the following logs in order:
- General Log
- Slow Query Log
- Binary Log
- Relay Log
- Store Engine Logs (If available)
- Error Log
The reason I wanted to fix this is because my client was issuing a flush logs to rotate the error log on a server with no replication. The crash was caused by replication. With individual flush logs it’s less likely for this to happen again in the future. People can simply issue a query for the …
[Read more]So today Roman, one of the developers on the Doctrine project, pointed me to an article that was discussing the misuse of DISTINCT. This article went so far as to say that "A SELECT DISTINCT query is frequently a "code smell". The article pointed to another article hosted at onlamp.com. That author was advocating the use of subqueries to more efficiently filter out redundant rows. Immediately I began to wonder if this is really a feasible approach since MySQL's subquery handling is very slow. I could imagine this being faster on RDBMS where the subquery implementation is more mature. That being said comments in the onlamp.com article point to the fact that even on Oracle things get slower with the …
[Read more]This is just a very short note about the recent license change from LGPL to GPL made by the author of extJS. When choosing an open source product make sure that the contributors are fragmented across enough organizations to prevent any chance of being able to do a license change. If that is not the case make sure that the community is large enough so that you have a good chance at succeeding with a fork if the need arises. In the case of extJS the later seems to be the case. As such the license change itself is not soooo big an issue, since a lot of people do not consider their frontend code to be proprietary anyways. The source is there for all to see. So for the most part people are fine considering their frontend to be licensed under the GPL. That being said, extJS guys are …
[Read more]I spotted an interesting blog post over on Planet OSDB about prepared statements gotchas. It illustrates very well the issue that prepared statements have been plagued with since their inception: namely that they can severely hurt performance (even though they are considered to improve performance by most people).
Just briefly: Why do we even care for prepared statements? For stateless web applications the benefits are mainly protection against SQL injection and better readability. In some rare cases in theory also better performance if the same statement is executed multiple times in the same request. The disadvantage is that for most web applications queries are rarely executed more than once and therefore the separation of parsing/planning and execution just means that there is an …
[Read more]