Skip to content

Jot4j

Jot4j is a Java-based implementation of the JOT persistence layer. It aims to support multiple persistence backing services and provide a common interface for implementing the JOT API.

Overview

Jot4j includes a number of sub-projects that provide concrete implementations of persistence for various backing services. Initially support is provided for DynamoDB, but more will be added over time.

Jot4j-dynamodb

The DynamoDB implementation makes use of the Single-table Design pattern, whereby multiple entities and relationships are modeled in a single DynamoDB table. This provides benefits in both performance and simplicity, allowing for greater decoupling of data models and better support for microservices architectures.

Jot4j Mapper

Jot4j uses DynamoDB mapper annotations to define the entities managed in the single-table model. The following mapper objects are supported:

  • Calendar
  • Event
  • Journal
  • ToDo
  • Availability
  • Available
  • Alarm
  • Attachment
  • Group
  • Card
  • CardOrg

Global Search Indexes (GSI)

Jot4j uses three (3) Global Search Indexes to support data retrieval. These GSIs include:

  • GSI1 - Indexed by entity type (e.g. CALENDAR, VEVENT, VALARM, etc.)
  • GSI2 - Indexed by group and/or calendar
  • GSI3 - Indexed by calendar component

Jot4j Commands

Jot4j used the Command pattern to support operations on DynamoDB tables. Commands generally fit into two categories: a Mapper command uses Mapper objects to update data (e.g. Create and Update commands), whilst Table commands are used to directly manipulate a DynamoDB table (e.g. Delete commands).

Commands may also support batch operations whereby multiple entities may be updated in a single call, resulting in improved performance.

Filter Queries

Jot4j supports querying via iCal4j filter expressions, which provide a query language for filtering iCalendar objects.

Comments