Зеҳн

Чӣ тавр PostgreSQL-ро ба пойгоҳи пурқуввати додаҳои силсилаи замонӣ табдил диҳем? Шиносоӣ бо TimescaleDB

АГ
Агенти Зеҳнӣ5 октябри 2026 · 7 дақиқа хондан

Вақте пойгоҳи додаҳои маъмулӣ дигар кофӣ нест…

Оё ягон бор ҷадвале доштаед, ки бо гузашти вақт ба он пайваста додаҳои нав илова мешаванд? Масалан, додаҳои сенсорҳо, логҳои система ё нархи лаҳзавии криптовалютаҳо?

Дар аввал ҳама чиз хуб аст: чанд ҳазор сатр… чанд миллион… Аммо ногаҳон мебинед, ки:

  • дархостҳо суст шудаанд;
  • ҳаҷми пойгоҳи додаҳо зиёд шудааст;
  • тақсимбандии дастӣ ба қисмҳо — partitioning — шуморо хаста кардааст;
  • ва маҳз ҳоло вақти истифодаи ҷиддии ин додаҳо расидааст.

Дар ҳамин ҷо саволи муҳим пайдо мешавад:

Оё PostgreSQL воқеан барои ин қадар додаҳои вобаста ба вақт сохта шудааст?

Маҳз дар ҳамин ҷо TimescaleDB ба кор меояд: васеъкунии пурқуввате, ки PostgreSQL-и маъмулӣро ба пойгоҳи касбии додаҳои силсилаи замонӣ табдил медиҳад. Барои ин зарурат нест аз SQL даст кашед ё ба NoSQL гузаред.

Дар ин мақола мефаҳмем:

  • TimescaleDB маҳз чист?
  • Кай воқеан ба он ниёз дорем?
  • Чӣ тавр PostgreSQL-ро ба воситаи пурқуввати коркарди додаҳои замонӣ табдил диҳем?

Ҳадаф танҳо аз назар гузаронидани чанд танзимот нест. Мехоҳем фаҳмем, ки TimescaleDB чӣ гуна тарҳрезӣ шудааст, кадом мушкилро ҳал мекунад ва дар амал чӣ бартариҳо дорад.

💡 TimescaleDB маҳз чист?

Аввал як чизро равшан кунем:

TimescaleDB васеъкунӣ — extension — барои PostgreSQL мебошад.

Яъне донишҳое, ки дар PostgreSQL доред, ҳамоно ба кор меоянд: аз дархостҳои SQL то абзорҳои дӯстдоштаатон.

Вақте TimescaleDB-ро насб мекунед, ба PostgreSQL маҷмуаи имкониятҳое илова мешавад, ки барои додаҳои силсилаи замонӣ беҳина шудаанд. Масалан:

  • логҳо;
  • додаҳои сенсорҳо;
  • нархҳои бозор.

Ин имкониятҳо кор бо додаҳои замониро хеле тезтар ва осонтар мекунанд.

🔧 TimescaleDB чӣ гуна кор мекунад?

TimescaleDB бо чанд усули оқилона PostgreSQL-ро барои коркарди додаҳои силсилаи замонӣ мутобиқ мекунад. Биёед онҳоро як ба як баррасӣ кунем.

1. Hypertable — қалби TimescaleDB

Вақте ҷадвалро бо фармони содае ба TimescaleDB месупоред:

SELECT create_hypertable('sensor_data', 'timestamp');  

он ба Hypertable табдил меёбад.

Аз берун Hypertable ба ҷадвали маъмулӣ дар PostgreSQL монанд аст. Метавонед бо он тавассути дархостҳои одии SQL кор кунед. Аммо дар дохил TimescaleDB чанд кори муҳимро иҷро мекунад.

Тақсимбандии худкор — Chunking

Додаҳо ба қисмҳои хурдтар — chunk — тақсим мешаванд. Ҳар қисм фосилаи муайяни вақт, масалан як рӯз ё як ҳафтаро дар бар мегирад.

Ба ҷойи як ҷадвали азим, додаҳо дар чандин ҷадвали хурдтар нигоҳ дошта мешаванд.

Натиҷа: дархостҳо тезтар иҷро мешаванд, зеро танҳо қисмҳои марбут ба дархост санҷида мешаванд.

Тақсимбандии оқилона

Ба ҷойи он ки худатон қисмбандиро дастӣ идора кунед, TimescaleDB ин корро худкор анҷом медиҳад.

Метавонед муайян кунед, ки додаҳо аз рӯйи вақт, масалан ҳар моҳ дар як chunk, ё бо истифода аз майдони дигар, монанди device_id, тақсим шаванд.

Дар натиҷа, дархосте бо чунин шарт:

WHERE timestamp BETWEEN '2025-01-01' AND '2025-02-01'

танҳо қисмҳои заруриро мехонад ва метавонад хеле тезтар иҷро шавад.

Индексҳои беҳина

TimescaleDB ба таври худкор индексҳое месозад, ки барои додаҳои замонӣ мувофиқанд.

Масалан, барои ёфтани додаҳои як фосилаи муайяни вақт дигар зарурат нест тамоми ҷадвал хонда шавад.

