[
https://issues.apache.org/jira/browse/CASSANDRA-13475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226828#comment-16226828
]
Aleksey Yeschenko commented on CASSANDRA-13475:
-----------------------------------------------
I’m with Blake on this.
Now, I’ll be upfront: I’m not 100% sold on the idea of making the storage
engine pluggable, although I am warming up to it, at least if someone did a
really good job.
What I was expecting from the patch:
1. Keyspace abstracted away, ColumnFamilyStore (Table) interfaces extracted,
with all sstable/compaction/etc. specific logic isolated into concrete default
engine implementation
2. Some kind of StorageEngine interface that would consume metadata and return
initialized engine-specific instances of Keyspace/Table classes
3. Abstracted away metadata, now that I think of it; default compaction,
compression, and other params don’t make sense for rocksdb engine, I assume,
nor would they for some other non-default implementations; also should be able
to set options for non-default engine via CQL
4. Same goes for metrics; you’d be still creating all the default metric per
ks/table, many of which making no sense in other engines; leaky
5. Acknowledgement and enumeration of everything that needs to be modified. And
a lot needs to be - from startup checks to periodic tasks, to even some read
logic that uses CFS for row size estimation
Assuming that the engine would be set on per-keyspace basis (which IMO makes
most sense), Keyspace and CFS would be the primary extension points; not
‘CFS/Keyspace will become a thin wrapper around the storage engine API’, but
the exact opposite.
The suggested patch/API is very minimal, and not in a good way. It’s a hacky
default engine bypass mechanism, not a proper abstraction of the storage
engine, and not even a good starting point, imo :\
More importantly, I feel like the full scope of a properly implemented
abstracted out storage engine is realized; done right, it’s a *huge* effort. I
would like to see some kind of plan, with the full scope at least described,
and perhaps suggested phases/steps of getting there.
> 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.
> 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]