Saturday, June 5, 2010

Innovator-C and What Ain't Free, Part Three

Picking up where we left of yesterday...

No Parallel backup/restore

If you're using Onbar and a Storage Manager to manage your backups you can back up dbspaces in parallel and reduce your backup times.

This is only beneficial if both of the following are true:

1. Your Storage Manager is writing to multiple media (i.e. you're backing up to multiple disk drives or tapes) in parallel.

2. Your Dbspaces are on different disk drives so reading 2 dbspaces in parallel actually reads from 2 drives in parallel.

And this really only comes into play if your databases are big enough to actually make you concerned about backup times.

My guess is that a lot of adopters of Innovator-C will simply use ontape to disk as a backup solution, probably with the following command

ontape -s -L 0 -t STDIO | gzip -c > backup.gz

No Partitioning

Partitioning is splitting up the data in a table, usually by some kind of expression.

Something along the lines of put rows for a table with column1 = 1 in partition1, column1 = 2 in partition2, column1 = 3 in partition3 and everything else in partitionRemainder.

One benefit of doing this is partition elimination for queries. If your SQL where clause has 'and column1 = 2' in it, Informix will know it only has to look at the rows in partition2 and won't scan partitions 1, 3 and Remainder and this can improve performance of your big daddy reporting type queries.

Another benefit of parititioning is the ability to put partitions on different physical disks, if PDQ and partitioning were available in Innovator-C you could place each of the above partitions on individual disks and scan each of the partitions/disks in parallel.

The final benefit of partitioning (that I'm going to talk about anyway) is partition detach. Detaching a partition is a super fast way to remove data from a table. If you have a large table that has a partition defined for each date of a transaction (rows with a transaction date of 04/03/2002 go into a specific partition) when you want to delete all of the rows for 04/03/2002 you can detach this partition and the rows no longer belong to the table. This is a lot faster and a lot less resource intensive than performing a delete of rows with a transaction date of 04/03/2002.

So there is all of the stuff that makes partitioning awesome in my mind, too bad it isn't available in Innovator-C. Even without this feature Innovator-C is still a great fit for most projects. Partitioning really comes into play when your databases are very big (Terabyte big) and the philosophy behind Innovator-C is that you'll use it to start your project or business for free and become so successful that you'll upgrade to a for purchase version with more features and support.

No Column Level Encryption

Like the name suggests Column level encryption gives you the ability to encrypt one or more columns in a table during insert or update statements and decrypt the columns in a select statement.

A nice feature for built-in encryption within the engine, but if you need encrypted data in Innovator-C you can perform the encryption/decryption within your application.

A little more work if you need to encrypt columns and not as efficient as built-in encryption functionality but not a show stopper for me. Again, this is a relatively new feature and people were doing real world stuff with Informix before it had column level encryption.

No Compression

This is an add on feature for all for purchase versions of Informix, so no big surprise it is excluded in the free version.

Only relevant in very very large installations, I have no problems with it being excluded.

No Label based access control (LBAC)

My feelings on this one, if you need Label Based Access Control you are a government operation or a big corporation that isn't going to be too interested in a free community based support database engine.

I could be wrong and I'd like to hear from you if I am.

No Last commit concurrency

A friend of mine is really upset about this being left off the list. For the kind of applications I support (OLTP written in Python, PHP and ESQL/C) this feature doesn't help or hurt me, I noticed no difference in performance when I enabled it. My friend says there are locking performance problems in Hibernate without this feature, I've asked him to come on and comment more about this. I'm not sure if it is specific to his environment or the Hibernate implementation but I have to believe there is a work around that can make Innovator-C and Hibernate compatible.

This is a recent 11.5 feature and I'm pretty sure people were using Hibernate when this feature didn't exist so it can't be that much of a deal breaker.

No comments:

Post a Comment