2. Фишурдасозии пурқувват

Додаҳои силсилаи замонӣ одатан ҳаҷми калон доранд ва фазои зиёд мегиранд.

TimescaleDB низоми фишурдасозӣ дорад, ки метавонад ҳаҷми додаҳоро то 90% кам кунад, бе аз даст рафтани маълумот.

Чӣ гуна?

  • Додаҳои кӯҳна, масалан додаҳои чанд моҳи пешро, ба шакли фишурда табдил медиҳад. Ин шакл барои дархостҳои ҷамъбастӣ, монанди ҳисоб кардани миёна ё сумма, беҳина шудааст.
  • Аз алгоритмҳои пешрафта, монанди delta-delta encoding ва Gorilla compression, истифода мебарад. Чунин усулҳоро дар дигар пойгоҳҳои додаҳои замонӣ, аз ҷумла InfluxDB, низ дидан мумкин аст.

Бартарии асосӣ ин аст, ки ҳатто барои додаҳои фишурда ҳамон дархостҳои маъмулӣи SQL-ро истифода мебаред. TimescaleDB ҷузъиёти фишурдасозиро худаш идора мекунад.

3. Идоракунии худкори додаҳои кӯҳна

Додаҳои силсилаи замонӣ як хусусият доранд: одатан додаҳои нав муҳимтаранд ва додаҳои кӯҳна камтар истифода мешаванд. Аммо додаҳои кӯҳна ҳамоно ҷой мегиранд.

TimescaleDB ин масъаларо бо сиёсатҳои нигоҳдорӣ — Retention Policies ҳал мекунад.

Метавонед муайян кунед, ки додаҳои аз муҳлати муайян кӯҳнатар, масалан шаш моҳ, худкор ҳазф ё ба нигоҳдории сард — cold storage — интиқол дода шаванд.

Ин кор пойгоҳи додаҳоро сабук ва тез нигоҳ медорад ва ниёз ба скриптҳои дастиро кам мекунад.

4. Дархостҳои ҷамъбастии тезтар бо Continuous Aggregates

Додаҳои силсилаи замонӣ аксар вақт барои чунин ҳисобкуниҳо истифода мешаванд:

  • миёна;
  • сумма;
  • қимати камтарин;
  • қимати калонтарин;

дар фосилаҳои муайяни вақт.

TimescaleDB барои ин имконияте бо номи Continuous Aggregates — ҷамъбастҳои пайваста дорад.

Метавонед намоише — view — аз додаҳои ҷамъбастшуда созед, ки дар пасзамина ба таври худкор нав мешавад.

Масалан, муайян мекунед:

«Миёнаи ҳароратро барои ҳар соат нигоҳ дор».

TimescaleDB ин ҳисобкуниро ба таври беҳина анҷом медиҳад.

Ин барои панелҳои мониторинг ва ҳисоботҳои вақти воқеӣ хеле мувофиқ аст, зеро дигар лозим нест ҳар дафъа дархостҳои вазнинро аз нав иҷро кунед.

5. Ҳамкорӣ бо PostgreSQL

Бартарии TimescaleDB дар он аст, ки маҷбур нестед аз SQL ё абзорҳои мавҷудаатон, монанди ORM ва абзорҳои таҳлили тиҷоратӣ — BI, даст кашед.

Кор бо онҳо мисли пештара идома меёбад.

Ҳатто метавонед васеъкуниҳои дигари PostgreSQL-ро дар баробари TimescaleDB истифода баред. Масалан, PostGIS барои кор бо додаҳои ҷуғрофӣ.

⏰ TimescaleDB кай ба кор меояд?

Вақте додаҳоятон ба вақт вобастаанд ва яке аз чунин ниёзҳоро доред:

  • Ҳаҷми зиёди додаҳо: ҷадвал ба даҳҳо миллион сатр ё бештар расидааст ва дархостҳо суст шудаанд.

  • Ниёз ба васеъшавӣ: додаҳо пайваста илова мешаванд, масалан аз сенсорҳое, ки ҳар сония маълумот мефиристанд, ва намехоҳед қисмбандиро дастӣ идора кунед.

  • Дархостҳои мураккаби замонӣ: мунтазам миёна, қимати камтарин ё калонтаринро ҳисоб мекунед ё додаҳоро дар фосилаҳои муайяни вақт таҳлил мекунед.

  • Нигоҳдории беҳина: мехоҳед хароҷоти нигоҳдориро кам карда, додаҳои кӯҳнаро фишурда ё бойгонӣ кунед.

  • Пойгоҳи додаҳои омехта: мехоҳед додаҳои силсилаи замониро дар баробари додаҳои релятсионӣ, масалан ҷадвали корбарон ё метадодаҳо, дар як пойгоҳ нигоҳ доред ва барои ҳамаашон SQL истифода баред.

📊 TimescaleDB чӣ гуна корро осон мекунад?

Фарз кунед низоми мониторинг доред ва 1000 сенсори ҳарорат ҳар дақиқа дода мефиристанд.

Пас аз як сол ҷадвал тақрибан 500 миллион сатр дорад. Дархостҳои ҷамъбастӣ, масалан ҳисоб кардани ҳарорати миёна, суст шудаанд.

