Cerebellum Software Inc. recently announced the latest release of their innovative data access middleware and query application development environment Cerebellum 1.3, which replaces the tedium of coding SQL queries with a drag-and-drop visual programming approach. Using Cerebellum, queries are saved as agents, which are units of compiled Java code that communicate with data sources in their native tongue. These agents are managed by servers called agencies that mediate between the workstations that run the queryclient applications. This middleware approach provides a unified way to access, integrate and manage data from a variety of databases and data sources at different physical locations. Cerebellum is based on Java 2 Enterprise Edition technology and incorporates features from CORBA.
I tested Cerebellum in a single workstation environment on a mid-range Pentium II-266 workstation with 128 MB RAM and running Windows NT 4.0 SP3. Full installation of Cerebellum with documentation and examples required 30 MB of disk, not counting the necessary JDK 1.2.2 and database packages. (I used MS Access and the shareware version of MySql.) Cerebellum runs on any platform supporting Java 2 with installation instructions provided for Windows and UNIX systems.
Cerebellum is designed from the start to run in a complex business, corporate or enterprise network environment. The major components NameServer, Agency and Client can run on the same or different machines. The terminology used by Cerebellum is a little confusing initially. The NameServer (different from a Domain Name Server) provides the central repository for information linking the objects in a Cerebellum system. An agency runs the agents that translate to the actual data sources: either databases or external applications.
The standalone installation script simplifies configuring Cerebellum for use on a single machine, which is typical of a smaller business setting. The advanced configuration provides flexibility in placing the NameServer and Agencies on different workstations to support large enterprise solutions. I installed my standalone single workstation configuration in about 10 minutes. Complex configurations involving multiple databases and servers can take several hours to plan and install. I recommend that a new user first experiment with the standalone environment and prototype a few queries before proceeding to plan and install a full enterprise configuration.
The value of a data access middleware product is its ability to work with many data sources. Cerebellum supports relational database products from Oracle, Sybase, Informix and Microsoft, and the shareware MySql database. A JDBCODBC bridge connects Cerebellum to any database that has an ODBC driver.
Cerebellum supports interaction with applications running on IBM's mainframe CICS and imports information stored as ordinary files. Support is planned in future versions for access to data from SAP applications, object database management systems, Enterprise JavaBeans and LDAP directories. Because of Cerebellum's data-independent architecture, existing Cerebellum queries can be modified easily to use these new data sources.
Creating a Query
Before we get to build our queries, we need to perform some administrative functions using the Administrator tool (see Figure 1). Cerebellum's integrated data access approach is based on a common virtual data model. A binding plan specifies how columns in the virtual data model (the virtual source) map to specific columns in specific databases (physical sources). This binding plan deals with the fact that the same data columns may be called differently in different databases. We must identify data that's semantically the same even though labeled differently (e.g., "Full Name" and "Employee Name"), and different even though labeled the same (e.g., "Name" of product and "Name" of a contractor). Once the binding plan has been created, it's reused in future queries. The Administrator tool also provides functions to organize users, groups and projects, and to assign access privileges.
Once the setup functions are complete, you're ready to create queries using the Designer user interface tool. Query applications are developed, without writing any SQL code, by dragging and dropping a combination of 12 "glyphs," the basic units of Cerebellum's graphical query language, onto a worksheet or canvas. Each glyph represents a predesigned code fragment that performs a specific action (see Figure 2). You connect glyphs together with arrows to represent the flow of data through a query. A query can be as simple as a single glyph that retrieves data from a particular source, or it can involve multiple sources, joins, manipulations and transactions.
Different glyphs do different sorts of work. Some serve as sources of data; others extract data; still others manipulate data, delete data from data sources or write data to data sources. The 12 glyphs are source, select, filter, join, expression, aggregate, sort, set operation, insert, update, delete and stored procedure. While Cerebellum hides the differences in SQL dialects across different database vendors, some basic knowledge of SQL and database query techniques is definitely useful to make the most effective use of Cerebellum.
When complete, the query is stored, ready to use as a standalone query application, or it can generate an agent to be called from a Web page or used as a component of another application. Cerebellum 1.3 features three APIs for developers: C++/CORBA, JDBC and ActiveX. Cerebellum provides a set of Java libraries that allows Java programs access to query creation and execution features.
I've touched on just a few of the very powerful features provided by Cerebellum. One limitation is the lack of integration with configuration and version control systems, often standard in enterprise settings. Cerebellum is most effective in situations that require integration of data from more than two databases. The greater the number of different databases or data servers, the more Cerebellum will simplify your work and improve your productivity.