Monday, March 7, 2011

A Return To The True Path

If you're trying to explain the Hallmarks of SQL Anywhere but you're pressed for time, here's what you can say instead:

"Watcom does things the way they should be done."
Nowhere in SQL Anywhere does that statement hold true more often than in the choice of default values for various options and settings. For example,
  • string comparisons are case insensitive by default,

  • the database page size is 4K by default,

  • a transaction log is created by default, and

  • string comparisons include trailing blanks by default (in spite of what ANSI says)
and that's just the dbinit utility; there are literally hundreds of other intelligent defaults throughout SQL Anywhere. If all you know is SQL Anywhere that might not seem like such a big thing, but if you're familiar with, say, Oracle or DB2 you know all about dumb defaults.

The fact that dumb default values are so rare in SQL Anywhere is the reason that it's Big News when a dumb default gets fixed. Here's the latest...

Database Checksums Are Now The Default!

When database page checksum validation was first introduced in SQL Anywhere Version 10, the default was "off". That means if you were creating a new database, and you hadn't heard about this new feature, you probably didn't specify dbinit -s and as a consequence your database pages were created without checksums.

And as a consequence of that you didn't receive early notification of database file corruption.

Eventually, all dumb defaults get fixed. That was the case with 4K page sizes (yes, the default was once 2K) and now, with Version 12, dbinit -s is the default which means everyone gets checksums by default.

1 comment:

Gio said...

Hello, I am quite curious about the database checksums option. How exactly does it help you? How do you receive early notification of database corruption.
I am asking this, because we distribute an SA10 database with our programs, and invariably, every month we get at least one corrupted database that needs data recovering.