PragmaTwice commented on code in PR #2296:
URL: https://github.com/apache/kvrocks/pull/2296#discussion_r1597649171
##########
src/storage/storage.h:
##########
@@ -122,6 +116,78 @@ struct DBStats {
alignas(CACHE_LINE_SIZE) std::atomic<uint_fast64_t> keyspace_misses = 0;
};
+class ColumnFamilyConfig {
+ public:
+ ColumnFamilyConfig(ColumnFamilyID id, std::string_view name, bool is_minor)
+ : id_(id), name_(name), is_minor_(is_minor) {}
+ ColumnFamilyID Id() const { return id_; }
+ std::string_view Name() const { return name_; }
+ bool IsMinor() const { return is_minor_; }
+
+ private:
+ ColumnFamilyID id_;
+ std::string_view name_;
+ bool is_minor_;
+};
+
+constexpr const std::string_view kPrimarySubkeyColumnFamilyName = "default";
+constexpr const std::string_view kMetadataColumnFamilyName = "metadata";
+constexpr const std::string_view kSecondarySubkeyColumnFamilyName =
"zset_score";
+constexpr const std::string_view kPubSubColumnFamilyName = "pubsub";
+constexpr const std::string_view kPropagateColumnFamilyName = "propagate";
+constexpr const std::string_view kStreamColumnFamilyName = "stream";
+constexpr const std::string_view kSearchColumnFamilyName = "search";
+
+class ColumnFamilyConfigs {
+ public:
+ /// DefaultSubkeyColumnFamily is the default column family in rocksdb.
+ /// In kvrocks, we use it to store the data if metadata is not enough.
+ static ColumnFamilyConfig PrimarySubkeyColumnFamily() {
+ return {ColumnFamilyID::PrimarySubkey, kPrimarySubkeyColumnFamilyName,
/*is_minor=*/false};
+ }
+
+ /// MetadataColumnFamily stores the metadata of data-structures.
+ static ColumnFamilyConfig MetadataColumnFamily() {
+ return {ColumnFamilyID::Metadata, kMetadataColumnFamilyName,
/*is_minor=*/false};
+ }
+
+ /// SecondarySubkeyColumnFamily stores the score of zset or other secondary
subkey.
+ /// See https://kvrocks.apache.org/community/data-structure-on-rocksdb#zset
for more details.
+ static ColumnFamilyConfig SecondarySubkeyColumnFamily() {
+ return {ColumnFamilyID::SecondarySubkey, kSecondarySubkeyColumnFamilyName,
+ /*is_minor=*/true};
+ }
+
+ /// PubSubColumnFamily stores the pubsub data.
+ static ColumnFamilyConfig PubSubColumnFamily() {
+ return {ColumnFamilyID::PubSub, kPubSubColumnFamilyName,
/*is_minor=*/true};
+ }
+
+ static ColumnFamilyConfig PropagateColumnFamily() {
+ return {ColumnFamilyID::Propagate, kPropagateColumnFamilyName,
/*is_minor=*/true};
+ }
+
+ static ColumnFamilyConfig StreamColumnFamily() {
+ return {ColumnFamilyID::Stream, kStreamColumnFamilyName,
/*is_minor=*/true};
+ }
+
+ static ColumnFamilyConfig SearchColumnFamily() {
+ return {ColumnFamilyID::Search, kSearchColumnFamilyName,
/*is_minor=*/true};
+ }
+
+ /// ListAllColumnFamily returns all column families in kvrocks.
+ static const std::vector<ColumnFamilyConfig> &ListAllColumnFamily() { return
AllCfs; }
Review Comment:
```suggestion
static const std::vector<ColumnFamilyConfig> &ListAllColumnFamilies() {
return AllCfs; }
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]