System Architecture
Much like a relational database, Mulgara may be used as a data repository for software applications. Mulgara has an open API that supports many industry-standard programming languages and protocols.
Different types of users interact with Mulgara in different ways depending on their needs:
- End users interact with Mulgara indirectly via applications that use Mulgara as the underlying data repository.
- System administrators use iTQL to load metadata into Mulgara, check its status, back up information held, or otherwise administer Mulgara databases.
- Programmers perform the integration between their own applications and Mulgara. Queries to Mulgara databases can be issued via any of the following industry-standard mechanisms:
- iTQL shell
- Simple Object Access Protocol (SOAP)
- iTQL JavaBean
- Mulgara Driver
Each of the above mechanisms connect to a Mulgara driver, which in turn connects to a Mulgara server over a separate communication channel. The communication channel is configurable and determines how a server exposes itself to the world, generally via RMI or SOAP.
Using SOAP allows Mulgara to run on a different server from an organizations' web application server, and still maintain accessibility through the regular corporate firewall. If this is not required (for example, the Java RMI port is opened on the firewall, or the Mulgara server and the web application server are running on the same machine) the JSP tag libraries can communicate with the driver directly using the iTQL bean, effectively removing a level of indirection. The JSP tag libraries and COM object provide convenient methods by which iTQL commands can be sent and answers parsed into suitable formats.
iTQL commands received by the SOAP endpoint are sent to the iTQL interpreter. The interpreter uses a driver to issue commands to Mulgara servers containing the models specified by the command. The driver is responsible for coordinating the distribution of commands to the appropriate servers, and collating the results into a single answer to be returned to the interpreter. The remote server receives method calls from the driver via RMI, and makes the appropriate method calls to the underlying Mulgara database.
Pluggable resolvers, provided with Mulgara or written by third parties, allow Mulgara to query just about any type of data source, including:
- The Mulgara native XA datastore (both local and distributed)
- Lucene models
- XSD datatype models
- Views
- External data sources such as relational databases or Mbox files
See the Resolvers section for more information, including a tutorial on how to write your own resolvers.
Deciding on the appropriate integration method depends on your choice of development tools, platform, operating system and network environment. You should choose:
- JavaServer Pages (JSP) tag libraries when:
- Your application presents a web interface or requires HTML, XHTML or XML publishing
- You are a web developer familiar with JSP technology and don't require the sophistication of servlets
- iTQL shell when you require:
- A text-based interactive interface with Mulgara
- Shell-based scripting for scheduled tasks, for example cron jobs or Windows Services
- Simple Object Access Protocol (SOAP) when you:
- Are developing a non-Java application, for example Perl, PHP or using other socket-based communication
- Have firewall restrictions between Mulgara and your application
- Require SSL or TLS to secure the connection between Mulgara and your application
- iTQL Bean when you:
- Require fine-grain access to a Mulgara server
- Are building third party connectivity libraries
- Are a developer who uses visual JavaBeans development tools, for example IBM VisualAge for Java
- Are a web developer developing sophisticated data-centric web-based applications
- Java RDF (JRDF) when you:
- Require a highly modular and type safe interface allowing users to create, store and query RDF statements
The following sections explore the application integration methods available in more detail and where applicable, provides links to tutorials. The assumption is that you are familiar with the JavaTM language for software development.