[ https://issues.apache.org/jira/browse/CASSANDRA-13475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16213287#comment-16213287 ]
Dikang Gu commented on CASSANDRA-13475: --------------------------------------- [~spo...@gmail.com], back to your comment, here is a little write up of what I think about the responsibility and boundaries for a Cassandra storage engine. ===== A Cassandra pluggable storage engine is the component in Cassandra database sever that is responsible for managing how data is stored, both in memory and disk, and performing actual data I/O operations for a database, as well as enabling certain features sets that target a specific application need. More concretely, the storage engine will be responsible for: 1. Physical Storage: This involves everything from supporting C* data types and table schema, as well as the format used for storing data to physical disk. 2. Query: storage engine will support point query and range query of data stored in the database. 3. Memory Caches: The storage engine may implement row cache or block cache, for query performance optimization. 4. Advanced Data Types: Like list/map/counter, it's up to storage engine whether to support the advanced data types or not. 5. Index Support: It's up to storage engine whether to support secondary index of the stored data or not. The storage engine will NOT be responsible for any distributed or network features, like gossip, replication, streaming, repair, etc. Those features need to be implemented on top of the storage engine. ===== For CFS in the storage engine API, in the future, I'm thinking the CFS will simply be the hold of the metedata for a Cassandra table, so it's convenient to get necessary table metadata inside the storage engine, through the CFS class. But I'm open to change it, and load the metadata inside the storage engine instead. > 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org