SQLite - The little database that could
I've tested SQLite and came to the conclusion that it is a very awesome SQL implemention, especially for applications on embedded devices. It's working rather well for web-based projects, too. One thing that concerns me a bit, though, is the database-level locking mechanism. Transactions will probably help with performance but for projects with many concurrent users, the database-level locking may prove to be somwhat of a bottleneck unless one uses the nosync option, which then defeats the purpose of using transactions or may leave the database file corrupted in case of a power outage. This however, is very neat:
Transactions involving multiple attached databases are atomic, assuming that the main database is not ":memory:". If the main database is ":memory:" then transactions continue to be atomic within each individual database file. But if the host computer crashes in the middle of a COMMIT where two or more database files are updated, some of those files might get the changes where others might not. Atomic commit of attached databases is a new feature of SQLite version 3.0. In SQLite version 2.8, all commits to attached databases behaved as if the main database were ":memory:".
If the locking mechanism were to be improved (probably nearly impossible given that there's no database server process), and table inheritance was implemented similar to PostgreSQL's implementation, and MySQL's SQL_CALC_FOUND_ROWS was supported, I'd be in heaven!
Print This Post
PHP5 on Windows XP
I installed Apache2 along with PHP5 on my laptop. Right away I ran into the problem that the "Apache2" service was not registered. Something else was using up port 80. With the help of netstat -lao and a process monitor that actually shows the process IDs I figured out that Skype was the issue. Skype hogs port 80 by default. After disabling it and running apache2.exe -k install -n Apache2 the problem was solved.
Then I tested several of our projects on it. They all seem to work fairly well. Our web framework classes all inhert from the same base class, which used __construct() and __destruct(), something that PHP5 now does natively. With only a minor change the software is now backward compatible with PHP4, yet we're able to take advantage of PHP5's new constructor format. Very nice.
Print This Post
Subversion 1.1 released
Ben Reser sent word to the mailing list that Subversion 1.1 was just released. It contains many small bug fixes, and a few new features. The biggest one is "Non-database repositories":
It's now possible to create repositories that don't use a BerkeleyDB database. Instead, these new repositories store data in the ordinary filesystem. Because Subversion developers often refer to the repository as "The Filesystem", we have adopted the rather confusing habit of referring to these new repositories as "fsfs" repositories… that is, a Filesystem implementation that uses the OS filesystem to store data.
Also, symlinks can be versioned as well. Renamed files are traced better, support for localized messages (aka I18N), speed improvements, and "sharable working copies" — which I don't quite understand. It sounds like a feature that really defeats the purpose of version control.
Print This Post