[
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: [email protected]
For additional commands, e-mail: [email protected]