1. Overview
Document Store for OLE is a content management system with features like checkin, checkout, versioning, locking etc for library records such as Bibliographic, Instance (Holdings and Items), Patron, License etc. Most of the records are in XML format but the Document Store is format agnostic in that it stores the content as is without any type conversion. Furthermore indexing of the stored data is also supported for efficient search and retrieval. Although the Document Store is an independent system that comes with basic UI to enable supported operations, majority of interaction happens from OLE such as ingest of new records, editing of existing records, search and retrievals.
2. Core Technologies
Document Store for OLE uses Apache Jackrabbit 2.0 for content storage and Apache Solr 3.0 for indexing and searching.
3. Architecture
The architecture was designed primarily around the need to store various document types, formats and the volume. Jackrabbit is a content hierarchy of "items". An item can be a node or a property (stores the actual value). For example if one were to store the first name, middle name and and the last name of the person in jackrabbit, there will be a node for person with properties for first name, middle name and last name as properties that store the actual value. In comparison to a traditional RDBMS, nodes can be thought of as tables and properties as columns that have the actual values.
Even though the architecture is flexible i.e. at the time of setup implementors can specify the content hierarchy of the data, the default content hierarchy has been setup assuming three levels i.e document category, document type and document forma as shown in the diagram below;
| 1 - Denotes the 1st level of content hierarchy under the root node which represents document categories. Here its is "Work" | ||||||||||
|
| ||||||||||
|
| ||||||||||
| Patron records will be organized under a new category called "Security". Since there will be limited number of patron records organizing the records in levels is not necessary. The number of records can be handled easily under one single folder node. We can also have versioning on the records on a need basis. | ||||||||||
|
| ||||||||||
| Linking within the docstore is achieved by adding reference properties on the nodes themselves to indicate which node is linked to which other node. In Jackrabbit linking is supported by property called "Reference". In regards to the linking of Bib and Instance records, there can be 1 - Many, Many - Many linking as depicted in the picture. | ||||||||||
|
|
4. Features (Available thru restful services)
Document Store comes with two sets of restful service application programming interfaces (APIs). The first set consists of services for operations against the Document Store which are as follows:
a. Ingest (Single file with one ore more records) - Allows storing of documents in the document store. The input file has to conform with a standard schema.
b. Checkout (Requires a Universally Unique Identified (UUID) (created by Jackrabbit) of the document to be checked out) - Allows for checking out a single file from the Document Store.
c. Checkin (Similar to the Ingest) - Checks in a file with versioning.
d. Browse - To be able to look at the repository file count.
e. Link (Requires UUIDs of two documents) - Allows two records to be linked to each other via their UUIDs.
The second set of services are for the discovery layer. Currently these are straight forward SOLR APIs that are constructed based on the search criteria, examples of which will be provided in the technical section.