VML completed a full custom Mark Logic Server implantation that required a multi-tenant architecture. Our substantial research into deploying Mark Logic Server into a multi-tenant environments (which it does not natively support) yielded the Java architecture shown below. Further, we found that the MLS does not directly integrate into 3rd party, ad-hoc reporting tools - all reports had to either leverage existing reports from the MLS or be custom coded (although, more recently at the Mark Logic User Conference 2011, we noted several entities advancing connectivity between Mark Logic Server and relational database applications, like Crystal reports). That effort alone made having a relational database present in the design a necessity. We found that if a relational database is present, the degree of effort to implement Users, Roles, Groups and Permissions was lower than the effort to implement these within MLS.
The figure illustration below shows a 50,000 foot view of VML’s preferred architecture for working with Mark Logic Server in a multi-tenant environment.

Application Architecture
The system is designed as a multi-tenant, 4-tier application architecture with Java, XQuery (Mark Logic API’s) and a Spring framework.
The Java application platform was selected as the system development language for its wide variety of supported frameworks, libraries, and API’s. The API’s that are available through third party tools enables transparent integration of open source application code and modules along with the MarkLogic Server. Leveraging Mark Logic’s XCC library for Java integration with Mark Logic’s built in XQuery modules in this environment offers the full functionality of the features available with the Mark Logic Server Version 4.x.
Mark Logic is the primary repository designed and developed to maintain XML content using a variety of schema/DTDs as the data model to validate well formed XML. With MarkLogic as a content repository, Java is used to create an application to manage Mark Logic’s content object manipulation and content enrichment process. The Java developed portion sof the system are designed to manage users, process, reporting, and multi-tenancy.
The system server creates an enterprise container (the framework in Java Enterprise Edition that establishes the operational rules for running on the web – like security, transaction rules, etc) for the various applications to deploy and enables additional containers to be created that makes multi-tenancy a reality.
The RDBMS (Relational Database Management System) is used for housing content to manage the system servers, generate statistics for reporting, and roles/group/user management. These features are implemented using largely out of the box technologies, while doing this on the MLS would require substantial custom development at greater cost. The RDBMS is not used to store content. Mark Logic is best of breed for native XML storage and manipulation of XML content.
This system is designed as an open-application architecture to allow for greater scope and depth than is capable with the Mark Logic Server alone, while maintaining growth and scaling capabilities. Other third party tools that are integrated into the system platform include Apache’s FOP project that creates the transforms to PDF and other outputs, and DAM or flat file system for inclusion of binary files (such as images, audio, video and other rich media). An Adobe ACS4 server is included.
The hardware platform is based on standard 3-tier web architecture to support load-balancing and horizontal scaling of infrastructure. The Mark Logic Server is on a single server instance for initial product deployment and large disk space allocations for DB and Forest structure.

3 Software Tier Architecture
The architecture provides for scaling the MLS deployment to match the web architecture as operational requirements dictate. The system server and web proxy are on a single server instance for initial production deployment with higher processing and physical memory to support multiple JVM (Java Virtual Machine) instances and containers to house multi-tenant deployments. Each deployment supports various ports and the web proxy has a virtual host to create a proxy to each system deployment port.

Application Architecture 2
Key points of the figure:
- Web Server(HTTP) This will proxy the request from the Client to the Application Server.
- Application Server – 4 Layer architecture
- Presentation – User Interface and User Experience
- Business – Application business logic, business validation, and transaction management
- Persistence – Querying relational information into objects
- Domain Model – Allow objects to communicate between layers
- Data Layer – RDBMS and MLS data store

Components and Modules
Key Points on Figure:
- Presentation Layer –
- Screens and components that will be designed and have custom layout.
- Business/Services Layer –
- Modules for business logic and service calls to 3rd party components.
The business layer is specific to the system implemented and is not discussed here. Several of the business layer capabilities that are general purpose are or will be listed in our module list. The data and data access layers are shown below:

Data Access Layer & Data Layer
Key points on Figure:
- Data Access Layer
- Java API to access xquery modules in MLS Server for content search, ingest, and enrichment.
- Persistence and ORM using Hibernate to access RDBMS. This contains the table structure to support 3rd party applications and component: Report, Authentication, Multi-tenant data, and Configuration
- The XML Repository houses all xml content ingested and xquery modules.
