теория
У временных рядов есть свойство, которого нет у заказов и комментариев: соседние точки похожи друг на друга. Цена сыра сегодня почти равна вчерашней; замер приходит каждый день в полночь. Колоночные движки выжимают из этой похожести всё.
Дельта дельт. Таймстампы регулярного ряда — арифметическая прогрессия: полночь, полночь, полночь. Дельта между соседними — константа, дельта этих дельт — ноль. Хранить нули можно почти бесплатно: одним битом.
XOR для значений. Соседние значения ряда в двоичном виде различаются несколькими битами. XOR двух похожих чисел — почти сплошные нули; хранится только короткий «огрызок» различий. В статье Facebook про Gorilla (2015) эти два приёма ужали точку с 16 байт до 1.37 байта в среднем — в двенадцать раз. Прямое следствие: горячие данные влезли в память, и запросы ускорились на два порядка. Эту схему с тех пор унаследовало целое поколение хранилищ рядов.
Второй рычаг — признать, что не все точки одинаково нужны. Терминал рисует график за пять лет на экране шириной в тысячу пикселей — тысяча значений, а не миллион. Для старых периодов достаточно ряда: минимум, максимум, среднее по дню или неделе. Свежее храним подробно и горячо, старое — агрегатами для интерактива.
Но вот чего делать нельзя — удалять сырьё. У мониторинга серверов ценность точки тает за недели: никому не интересен CPU позапрошлого вторника. У «Индикаторов» наоборот: глубина истории — это и есть товар, аналитик покупает возможность спросить «а как было в кризис». Сырые точки уезжают в дешёвое объектное хранилище — медленное, зато вечное: из него всегда можно пересобрать любые агрегаты (неизменяемый вход и воспроизводимость — принцип, знакомый тебе с девятнадцатого модуля).
— это не «когда удалять». Это выбор представления для каждого возраста данных: память → колонки на диске → агрегаты → сырьё в архиве.