Challenge Overview
Challenge Objectives
Extend the Spring Data plugin for the OrientDB to add filters support.
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.
There is an existing spring data plugin for OrientDB: https://github.com/orientechnologies/spring-data-orientdb, but it’s outdated and no longer working with latest OrientDB.
It’s intended to create a fresh Spring Data plugin based upon the latest OrientDB API rather than update this outdated plugin.
Technology Stack
- Spring Data 2.2.0
- OrientDB 3.0.23
- Java 1.8 (Oracle)
- Maven 3.6.2
Requirements
We want to replicate the filters feature from the neo4j: https://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference:filtersWe want the following method to supported by the Repository:
- findAll(Filters, Sort, Pageable, depth)
- all are optional
The filter should support all existing comparison operators, AND, OR like the findByXXX.
It should also support filtering by nested property name (1 level, either coming from a nested vertex or a nested edge). Ensure you test with both a single or a collection of nested vertices or edges.
Make sure the Filters API follow that in neo4j so that the client can adopt this easily.
Final Submission Guidelines
Submission Deliverable
- Patch file
- Updated Unit tests
- Updated demo
- Updated README.md file with clear deployment guide and verification guide