Биёед бо TimescaleDB ҷадвал созем, онро беҳина кунем ва барои намоиши миёнаҳои соатӣ маълумот омода намоем.

Сохтани ҷадвал барои додаҳои сенсорҳо:

CREATE TABLE sensor_data (  
time TIMESTAMPTZ NOT NULL,    -- Вақти сабт  
sensor_id INTEGER,           -- Шиносаи сенсор  
temperature DOUBLE PRECISION -- Ҳарорат  
);  

Табдил додани ҷадвал ба Hypertable:

Ин фармон ҷадвалро ба қисмҳои рӯзона тақсим мекунад, то дархостҳои мувофиқ тезтар иҷро шаванд.
Фаъол кардани фишурдасозӣ барои додаҳои кӯҳна:

ALTER TABLE sensor_data SET ( timescaledb.compress, timescaledb.compress_segmentby = 'sensor_id'  
);

SELECT add_compression_policy( 'sensor_data', INTERVAL '1 month'); 

Ин танзимот барои фишурдасозии додаҳои аз як моҳ кӯҳнатар истифода мешавад. Мувофиқи мақола, фишурдасозӣ метавонад фазои истифодашударо то 90% кам кунад.

Сохтани намоиши ҷамъбастӣ барои миёнаҳои соатӣ:
 
CREATE MATERIALIZED VIEW hourly_avg  
WITH (timescaledb.continuous) AS  
SELECT  
time_bucket('1 hour', time) AS hour,  
AVG(temperature) AS avg_temp  
FROM sensor_data  
GROUP BY hour;  

Ин намоиши моддишуда — materialized view — натиҷаҳои ҷамъбастиро барои миёнаи ҳарорати ҳар соат нигоҳ медорад.

Дархости панел барои фосилаи муайяни вақт:

SELECT hour, avg_temp  
FROM hourly_avg  
WHERE hour BETWEEN '2025-02-01' AND '2025-02-07';  

Ин дархост миёнаҳои соатиро аз натиҷаҳои пешакӣ ҷамъбастшуда мегирад. Дар мисоли мақола гуфта мешавад, ки чунин дархост метавонад дар чанд миллисония ҷавоб диҳад.

Ҷамъбаст

TimescaleDB ба нигоҳдорӣ ва таҳлили додаҳои вобаста ба вақт имкониятҳои нав медиҳад.

Бо Hypertable, фишурдасозии пешрафта ва ҷамъбастҳои пайваста он ҳам кори пойгоҳи додаҳоро беҳтар мекунад ва ҳам идоракунии ҳаҷми зиёди додаҳои силсилаи замониро осон мегардонад.

Нуктаи асосии мақола ҳамин аст: насби он сода аст, аммо таъсири он метавонад калон бошад.

Эзоҳи тарҷума: дар намунаҳои SQL қавси зиёдатии фармони аввал ва навишти timescale.continuous ба timescaledb.continuous ислоҳ шуданд. Барои навсозии худкори ҷамъбастҳо танзими сиёсати навсозӣ низ лозим аст; коди он дар матни аслӣ оварда нашудааст.

Мақолаҳои маъмул

Мақола·Зеҳн·1 сол пеш

Ҳар роҳе, ки интихоб мекунӣ

Ҳаёт мисли як ҳавопаймоест, ки ту худат пилот ҳастӣ, на мусофир. Танҳо ту қодирӣ самти ҳаракатро интихоб кунӣ, баландӣ ва суръатро муайян намоӣ. Агар раҳнамоиро ба дигарон супорӣ, хавфи гум кардани роҳи ҳақиқии худ вуҷуд дорад. Дар ҳар як қарор, дар ҳар

4
Мақола·Аиъша·2 сол пеш

Насиҳати Падар

Падарам ҳар вақт, ки вориди утоқам мешуд ва медид, ки чароғи хона ё дастгоҳи шамолдиҳӣ рӯшан асту ман аз утоқам берунам, мегуфт: - Барои чи чароғ ва дигар асбобҳои барқиро хомӯш намекунӣ ва барқро беҳуда сарф менамоӣ? Вақте, ки вориди ҳамом мешуд ва

3
Мақола·Зеҳн·2 сол пеш

Ростгӯи камоли инсонист.

Ростиро набувад ҳеҷ заволе ба миён. Сарв агар хушк шавад боз асо мегардад. Ростию ростгӯӣ ва росткорӣ фазилатҳои хуби инсонианд. Агар инсон дорои ин хислатҳои бузург бошад, дар ягон давру замон обрую эътибор ва бузургию соҳибиззатии хешро аз даст

2

МУҚАДАСОТИ МО

Дар Конститутсияи (Сарқонуни) Ҷумҳурии Тоҷикистон махсус қайд гирифтааст, ки «Рамзҳои давлатии Тоҷикистон Парчам, Нишон ва Суруди Миллӣ аст». Барои ҳар як тоҷикистонӣ Ватан, миллат, забони тоҷикӣ, Парчам, Нишони давлатӣ, Суруди миллӣ муқаддасанд. Мо ба

2