Top-notch Auditing an Impressive Add-on for Pervasive.SQL

Pervasive.SQL and its ancillary tools may be a serious contender for the business of software companies needing an embedded database engine.

by Joe Lax

Jan 23, 2004

f you sell a product that needs a database, you have a business quandary on your hands, namely: "What database should I use? Will my customers have SQL Server? Oracle? DB2?"

Some vendors will choose to create and maintain multiple versions of their productswith all the attendant costsso they can support multiple platforms. But there is another solution. You can choose to bundle an embedded database engine with your product. This way, regardless of what database the customer has, (including possibly none) you only need to support one version of your product. If you are considering the latter alternative, then you need to take a serious look at Pervasive SQL 8.5 from Pervasive Software.

Retrieving Btrieve
While the name Pervasive is quite catchy, the database engine has a much longer and distinguished history under another name. Pervasive SQL was originally Btrievethe same Btrieve that was used by Novell to support all its internal needs for NetWare. Btrieve had a well-earned reputation for robustness and stability. I personally used Btrieve on one of the first applications I worked onan in-house application for a major bank. The database ran consistently without any issues. The one issue that arose was actually due to a disk failure, not the software. The Pervasive database is built on that same Btrieve engine, enhanced over the years with new features as each new version was released.

Pervasive supplies a very interesting mix of technologies. On the one hand, you can program against the database using standard ANSI SQL. This is certainly the route you will want to take with queries and reports. But Pervasive also allows you to go under the hood and bypass SQL totally. Normally you would write some SQL that instructs the database to interpret your request, create an optimized plan, and then execute it. With Pervasive you can use low-level operations to access the data directly. These low-level operations allow you to open the database file using a specified index, find the first matching record according to the specified filter, and modify, insert, or delete the given record as you wish. You can also set options at the engine level regarding transaction isolation levels or even choose not to support transactions at all.

Having these choices means that as a product company, you can hand code the core operations of your product and ensure that performance will be consistent with your needs and stay that way, even without a database administrator available to tune the engine and databases (as in other products) over time.

Figure 1. Audit Viewer: Audit Master makes it easy to see what tables have changed and when.

Pervasive also provides a cache on the client side and the ability to reconnect after a broken connection without losing state information. Last but certainly not least, Pervasive comes in versions for NT and for Linux. Not all databases support those platforms.

Because the product is meant to be used as an embedded database engine, the true test of ease of use is when programming against it. On that side, Pervasive provides a full set of printed documentation (enough to fill a decent sized box) with the product. While exhaustingly complete, it's also quite usable and helpful and is also available online.

The product also comes with a tool to help you add the installation of the Pervasive engine and database files to your product installation.

As regards to actual programming, Pervasive does support standard ANSI SQL and comes with an OBDC driver. But to program against the database at a lower level, you will have to learn Pervasive's own API. Fortunately, there are only a dozen functions that you need to learn for most situations.

Auditing Changes
If your product handles sensitive data, you will also want to look at a software add-on by Pervasive called Audit Master. With other database engines, creating an audit log requires hand coding of the necessary triggers. But with Audit Master, you can simply point to a Pervasive database and choose the tables you want audited. Once the log has been configured, it will start up automatically whenever the database engine is started.

The Audit Viewer displays the changes to your database in a very easy to understand format (see Figure 1). It also has a Query Builder, that lets you easily set up the auditor to filter for only the specific changes that interest you (see Figure 2). Additionally, you can set up an alert so that when a particular type of change occurs (for example, when a particular column representing an account status in your database is changed), Audit Master sends an e-mail to whatever address you like. This feature is very useful for spotting possible fraud and taking action when it happens vs. finding out about it after the fact.

Given the recent emphasis in both health care and the financial world on accountability and correctness of data, the availability of the Audit Master tool should be a strong selling point for Pervasive. I wish I had this type of tool with other databases that I use, too.

Achilles in Analytics
Because Pervasive is meant to be an embedded database engine, it lacks some of the features now commonly found in other database environments. Both Oracle and SQL Server come with data warehousing, data mining, and reporting services built in. If you need that type of business intelligence and data analysis, Pervasive isn't the right product for you. And while Pervasive supports replication, you actually need to buy another product from Pervasive (Data Exchange) to implement it.

Pervasive comes in different flavors. The workstation version has a list price of $25 dollars per seat. The server version has a list price of $845 for six concurrent users. Audit Master is an add-on, with a list price of $495 for six users. Call the company for OEM pricing.

Joe Lax has worked in various database environments for more than 10 years. As the principal of DB Directions, he provides guidance and direction on all aspects of database management. Reach him .