Object Store

Overview

Object Store is a storage module for MOSIP named as Khazana. The module is an abstraction of storage layer used across Registration Client, Packet Manager, Datashare or Durian for packets and biometric data.

Khazana provides following adapters to store objects

  1. POSIX - Supports storage of packets on a filesystem. Its typically used by registration client to store packets locally on the machine. This adapter is not receommended for usage in low latency environments like packet manager.

  2. S3 - S3 is one of the well known API for object stores. AWS Java S3 Client is used in Khazana to support any S3 compliant object storage solutions.

  3. Swift - An object storage system from Openstack. Swift has published API's and Khazana supports the same on experimental basis using JOSS SDK. This works with any Swift or Swift compliant object storage solutions.

Object Store is used for following purpose wihin mosip

  1. Registration Client - Encrypted packets

  2. Pre-registration - Uploaded Documents

  3. Idrepo - Individual's biometrics and documents

  4. Datashare - On demand individual's biometrics, documents and other information.

As part of our sandbox deployment we have provided an example use case with minio for on-prem deployment and AWS S3 with AWS deployment. Object Store is installed as part of default sandbox deployment.

Note: Please note its important to choose the right partner for object storage and work with them to scale acordingly. Please follow the hardware estimate for Object Store based on respective Object store products.

The below is the list of S3 Java API's used by MOSIP. This can be used to understand the vendor compatibility. Khazana does not use any internal business logic and is purely an storage abstraction layer.

Java API Used by MOSIPS3 Documentation URL

getConnection(bucketName).getObject(bucketName, finalObjectName)

getConnection(bucketName).getObjectMetadata(bucketName, finalObjectName)

doesBucketExistV2(bucketName)

createBucket(bucketName)

getObjectMetadata()

getObjectMetadata().getUserMetadata()

addUserMetadata(m.getKey(), m.getValue())

PutObjectRequest(bucketName, finalObjectName, s3Object.getObjectContent(), objectMetadata)

getRequestClientOptions()

setReadLimit(readlimit)

putObject(putObjectRequest)

deleteObject(bucketName, objectName)

listObjects(account, searchPattern)

getObjectSummaries()

listObjects(searchPattern)

getObjectSummaries()

doesObjectExist(bucketName, finalObjectName)

GetObjectTaggingRequest(bucketName,finalObjectName)

getObjectTagging(getObjectTaggingRequest)

SetObjectTaggingRequest(bucketName,finalObjectName,objectTagging)

setObjectTagging(setObjectTaggingRequest)

Last updated

Copyright © 2021 MOSIP. This work is licensed under a Creative Commons Attribution (CC-BY-4.0) International License unless otherwise noted.

#300: Mock Services -1st draft

Change request updated