[ 
https://issues.apache.org/jira/browse/CASSANDRA-13475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16245246#comment-16245246
 ] 

Dikang Gu commented on CASSANDRA-13475:
---------------------------------------

Update: I'm working with [~bdeggleston] and [~iamaleksey] on the plan, here is 
an updated one:

1. Agree on the scope, expectation, and guidelines of this project.
2. Agree on the boundaries of the storage engine layer.
3. Work out the (high level) designs about how to refactor each major component 
in Cassandra.
4. Create an empty package for a CQLStorageEngine.
5. Migrate read path into the CQLStorageEngine. Keep the Partition interface, 
but move other implementations into the CQLStorageEngine package.
6. Migrate write path into the CQLStorageEngine.
7. Migrate compaction into the CQLStorageEngine.
8. Migrate most of the CFS operations implementations, like create, drop, 
flush, etc into the CQLStorageEngine.
9. Migrate other components, like Cache, Indexes, into CQLStorageEngine.
10. Refactor streaming, move logic into CQLStorageEngine.
11. Refactor repair, move logic into CQLStorageEngine.
12. Refactor each leaky group of cfs components.
13. Refactor each non-cfs system that interacts with storage layer.
14. Refactor metrics.
15. Refactor schema, metadata changes.
16. Extract interfaces from CFS and keyspace.
17. Introduce pluggable Keyspace/CFS factories controlled by schema.

Blake thinks we should prioritize the work on streaming and repair.

After we get consensus on it, I will start to create sub jiras for each of the 
item. 

> First version of pluggable storage engine API.
> ----------------------------------------------
>
>                 Key: CASSANDRA-13475
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13475
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Dikang Gu
>            Assignee: Dikang Gu
>
> In order to support pluggable storage engine, we need to define a unified 
> interface/API, which can allow us to plug in different storage engines for 
> different requirements. 
> Here is a design quip we are currently working on:  
> https://quip.com/bhw5ABUCi3co
> In very high level, the storage engine interface should include APIs to:
> 1. Apply update into the engine.
> 2. Query data from the engine.
> 3. Stream data in/out to/from the engine.
> 4. Table operations, like create/drop/truncate a table, etc.
> 5. Various stats about the engine.
> I create this ticket to start the discussions about the interface.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to