mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-31 03:56:42 +00:00
" This patch series introduces initial support for writing SSTables in 'mc' format (aka SSTables 3.0). Currently, the following components are written in 3.0 format: - Data.db - Index.db - Summary.db (there were no changes to summary files format compared to ka/la) Other SSTables components are written in the old format for now as they still need to exist to satisfy post-flush processing. For now, only rows are written to the data file and indexed. Range tombstones are not supported. Writing rows is supported in full with the only exception being counter cells. All the other features (TTLed data, row/cell level tombstones, collections, etc) are supported. Unit tests rely on producing files and binary-comparing them with 'golden' copies that are produced using Cassandra 3.11. This is done to not block until reading SSTables 3.0 format is implemented. ======================================= Implementation notes ======================================= Internally, sstable_writer has been refactored to support multiple implementations that are instantiated in its constructor based on the sstable version. Little to no code is shared among sstable_writer_v2 and sstable_writer_v3 as we only intend to support sstable_writer_v2 alongside sstable_writer_v3 for a single release (to be able to do rollback on rolling upgrade failure) and then plan to get rid of it entirely and switch to always writing SSTables in the new format. The design of sstable_writer_v3 mostly follows that of its precursors sstable_writer(_v2) and components_writer. Some refactoring and further code rearrangements are expected in the future but the main code is there. " * 'projects/sstables-30/write-rows/v2' of https://github.com/argenet/scylla: Add tests for writing data and index files in SSTables 3.0 ('mc') format. Support for writing SSTables 3.0 ('mc') Data.db and Index.db files - rows only. Add missing enum values to bound_kind. Add building blocks for writing data in SSTables 3.0 format. Refactor sstable_writer to support various internal implementations. Add is_fixed_length() to data types. Add mutation_partition::apply_insert() overload that accepts TTL and expiry for row marker.