SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnCfg.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3 */
4 
5 #ifndef swcdb_ranger_db_ColumnCfg_h
6 #define swcdb_ranger_db_ColumnCfg_h
7 
11 
12 namespace SWC { namespace Ranger {
13 
14 
15 class ColumnCfg final : public Core::NotMovableSharedPtr<ColumnCfg> {
16  public:
17 
19 
20  const cid_t cid;
22  const uint8_t meta_cid;
24 
26 
29 
33 
37 
41 
43 
45 
46 
48  ColumnCfg(const cid_t a_cid, const DB::SchemaPrimitives& schema)
49  : cid(a_cid),
50  range_type(
51  DB::Types::SystemColumn::get_range_type(cid)),
52  meta_cid(
53  DB::Types::SystemColumn::get_sys_cid(schema.col_seq, range_type)),
54  key_seq(schema.col_seq),
55  col_type(schema.col_type),
56  c_versions(schema.cell_versions),
57  c_ttl(uint64_t(schema.cell_ttl) * 1000000000),
58  blk_enc(schema.blk_encoding),
59  blk_size(schema.blk_size),
60  blk_cells(schema.blk_cells),
62  cs_size(schema.cs_size),
63  cs_max(schema.cs_max),
68  deleting(false) {
69  }
70 
71  ColumnCfg(const ColumnCfg&) = delete;
72 
73  ColumnCfg(const ColumnCfg&&) = delete;
74 
75  ColumnCfg& operator=(const ColumnCfg&) = delete;
76 
77  ~ColumnCfg() noexcept { }
78 
79  void update(const DB::SchemaPrimitives& schema) const {
80  col_type.store(schema.col_type);
81 
83  c_ttl.store(uint64_t(schema.cell_ttl) * 1000000000);
84 
85  blk_enc.store(schema.blk_encoding);
86  blk_size.store(schema.blk_size);
87  blk_cells.store(schema.blk_cells);
88 
90  cs_size.store(schema.cs_size);
91  cs_max.store(schema.cs_max);
92 
96 
98  }
99 
102  return col_type.load();
103  }
104 
106  uint32_t cell_versions() const {
107  return c_versions.load();
108  }
109 
111  uint64_t cell_ttl() const {
112  return c_ttl.load();
113  }
114 
115 
119  return tmp == DB::Types::Encoder::DEFAULT
120  ? DB::Types::Encoder(Env::Rgr::get()->cfg_blk_enc->get())
121  : tmp;
122  }
123 
125  uint32_t block_size() const {
126  uint32_t tmp(blk_size);
127  return tmp ? tmp : Env::Rgr::get()->cfg_blk_size->get();
128  }
129 
131  uint32_t block_cells() const {
132  uint32_t tmp(blk_cells);
133  return tmp ? tmp : Env::Rgr::get()->cfg_blk_cells->get();
134  }
135 
137  uint8_t file_replication() const {
138  uint8_t tmp(cs_replication);
139  return tmp ? tmp : Env::Rgr::get()->cfg_cs_replication->get();
140  }
141 
143  uint32_t cellstore_size() const {
144  uint32_t tmp(cs_size);
145  return tmp ? tmp : Env::Rgr::get()->cfg_cs_sz->get();
146  }
147 
149  uint8_t cellstore_max() const {
150  uint8_t tmp(cs_max);
151  return tmp ? tmp : Env::Rgr::get()->cfg_cs_max->get();
152  }
153 
155  uint8_t log_rollout_ratio() const {
156  uint8_t tmp(log_rout_ratio);
157  return tmp ? tmp : Env::Rgr::get()->cfg_log_rollout_ratio->get();
158  }
159 
161  uint8_t log_compact_cointervaling() const {
162  uint8_t tmp(log_compact);
163  return tmp ? tmp : Env::Rgr::get()->cfg_log_compact_cointervaling->get();
164  }
165 
167  uint8_t log_fragment_preload() const {
168  uint8_t tmp(log_preload);
169  return tmp ? tmp : Env::Rgr::get()->cfg_log_fragment_preload->get();
170  }
171 
173  uint8_t compact_percent() const {
174  uint8_t tmp(compact_perc);
175  return tmp ? tmp : Env::Rgr::get()->cfg_compact_percent->get();
176  }
177 
178  void print(std::ostream& out) const {
179  out << "col(";
180  if(deleting)
181  out << "DELETING ";
182  out
183  << "cid=" << cid
184  << " seq=" << DB::Types::to_string(key_seq)
185  << " type=" << DB::Types::to_string(col_type)
186  << " range_type=" << DB::Types::to_string(range_type)
187  << " meta_cid=" << int(meta_cid)
188  << " compact=" << int(compact_perc.load()) << '%'
189  << ')'
190  << " cell(versions=" << c_versions.load()
191  << " ttl=" << c_ttl.load()
192  << ')'
193  << " blk(enc=" << Core::Encoder::to_string(blk_enc)
194  << " size=" << blk_size.load()
195  << " cells=" << blk_cells.load()
196  << ')'
197  << " cs(replication=" << int(cs_replication.load())
198  << " size=" << cs_size.load()
199  << " max=" << int(cs_max.load())
200  << ')'
201  << " log(rollout=" << int(log_rout_ratio.load())
202  << " compact_cointervaling=" << int(log_compact.load())
203  << " preload=" << int(log_preload.load())
204  << ')';
205  }
206 
207  friend std::ostream& operator<<(std::ostream& out, const ColumnCfg& cfg) {
208  cfg.print(out);
209  return out;
210  }
211 
212 };
213 
214 
215 }}
216 
217 #endif // swcdb_ranger_db_ColumnCfg_h
SWC::Ranger::ColumnCfg::log_compact_cointervaling
SWC_CAN_INLINE uint8_t log_compact_cointervaling() const
Definition: ColumnCfg.h:161
SWC::Config::Property::Value_uint8_g::get
SWC_CAN_INLINE uint8_t get() const noexcept
Definition: Property.h:535
SWC::DB::SchemaPrimitives::blk_cells
uint32_t blk_cells
Definition: Schema.h:166
SWC::Ranger::ColumnCfg::operator<<
friend std::ostream & operator<<(std::ostream &out, const ColumnCfg &cfg)
Definition: ColumnCfg.h:207
Schema.h
SWC::Ranger::ColumnCfg::operator=
ColumnCfg & operator=(const ColumnCfg &)=delete
SWC::Core::AtomicBase< bool >
SWC::Env::Rgr::cfg_compact_percent
const SWC::Config::Property::Value_uint8_g::Ptr cfg_compact_percent
Definition: RangerEnv.h:171
SWC::Ranger::ColumnCfg::deleting
Core::AtomicBool deleting
Definition: ColumnCfg.h:44
SWC::Ranger::ColumnCfg::block_size
SWC_CAN_INLINE uint32_t block_size() const
Definition: ColumnCfg.h:125
SWC::Core::Atomic< DB::Types::Column >
SWC::Ranger::ColumnCfg::cs_max
Core::Atomic< uint8_t > cs_max
Definition: ColumnCfg.h:36
SWC::Core::Encoder::Type
Type
Definition: Encoder.h:28
SWC::DB::Types::to_string
const char *SWC_CONST_FUNC to_string(Column typ) noexcept
Definition: Column.cc:38
SWC::Env::Rgr::cfg_log_compact_cointervaling
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_compact_cointervaling
Definition: RangerEnv.h:168
SWC::DB::SchemaPrimitives
Definition: Schema.h:23
SWC::DB::Types::Column
Column
Definition: Column.h:18
SWC::Env::Rgr::cfg_log_rollout_ratio
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_rollout_ratio
Definition: RangerEnv.h:167
SWC::DB::SchemaPrimitives::cs_size
uint32_t cs_size
Definition: Schema.h:167
SWC::Ranger::ColumnCfg::cs_replication
Core::Atomic< uint8_t > cs_replication
Definition: ColumnCfg.h:34
SWC::Config::Property::Value_int32_g::get
SWC_CAN_INLINE int32_t get() const noexcept
Definition: Property.h:610
SWC::Env::Rgr::cfg_cs_sz
const SWC::Config::Property::Value_int32_g::Ptr cfg_cs_sz
Definition: RangerEnv.h:165
SWC::Core::Encoder::Type::DEFAULT
@ DEFAULT
SWC::Ranger::ColumnCfg::range_type
const DB::Types::Range range_type
Definition: ColumnCfg.h:21
SWC::Ranger::ColumnCfg::file_replication
SWC_CAN_INLINE uint8_t file_replication() const
Definition: ColumnCfg.h:137
SWC::Ranger::ColumnCfg::c_versions
Core::Atomic< uint32_t > c_versions
Definition: ColumnCfg.h:27
SWC::DB::SchemaPrimitives::log_fragment_preload
uint8_t log_fragment_preload
Definition: Schema.h:175
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
SWC::DB::Types::SystemColumn::get_range_type
constexpr SWC_CAN_INLINE Range get_range_type(cid_t cid) noexcept
Definition: SystemColumn.h:51
SWC::Ranger::ColumnCfg::cell_ttl
SWC_CAN_INLINE uint64_t cell_ttl() const
Definition: ColumnCfg.h:111
SWC::Core::AtomicBase::store
constexpr SWC_CAN_INLINE void store(T v) noexcept
Definition: Atomic.h:37
SWC::DB::SchemaPrimitives::log_rollout_ratio
uint8_t log_rollout_ratio
Definition: Schema.h:173
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Ranger::ColumnCfg::log_fragment_preload
SWC_CAN_INLINE uint8_t log_fragment_preload() const
Definition: ColumnCfg.h:167
SWC::Ranger::ColumnCfg::log_preload
Core::Atomic< uint8_t > log_preload
Definition: ColumnCfg.h:40
SWC::Ranger::ColumnCfg::update
void update(const DB::SchemaPrimitives &schema) const
Definition: ColumnCfg.h:79
SWC::Ranger::ColumnCfg::col_type
Core::Atomic< DB::Types::Column > col_type
Definition: ColumnCfg.h:25
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
NotMovableSharedPtr.h
SWC::Ranger::ColumnCfg::ColumnCfg
ColumnCfg(const ColumnCfg &)=delete
SWC::DB::SchemaPrimitives::blk_encoding
Types::Encoder blk_encoding
Definition: Schema.h:170
SWC::Env::Rgr::cfg_cs_max
const SWC::Config::Property::Value_uint8_g::Ptr cfg_cs_max
Definition: RangerEnv.h:164
SWC::DB::SchemaPrimitives::cs_max
uint8_t cs_max
Definition: Schema.h:172
SWC::DB::SchemaPrimitives::cell_ttl
uint32_t cell_ttl
Definition: Schema.h:164
SWC::Ranger::ColumnCfg::cs_size
Core::Atomic< uint32_t > cs_size
Definition: ColumnCfg.h:35
SWC::Ranger::ColumnCfg::c_ttl
Core::Atomic< uint64_t > c_ttl
Definition: ColumnCfg.h:28
SWC::Ranger::ColumnCfg::cid
const cid_t cid
Definition: ColumnCfg.h:20
SWC::DB::Types::SystemColumn::get_sys_cid
uint8_t SWC_CONST_FUNC get_sys_cid(KeySeq col_seq, Range col_type) noexcept
Definition: SystemColumn.cc:71
SWC::Ranger::ColumnCfg::block_enc
SWC_CAN_INLINE DB::Types::Encoder block_enc() const
Definition: ColumnCfg.h:117
SWC::Ranger::ColumnCfg::ColumnCfg
ColumnCfg(const ColumnCfg &&)=delete
SWC::Ranger::ColumnCfg::ColumnCfg
SWC_CAN_INLINE ColumnCfg(const cid_t a_cid, const DB::SchemaPrimitives &schema)
Definition: ColumnCfg.h:48
SWC::Core::NotMovableSharedPtr
Definition: NotMovableSharedPtr.h:13
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::DB::SchemaPrimitives::blk_size
uint32_t blk_size
Definition: Schema.h:165
SWC::Ranger::ColumnCfg::log_rout_ratio
Core::Atomic< uint8_t > log_rout_ratio
Definition: ColumnCfg.h:38
SWC::Env::Rgr::cfg_log_fragment_preload
const SWC::Config::Property::Value_uint8_g::Ptr cfg_log_fragment_preload
Definition: RangerEnv.h:169
SWC::DB::SchemaPrimitives::log_compact_cointervaling
uint8_t log_compact_cointervaling
Definition: Schema.h:174
SWC::Env::Rgr::cfg_blk_size
const SWC::Config::Property::Value_int32_g::Ptr cfg_blk_size
Definition: RangerEnv.h:174
SWC::Env::Rgr::cfg_blk_cells
const SWC::Config::Property::Value_int32_g::Ptr cfg_blk_cells
Definition: RangerEnv.h:175
SWC::DB::Types::Encoder
Core::Encoder::Type Encoder
Definition: Encoder.h:15
SWC::Ranger::ColumnCfg::~ColumnCfg
~ColumnCfg() noexcept
Definition: ColumnCfg.h:77
SWC::Ranger::ColumnCfg::block_cells
SWC_CAN_INLINE uint32_t block_cells() const
Definition: ColumnCfg.h:131
SWC::Ranger::ColumnCfg::blk_enc
Core::Atomic< DB::Types::Encoder > blk_enc
Definition: ColumnCfg.h:30
SWC::Core::AtomicBase::load
constexpr SWC_CAN_INLINE T load() const noexcept
Definition: Atomic.h:42
SWC::Ranger::ColumnCfg::blk_size
Core::Atomic< uint32_t > blk_size
Definition: ColumnCfg.h:31
SWC::Ranger::ColumnCfg::compact_percent
SWC_CAN_INLINE uint8_t compact_percent() const
Definition: ColumnCfg.h:173
SWC::DB::SchemaPrimitives::cs_replication
uint8_t cs_replication
Definition: Schema.h:171
SWC::Ranger::ColumnCfg::meta_cid
const uint8_t meta_cid
Definition: ColumnCfg.h:22
SWC::Ranger::ColumnCfg::cellstore_max
SWC_CAN_INLINE uint8_t cellstore_max() const
Definition: ColumnCfg.h:149
SWC::Core::Encoder::to_string
const char *SWC_CONST_FUNC to_string(Type typ) noexcept
Definition: Encoder.cc:31
SWC::DB::SchemaPrimitives::compact_percent
uint8_t compact_percent
Definition: Schema.h:176
SWC::Ranger::ColumnCfg
Definition: ColumnCfg.h:15
SWC::Ranger::ColumnCfg::print
void print(std::ostream &out) const
Definition: ColumnCfg.h:178
SWC::DB::SchemaPrimitives::cell_versions
uint32_t cell_versions
Definition: Schema.h:163
SWC::Ranger::ColumnCfg::cellstore_size
SWC_CAN_INLINE uint32_t cellstore_size() const
Definition: ColumnCfg.h:143
SWC::DB::SchemaPrimitives::col_type
Types::Column col_type
Definition: Schema.h:169
KeyComparator.h
SWC::Ranger::ColumnCfg::compact_perc
Core::Atomic< uint8_t > compact_perc
Definition: ColumnCfg.h:42
SWC::Ranger::ColumnCfg::blk_cells
Core::Atomic< uint32_t > blk_cells
Definition: ColumnCfg.h:32
SWC::Ranger::ColumnCfg::log_rollout_ratio
SWC_CAN_INLINE uint8_t log_rollout_ratio() const
Definition: ColumnCfg.h:155
SWC::DB::Types::Range
Range
Definition: Range.h:14
SWC::Ranger::ColumnCfg::column_type
SWC_CAN_INLINE DB::Types::Column column_type() const
Definition: ColumnCfg.h:101
SWC::Ranger::ColumnCfg::key_seq
const DB::Types::KeySeq key_seq
Definition: ColumnCfg.h:23
SWC::Env::Rgr::cfg_cs_replication
const SWC::Config::Property::Value_uint8_g::Ptr cfg_cs_replication
Definition: RangerEnv.h:172
SWC::Ranger::ColumnCfg::log_compact
Core::Atomic< uint8_t > log_compact
Definition: ColumnCfg.h:39
SWC::Ranger::ColumnCfg::cell_versions
SWC_CAN_INLINE uint32_t cell_versions() const
Definition: ColumnCfg.h:106
SWC::Ranger::ColumnCfg::Ptr
Core::NotMovableSharedPtr< ColumnCfg > Ptr
Definition: ColumnCfg.h:18
SWC::Env::Rgr::get
static SWC_CAN_INLINE Rgr * get() noexcept
Definition: RangerEnv.h:98