📍 20 августа
——————————————————
Башня и Партиции
——————————————————
Когда люди строили Вавилонскую башню, они мечтали о высоте, но забыли о прочности.
Они складывали камни один за другим, пока вес не обрушил всё строение.
Так же и с данными.
Можно хранить терабайты в одной таблице, но в какой-то момент твой запрос станет молитвой, которая точно
не дойдёт до небес.
Поэтому мудрые инженеры делят данные на части.
Партиции как опоры, что держат башню.
Запрос к одному месяцу идёт только в этот месяц.
Запрос к одному году не тревожит соседний.
🛠 Пример в Spark:
df.write
.mode("overwrite")
.partitionBy("year", "month")
.parquet("s3://data/events/")
Башня стоит прочнее, запросы быстрее, инженеры спокойнее.
Но запомни, юный строитель:
излишнее усердие губит не хуже беспечности.
CREATE TABLE events (
id BIGINT,
user_id BIGINT,
ts TIMESTAMP
)
PARTITIONED BY (user_id); -- Партиция по user_id (миллионы значений)
Так каждая запись стала отдельным камнем, и башня снова рухнула.
Слишком много блоков привело к хаосу: планировщик тратил больше сил на их учёт, чем на сами вычисления.
📜 Урок:
Деление укрепляет башню.
Но дробление до песка её уничтожает.
——————————————————
🖥 Хроники Вавилона данных
⚖️ Искусство меры в хранилищах
——————————————————
Башня и Партиции
——————————————————
Когда люди строили Вавилонскую башню, они мечтали о высоте, но забыли о прочности.
Они складывали камни один за другим, пока вес не обрушил всё строение.
Так же и с данными.
Можно хранить терабайты в одной таблице, но в какой-то момент твой запрос станет молитвой, которая точно
не дойдёт до небес.
Поэтому мудрые инженеры делят данные на части.
Партиции как опоры, что держат башню.
Запрос к одному месяцу идёт только в этот месяц.
Запрос к одному году не тревожит соседний.
🛠 Пример в Spark:
df.write
.mode("overwrite")
.partitionBy("year", "month")
.parquet("s3://data/events/")
Башня стоит прочнее, запросы быстрее, инженеры спокойнее.
Но запомни, юный строитель:
излишнее усердие губит не хуже беспечности.
CREATE TABLE events (
id BIGINT,
user_id BIGINT,
ts TIMESTAMP
)
PARTITIONED BY (user_id); -- Партиция по user_id (миллионы значений)
Так каждая запись стала отдельным камнем, и башня снова рухнула.
Слишком много блоков привело к хаосу: планировщик тратил больше сил на их учёт, чем на сами вычисления.
📜 Урок:
Деление укрепляет башню.
Но дробление до песка её уничтожает.
——————————————————
🖥 Хроники Вавилона данных
⚖️ Искусство меры в хранилищах