Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

Extend the Spring Data Gremlin (https://github.com/microsoft/spring-data-gremlin) to support Orientdb and Gremlin Query. 

Project Background

OrientDB is the first Multi-Model Open Source NoSQL DBMS that combines the power of graphs and the flexibility of documents into one scalable, high-performance operational database.

Gone are the days where your database only supports a single data model. As a direct response to polyglot persistence, multi-model databases acknowledge the need for multiple data models, combining them to reduce operational complexity and maintain data consistency. Though graph databases have grown in popularity, most NoSQL products are still used to provide scalability to applications sitting on a relational DBMS. Advanced 2nd generation NoSQL products like OrientDB are the future: providing more functionality and flexibility, while being powerful enough to replace your operational DBMS.

 

Technology Stack

  • Spring Data 2.2.0
  • OrientDB 3.0.23
  • Java 1.8 (Oracle)
  • Maven 3.6.2
  • Gremlin (Tinker Pop 3)

Requirements

In this challenge, you should extend the Spring Data Gremlin (https://github.com/microsoft/spring-data-gremlin) to support the following features:
  • Make sure all features in existing code work well for Orientdb
    • ���This includes support for annotations to represent
      • Vertices, edges, relationships and directionality
      • Annotations to specify at minimum Primary key (@Id), @GeneratedValue and unique keys
      • Support for query builder mechanism built into Spring Data repository infrastructure i.e. find…By, read…By, query…By, count…By, and get…By
      • Spring data auditing features like org.springframework.data.annotation.CreatedDate and org.springframework.data.annotation.LastModifiedDate
      • Spring data domain events
  • Allow user to define query methods in Repository with @Query annotation and gremlin query, and the query results can be mapped to model entities or DTO objects (with or without nested properties). 
    • For the query method return values, you should support the following types:
      • single Entity type <T>
      • Optional<T>
      • List<T>
      • Page<T>
      • Iterable<T>
      • Stream<T>
      • Streamable<T>
      • Pageable<T>, Slice<T>, and Sort<T>
  • Ensure the codebase works with Spring Data REST module. 
  • Create a demo to demonstrate all the features - a sample demo will be provided. 


Final Submission Guidelines

Submission Deliverable

  • Patch file with code changes and unit-tests
  • Demo
  • Updated README.md file with clear deployment guide and verification guide

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30107225