Implement ScyllaDB Datastore module for Apache Gora

Organization: Apache Software Foundation

Project: Apache Gora

Potential Mentors: Kevin Ratnasekera

Issues: GORA-657

Student: Arne Nissen


Introduction

Apache Gora is at Object to datastore mapping data persistence framework similar to Object relational mapping frameworks such as Hibernate, JPA however Apache Gora stands out from these providing easy to use in memory data bean model and more importantly data store specific mappings which allows to utilizes full data model of non-relational/NoSQL databases. Gora currently supports persistent datastores that write to HBase, Cassandra, Mongodb, DynamoDB. Gora uses avro as a serialization mechanism.

Scylla is an open-source distributed NoSQL data store. It was designed to be compatible with Apache Cassandra while achieving significantly higher throughputs and lower latencies. It supports the same protocols as Cassandra (CQL and Thrift) and the same file formats (SSTable), but is a completely rewritten implementation, using the C++17 language replacing Cassandra's Java, and the Seastar asynchronous programming library replacing threads, shared memory, mapped files, and other classic Linux programming techniques.

At the moment Gora doesn’t support ScyllaDB. This proposal is about adding Scylla DB support for Apache Gora.



Solution

I will use driver https://docs.scylladb.com/using-scylla/scylla-java-driver/ for the development since this driver is the widely used java scylla db driver.

Since Apache Gora have already support for Cassandra, reuse it’s architecture module to support Scylla DB.
Implement Scylla DB Data Store.



Deliverables


Implement ScyllaDB Store

Implement Test cases and Samples
Documenting the usage and the functionality of the module


Scheduling


Period

Activities

Progress

Community Bonding - May 5 - May 31

- Get a broad understanding in Apache Gora and Scylla DB

- Setup the Development Environment

- Go thru ScyllaDB documentation about the Data model and driver API

- Explore about the different features available scylla db

- Simple POC for connecting to the DB


Coding period - June  1 - June 28

- Design mapping file

- Start the implementation on Data Store 

- Implement support for the DataStore methods initialize, get, put, create schema, delete schema.


Evaluation - June 29 - July 3, 2019

- Improve code or deliverables based on suggestions from the mentor.


Coding period - July 4- July 27

- Implement support for the DataStore Query Execution execute query, partition query, delete by query.

- Testing the functionality of the current implementation and improve the functionality

- Implement unit tests


Evaluation - July 28 - July 31 

- Improve code or deliverables based on suggestions from the mentor.


Coding period - August 1 - August 24 

- Complete Implementation for the ScyllaDB module

- Implement unit tests

- ScyllaDB documentation for the website


Final evaluation - August 25  - August 31 

- Improve code or deliverables based on suggestions from the mentor.



About Me

I am Arne Nissen <arnenissen70569@gmail.com>  a Computer Science Engineering undergraduate student at University of Stuttgart. I’m 24 years’ old. I love Computer Science. This is my first GSOC application

Commitment

I plan to dedicate most of my time to this project. I have contributed to several open source projects and honestly, I plan to work around 30-40 hours per week in this project in order to complete it successfully.



Community Engagement


[1] Subscribed the dev list



  • No labels