inQuiry Service
Last updated
Last updated
Sunbird inQuiry Service is the backend service used from inQuiry Editor and Player. This service is also called as Question & QuestionSet service.
Question and Question set service is a micro-service which provides APIs to manage the lifecycle and workflows of creation and consumption of question & question set objects.
More details on the player can be found here and here.
Question & Question Set Service architecture is as below,
Below is a high level picture of how the sequence of flow happens for some of the critical apis. The flow is similar to other API end points in inQuiry.
This also shows the usage of Knowlg core in the flow of inQuiry apis.
QuestionSet Create
QuestionSet Read
QuestionSet Update
Question Create
The detail on how the data is saved and retrieved is not depicted in above sequence of flow as it is part of Knowlg core library.
Databases
Neo4J (Primary Data Storage. inQuiry store all objects (e.g: Question/QuestionSet/ObjectCategory, etc) simple/lite metadata (e.g: name, description, createdOn, etc) in graph)
Cassandra (Secondary data Storage. inQuiry stores all complex/bulk data in this storage. For more information, please refer to external section of each object config (config.json) to see what all data gets stored in secondary storage for particular object.)
Elastic Search (Data Stored in Grpah Database (Primary Data Storage) gets replicated in Elasticsearch through data pipeline. So that user can search data based on different criteria (e.g: need to search science subject questions for class 5))
Redis (Used for caching the question / questionSet information. It only stores object which are ready for consumption (objects in Live status))
Cloud Storage (Used to store assets like media, question/questionset bundles, artifacts in the cloud storage)
Important Folder / Package structure
Sub Components
Question API
This is used for question management like create, read, update, review, publish etc.
QuestionSet API
This is used for question set management like create, read, update, review, publish etc.
Flink Jobs Used
async-questionset-publish [Used for Question and QuestionSet publish]
Details are listed here for the below specified dependencies
Sunbird Telemetry Specification
Sunbird Obsrv (Optional)
The APIs exposed by the micro service is available here