Project Requirements - mapr-demos/mapr-music GitHub Wiki

The goals of this project is to build a sample application that will help developers to create application on MapR Converged Data Platform. This application will leverage the MusicBrainz dataset and will create a similar application.

The sample code, and tutorial will cover the techniques used to:

  • create and design MapR-DB JSON tables to represent a Music Catalog, Users, Rating and Recommendations
  • import existing data into MapR-DB JSON
  • expose the database using a REST API
  • developer a modern Web application at the top of the REST API
  • provide analytics queries that could be integrated with reporting tools (Tableau, Clickview, Excel, ...)
  • use machine learning to create a recommendations engine
  • integrate the application with 3rd party system such as search engine, ETL,...

Database Design

This project will use MapR-DB JSON as the main datastore. One of the biggest challenge for developer when they start to develop with NoSQL database is the data model. As part of the development of this project we shoud:

  • explain the database model and the differences between a JSON Document model and a Relational model
  • detail some key choices (subdocument, bucketing, ...)
  • explain how to manage indexes for key queries.

REST API / Service Layer

In the first version of the application, the Service layer should be developed using Java 8, with the following requirements:

This project is built to explain how to develop and deploy with MapR Converged Data Platform. It is key that during development we document:

  • how to build a project
  • the code properly (Javadoc, inline comment for key features)
  • how to package and deploy the application in middleware and container

Note: In a second phase we can develop the same service in various languages (Node, Python) or framework (VertX, SpringBoot).

Web Application

The Web Application should be developed using:

  • Angular
  • MapR Look & Feel (to be defined)

The Web Application will consume the REST API developed at the top of MapR-DB.