// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is licensed under both the GPLv2 (found in the // COPYING file in the root directory) and Apache 2.0 License // (found in the LICENSE.Apache file in the root directory). #pragma once #include #include #include #include #include "rocksdb/types.h" namespace rocksdb { struct ColumnFamilyMetaData; struct LevelMetaData; struct SstFileMetaData; // The metadata that describes a column family. struct ColumnFamilyMetaData { ColumnFamilyMetaData() : size(0), name("") {} ColumnFamilyMetaData(const std::string& _name, uint64_t _size, const std::vector&& _levels) : size(_size), name(_name), levels(_levels) {} // The size of this column family in bytes, which is equal to the sum of // the file size of its "levels". uint64_t size; // The number of files in this column family. size_t file_count; // The name of the column family. std::string name; // The metadata of all levels in this column family. std::vector levels; }; // The metadata that describes a level. struct LevelMetaData { LevelMetaData(int _level, uint64_t _size, const std::vector&& _files) : level(_level), size(_size), files(_files) {} // The level which this meta data describes. const int level; // The size of this level in bytes, which is equal to the sum of // the file size of its "files". const uint64_t size; // The metadata of all sst files in this level. const std::vector files; }; // The metadata that describes a SST file. struct SstFileMetaData { SstFileMetaData() {} SstFileMetaData(const std::string& _file_name, const std::string& _path, uint64_t _size, SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno, const std::string& _smallestkey, const std::string& _largestkey, uint64_t _num_reads_sampled, bool _being_compacted) : size(_size), name(_file_name), db_path(_path), smallest_seqno(_smallest_seqno), largest_seqno(_largest_seqno), smallestkey(_smallestkey), largestkey(_largestkey), num_reads_sampled(_num_reads_sampled), being_compacted(_being_compacted) {} // File size in bytes. uint64_t size; // The name of the file. std::string name; // The full path where the file locates. std::string db_path; SequenceNumber smallest_seqno; // Smallest sequence number in file. SequenceNumber largest_seqno; // Largest sequence number in file. std::string smallestkey; // Smallest user defined key in the file. std::string largestkey; // Largest user defined key in the file. uint64_t num_reads_sampled; // How many times the file is read. bool being_compacted; // true if the file is currently being compacted. }; // The full set of metadata associated with each SST file. struct LiveFileMetaData : SstFileMetaData { std::string column_family_name; // Name of the column family int level; // Level at which this file resides. }; } // namespace rocksdb