PointBase, formerly known as DataBahn and DataBean, is legendary Oracle founder Bruce Scott's latest venture. PointBase, an embedded database that's written entirely in Java, is available for a wide variety of platforms. The main advantages of embedded databases are their ultra-small size, self-management capabilities and portability. The PointBase Server Edition is designed to run on a wide variety of hosting platforms and uses a very small footprint. In fact, the Mobile Edition can reportedly consume as little as 270K of memory on the client. These types of databases are ideal for embedded systems and applications that require the services of a full object-relational database without all the associated overhead. PointBase's Mobile Edition, the smaller of the two versions, has been designed to run as part of a lightweight client application. With the Mobile Edition you can store Web data at the client level without requiring complex client-side installation routines. Typically, developers have avoided using such a technique because the complexity in synchronizing the Mobile database with a back-end database is more trouble than it's worth. PointBase's clever "unisync" capability has been designed to address this problem. Through this option you can synchronize data at both ends, making it much more practical to use a client-side Mobile database in your applications.
PointBase allows you to manage the database directly using a JDBC-based API. Therefore, programs that interact with the data can also manage the database as part of their normal processing. Despite the fact that the Product is meant to use a small amount of real estate, it still comes with an impressive number of database features. PointBase supports both SQL-92 and SQL-99 standards as well as Java stored procedures.
Installation and Configuration
PointBase offers restricted versions of the Mobile and Server Editions that you can download free from their Web site. While they're fully functioning, they only let you create a scaled-down database limited to 5MB. The software is packaged in a zip archive format and the installation files are InstallShield Java Edition. I downloaded the PointBase Server Edition archive that contains the Server installation, the client installation kit and the documentation in Adobe PDF format. The installation process itself is incredibly simple and requires little interaction to complete. I had the Server software and the client tools installed in under 10 minutes and the Server utility running shortly after that, as shown in Figure 1.
Working with PointBase
The PointBase Server includes a simple but useful interface for starting and stopping the database as well as monitoring any activity. You can set different levels of messaging that allow you to watch the activities of the Server as it works. PointBase provides three separate interfaces for working with the database - PointBase Commander, PointBase Console and the JDBC APIs. Although I worked mostly with the console, the Commander utility provides a command-line-based interface that allows you to run scripts of commands against the database as necessary. This allows a developer to create batch scripts to build and populate databases without having to write a Java program or being forced to use a visual interface (which doesn't work well for batch-type processing). The PointBase Console provides an interactive interface for working with the database, as shown in Figure 2.
PointBase's marketing literature and documentation are geared toward presenting PointBase as an embedded solution, which is evident when you work with an interactive console. Although I was able to perform most of the standard types of database operations, such as creating tables, viewing the database catalog and importing data, the utility itself is very basic. There are no frills whatsoever, and the forms tend to be sluggish at times, even while running on a fast desktop machine. End users typically wouldn't interact directly with PointBase except through programs that you provide them, so this isn't a real big issue. However, if you're somewhat new to Java and relational databases, you're going to have a tough time working with this interface. Experienced object and relational database developers will have no trouble working with the console; I easily imported some existing Oracle database scripts. The console interface provides a tool for importing data from flat files or from an existing database, and I successfully moved data between the two without difficulty.
The real power of PointBase is its ability to manage all aspects of the database at a low level. Although the database itself is easy to maintain, there are an incredible number of parameters you can set, such as database page size and even encryption algorithms for the database pages. PointBase supports row-level locking, repeatable reads and automatic lock-escalation - quite impressive when you consider the small footprint of the database. With the programming interface you can completely handle backup and recovery within your application code.
One of the main features of PointBase is its ability to synchronize data between client and Server databases. PointBase uses a publish/subscribe model that allows data to be moved over a variety of protocols such as TCP/IP, HTTP, SNA, JINI, IIOP, e-mail and MAPI.
While most database vendors provide similar capabilities for their Mobile versions, PointBase supports heterogeneous database synchronization. For example, client databases can be stored in PointBase and then synchronized with a master database that's stored in Oracle. PointBase even provides interfaces for managing the inevitable data conflicts that occur with distributed databases, as well as a sophisticated API for managing the synchronization process. If you don't have a lot of experience working with databases and Java, you might find yourself getting a little lost, as the documentation and example code that comes with PointBase tends to be a bit skimpy.