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

Sylvain Lebresne commented on CASSANDRA-13475:
----------------------------------------------

To chime in a bit here and for what it's worth, I concur with Blake's sentiment 
than a 'pluggable storage engine' is basically not imo realistic at this point.

The Cassandra is everything but modular, we've never really be terribly careful 
in isolating the different parts of the code behind clearly defined and well 
isolated interfaces/APIs. Why that is can probably be debated for hours on end, 
and it's a big code-base so there is certainly parts that are much better than 
others. But on the whole, I'm not sure how one could qualify our story around 
modularity and abstraction of high level concepts
in other terms than "it's a mess".

So, and I'm kind of paraphrasing Blake here, I do feel that talking about a 
pluggable storage API today is completely missing step 1, which is a pretty 
massive refactor of the code to modularize and abstract much more cleanly the 
different part of the code base. Trying to bolt a pluggable storage API on our 
current mess without that first step would, in my professional opinion, but a 
terrible mistake for the project: I suspect it'll create a maintenance mess 
while having minuscule changes to bear real fruits.

And I hope no-one is underestimating that first step: if I had to guess, and 
assuming we're talking about doing this is in a somewhat incremental way so it 
doesn't disturb all other dev in the meantime, I'd say it's _at the bare 
minimum_ a full-time one man-year project assuming a solid engineer that is 
pretty familiar with the code base to start with. I'd be of course the first to 
admit I suck at that kind of estimation so I'm probably way off, but I also 
can't remember the last time I _under_estimated something like that.

Don't get me wrong, I'd be very happy to see someone start to tackle that first 
step seriously, I think it's actually important for the project moving forward, 
but we're imo a long long way from being in a state where we can start to talk 
seriously about having pluggable storage engine in a clean way.



> 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