GH GambleHub

समय श्रृंखला का भंडारण

1) समय श्रृंखला के लिए एक अलग वास्तुकला क्यों

समय श्रृंखला टैग (लेबल) के साथ जोड़े (टाइमस्टैम्प, मान) के अनुक्रम हैं, जिनकी विशेषता है:
  • उच्च रिकॉर्डिंग गति (निगरानी) और आवृत्ति।
  • समय सीमा के अनुसार पढ़ ता है (स्कैन + समुच्चय/विंडो फ़ंक्शन)।
  • टैग संयोजनों के कारण विस्फोटक कार्डिनैलिटी।
  • प्रतिधारण (शेल्फ जीवन प्रतिबंध) और डाउनसैम्पलिंग (समय संपीड़न) की आवश्यकता।
  • इसलिए - एक विशेष भंडारण मॉडल, संपीड़न प्रारूप और अनुरोध प्रोटोकॉल।

2) डेटा मॉडल और अनुबंध मैट्रिक्स

2. 1 नामकरण और टैग

metric_name: एकवचन क्रिया/संज्ञा ('http _ requests _ total', 'cpu _ usage _ second _ total')।

लेबल: विशेषता कुंजी ('नौकरी', 'उदाहरण', 'डीसी', 'पॉड', 'स्थिति', 'विधि')।

Invariants: नाम के शब्दार्थ को न बदलें, असंगत परिवर्तनों के साथ संस्करण ('metric _ v2') जोड़ें।

2. 2 प्रकार की पंक्तियाँ

गेज, काउंटर, हिस्टोग्राम/सारांश, इवेंट/स्पैन।

वित्तीय/घनत्व के लिए - फिक्स यूनिट और एग्रीगेबिलिटी (अनुमानित/औसत)।

2. 3 प्रतिधारण और रोलअप नीति

गर्म विवरण (सेकंड/1-10 मिनट) → गर्म इकाइयाँ (5m/1h) → ठंड (1d/1w)।

काउंटर - स्टोर दर/डेरिव समुच्चय के लिए।

3) रिकॉर्डिंग पथ: रिसेप्शन, बफरिंग, कॉम्पैक्ट

3. 1 इनगेस्ट-पाइपलाइन

स्क्रेप (पुल, प्रोमेथियस) या पुश (ओटीएलपी/स्टैट्सडी/ग्रेफाइट), अक्सर गेटवे/एजेंट के माध्यम से।

WAL (राइट-फॉरवर्ड लॉग) में बफरिंग, फिर खंडों/ब्लॉकों (LSM जैसी वास्तुकला) में संपीड़ित।

बैचिंग और समय छांटने से संपीड़न और गति बढ़ जाती है।

3. 2 आउट-ऑफ-ऑर्डर हैंडलिंग और लेता है

सहिष्णुता खिड़की (विलंबता खिड़की, उदाहरण के लिए 5-15 मिनट) + नीति: 'ड्रॉप | upsert | कीप-लास्ट'।

वर्शनिंग या "आखिरी रिकॉर्ड जीत" के साथ '(series_id, टाइमस्टैम्प) द्वारा डीडुप्लिकेशन।

3. 3 संपीड़न

टाइमस्टैम्प के लिए डेल्टा-ऑफ-डेल्टा, फ्लोट के लिए गोरिल्ला/XOR, पूर्णांक के लिए RLE और टैग के लिए शब्दकोश।

1-8K बिंदुओं का इष्टतम ब्लॉक आकार ("चंक") IOPS और CPU के बीच एक समझौता है।

4) भंडारण योजनाएं: TSDB बनाम SQL/कॉलम

4. 1 समर्पित टीएसडीबी

Prometheus (स्थानीय, लघु प्रतिधारण, PromQL, remote_write)।

VictoriaMetrics/M3/InfluxDB - क्षैतिज स्केलिंग, लंबा प्रतिधारण, रिमोट पढ़ा।

ब्लॉक प्रारूपों को रेंज स्कैन + टेंडरिंग एकत्रीकरण के लिए अनुकूलित किया जाता है।

4. 2 रिलेशनल/कॉलम इंजन

TimescaleDB (PostgreSQL): हाइपरटेबल्स, समय/स्थान द्वारा चंक, निरंतर समुच्चय।

क्लिकहाउस: मर्गेट्री/टीटीएल/भौतिक दृश्य, उत्कृष्ट संपीड़न और समय एकत्रीकरण।

चयन - क्वेरी इकोसिस्टम (SQL बनाम PromQL) द्वारा, शामिल/BI आवश्यकताओं और टीम परिचालन कौशल।

5) योजना और उदाहरण

5. 1 TimescaleDB: हाइपरटेबल + निरंतर कुल

sql
CREATE TABLE metrics_cpu(
ts timestamptz NOT NULL,
host text NOT NULL,
dc text NOT NULL,
usage double precision NOT NULL,
PRIMARY KEY (ts, host, dc)
);
SELECT create_hypertable('metrics_cpu', by_range('ts'), chunk_time_interval => interval '1 day');

-- Continuous unit (5 minutes)
CREATE MATERIALIZED VIEW cpu_5m
WITH (timescaledb. continuous) AS
SELECT time_bucket('5 minutes', ts) AS ts5m, host, dc, avg(usage) AS avg_usage
FROM metrics_cpu GROUP BY 1,2,3;

-- Politicians
SELECT add_retention_policy('metrics_cpu', INTERVAL '14 days');
SELECT add_retention_policy('cpu_5m',   INTERVAL '180 days');

5. 2 क्लिकहाउस: एग्रीगेटिंग स्टोरेज

sql
CREATE TABLE metrics_cpu (
ts DateTime,
host LowCardinality(String),
dc LowCardinality(String),
usage Float32
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (host, dc, ts)
TTL ts + INTERVAL 14 DAY
SETTINGS index_granularity = 8192;

-- Rollup in hourly detail
CREATE MATERIALIZED VIEW cpu_1h
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (host, dc, ts)
POPULATE AS
SELECT toStartOfHour(ts) AS ts, host, dc, avg(usage) AS usage
FROM metrics_cpu GROUP BY ts, host, dc;

5. 3 प्रोमेथियस/विक्टोरिया मेट्रिक्स: remote_write

yaml global:
scrape_interval: 15s remote_write:
- url: http://vminsert:8480/insert/0/prometheus/api/v1/write

6) कार्डिनैलिटी: भंडारण को "उड़ा" कैसे न दें

6. 1 नियम

लेबल कार्डिनैलिटी (अद्वितीय मानों की संख्या) को सीमित करें। 'user _ id', 'requess _ id', 'trace _ id' शामिल नहीं करें.

"बहु-मूल्यवान" टैग (श्रेणियां → कोड) सामान्य करें।

LowCardinality प्रकार (CH में), शब्दकोश/लेबल पेड़ (TSDB में) का उपयोग करें।

6. 2 नियंत्रण और अलर्ट

मेट्रिक्स: 'श्रृंखला _ काउंट', 'लेबल _ मान {लेबल}', टॉप-एन "महंगी" पंक्तियाँ।

जब कार्डिनैलिटी सीमा प्रति किरायेदार/कार्य से अधिक हो तो विफलता नीतियां लिखें।

6. 3 इतिहास/हिस्टोग्राम

हाई-कार्डिनैलिटी के लिए, एग्रीगेट्स (हिस्टोग्राम बाल्टी) और प्री-रोलअप को स्टोर करना बेहतर है; समुच्चय पर ऑनलाइन गणना करने के लिए मात्रा।

7) प्रतिधारण, डाउनसैम्पलिंग और टियर-स्टोरेज

7. 1 नीतियां

गर्म: 3-30 दिन का दूसरा/मिनट विस्तार।

गर्म: 5m/1h समुच्चय के 90-365 दिन।

ठंड: दिन के वर्षों के समुच्चय, Parquet के साथ ऑब्जेक्ट स्टोरेज (S3/Glacier) में संग्रह।

7. 2 तकनीशियन

निरंतर समुच्चय (टाइमस्केल), भौतिक दृश्य (सीएच), प्रतिधारण + रोलअप कार्य (विक्टोरिया/एम 3/प्रभाव)।

Tiered भंडारण: स्थानीय रूप से "हॉट ब्लॉक", स्थानीय कैश के साथ वस्तु में "ठंडा"।

8) प्रश्न और भाषाएँ

8. 1 PromQL (उदाहरण)

promql rate(http_requests_total{job="api",status=~"5.."}[5m])

5xx API त्रुटि दर के लिए देख रहा है.

8. 2 SQL विंडो द्वारा समुच्चय

sql
SELECT time_bucket('1h', ts) AS hour,
dc, avg(usage) AS avg, max(usage) AS pmax
FROM metrics_cpu
WHERE ts >= now() - interval '24 hours'
GROUP BY 1,2 ORDER BY 1;

8. 3 विसंगतियाँ (स्केच)

खिड़की के आंकड़ों द्वारा जेड-स्कोर/ईएसडी, मौसमी के एसटीएल अपघटन; परिणामों को एक अलग पंक्ति 'anomaly = 1/0' में संग्रहीत करें।

9) एकीकरण और प्रोटोकॉल

OTLP (OpenTelemetry): मेट्रिक्स/ट्रेल्स/लॉग्स, एजेंटों पर निर्यातक (ओटेल-कलेक्टर) → TSDB/क्लिकहाउस/ऑब्जेक्ट।

StatsD/ग्रेफाइट: सरल काउंटर/टाइमर; किनारे करने के लिए प्रॉक्सी, फिर एक एकल प्रारूप में रूपांतरण।

काफ्का/एनएटीएस: निगला फटने के लिए बफर, बैकफिल के लिए रिप्लेयर; उपभोक्ता बैचमी लिखते हैं।

काफ्का → क्लिकहाउस (छद्म) का उदाहरण:
text kafka(topic=metrics) -> stream processor (normalize/tags) -> CH INSERT INTO metrics_cpu FORMAT RowBinary

10) एक्सेसिबिलिटी, एचए और फेडरेशन

प्रतिकृति/टीएसडीबी एचए जोड़े या प्रोमेथियस महासंघ (क्षेत्र → वैश्विक स्तर)।

दीर्घकालिक भंडारण और केंद्रीकृत डैशबोर्ड के लिए रिमोट पढ़ें/लिखें।

शार्ड-बाय-लेबल/समय: 'डीसी/किरायेदार' द्वारा निगलना, इलाके का समान वितरण।

11) भंडारण की अवलोकन क्षमता

11. 1 मेट्रिक्स

इनगेस्ट: 'सैंपल/सेकंड', 'एपेंड _ लेटेंसी', 'wal _ fsync _ ms'।

Хранение: 'ब्लॉक _ काउंट', 'कॉम्पैक्ट _ क्यू _ लेन', 'चंक _ कम्प्रेशन _ रेशियो'।

Запросы: 'query _ qps', 'स्कैन _ बाइट्स', 'p95/p99 _ latency', 'alloc _ bytes'।

कार्डिनैलिटी: 'सीरीज़ _ काउंट', टॉप-लेबल।

11. 2 एसएलओ

"1h रेंज के लिए p99 लेटेंसी 200 ms at पर।"

"इनगेस्ट-ड्रॉप ≤ 0। एक्स नमूने/सेकंड से पहले फटने पर 01%।"

"संपीड़न बैकलॉग <10 मिनट"।

11. 3 अलर्ट

वृद्धि 'श्रृंखला _ count'> Y %/घंटा।

संपीड़न कतार/फ्लश> सीमा।

Доля आउट-ऑफ-ऑर्डर> एन%, डेडअप/लेट-ड्रॉप्स।

12) सुरक्षा और बहु-किरायेदारी

'किरायेदार' द्वारा अलगाव (कुंजियों में लेबल, व्यक्तिगत टेबल/डेटाबेस, कोटा)।

लेबल का स्वच्छता (पीआईआई निषेध), आकार/मूल्य नियंत्रण।

एन्क्रिप्शन "आराम पर" और परिवहन पर, "संवेदनशील" मैट्रिक्स तक पहुंच का ऑडिटिंग।

13) परिचालन अभ्यास

वार्म अप और कोल्ड स्टार्ट: कैश में "हॉट" ब्लॉक का पिन, पिछले एन घंटों का प्रीफेच।

बैकफिल: कम प्राथमिकता वाली व्यक्तिगत पाइपलाइनें, ऑनलाइन के साथ मिश्रण न करें

स्कीमा वर्शनिंग: समानांतर लेखन (दोहरे-लेखन) और बाद के स्विच के साथ पलायन।

भंडारण बजट: कार्डिनैलिटी वृद्धि का 'cost _ per _ TB _ Mather' + पूर्वानुमान का नियंत्रण।

14) एंटी-पैटर्न

उच्च कार्डिनैलिटी (user_id, uuid) के साथ टैग → पंक्तियों का विस्फोट।

प्रतिधारण के बिना "अनन्त" पंक्तियाँ - अनियंत्रित विकास।

नॉन-कसाई/सॉर्टिंग रिकॉर्डिंग → खराब संपीड़न और आईओपीएस तूफान।

एक ही डिस्क पूल पर OLTP और लंबे स्कैन मिलाएं।

आउट-ऑफ-ऑर्डर पॉलिसी की कमी - डुप्लिकेट्स और ब्लोट्स।

सैकड़ों बाल्टियों के साथ हिस्टोग्राम - लाभ के बिना × 10 की लागत।

15) कार्यान्वयन चेकलिस्ट

  • मैट्रिक्स, उनके प्रकार और इकाइयों को परिभाषित करें; नाम/लेबल संविदा ठीक करें।
  • इंजन (TSDB बनाम SQL/स्तंभ) और क्वेरी भाषा (PromQL/SQL) का चयन करें।
  • एक अवधारण/रोलअप (गर्म/गर्म/ठंडा) और ILM डिजाइन करें।
  • कॉन्फ़िगर इनगेस्ट: WAL/बैच/सॉर्टिंग, आउट-ऑफ-ऑर्डर विंडो।
  • संपीड़न (डेल्टा-ऑफ-डेल्टा/XOR/RLE), इष्टतम चंक चालू करें।
  • नियंत्रण कार्डिनैलिटी: कोटा, अलर्ट, ऑप्ट-आउट नीतियां।
  • एचए/फेडरेशन और रिमोट-राइट/रीड कॉन्फ़िगर करें।
  • एसएलओ डैशबोर्ड और स्टोरेज मेट्रिक्स (इनगेस्ट/क्वेरी/स्टोरेज)।
  • सुरक्षा/किरायेदार अलगाव नीतियां और लेबल में पीआईआई की कमी।
  • नियमित "गेम डे": बैकफिल, नोड लॉस, निगेटिव सर्ज।

16) एफएक्यू

प्रश्न: बुनियादी ढांचे की निगरानी के लिए क्या चुनना है: प्रोमेथियस या क्लिकहाउस/टाइमस्केल?

A: देशी निगरानी और PromQL के लिए - प्रोमेथियस + दीर्घकालिक भंडारण (विक्टोरिया/M3)। BI/गोदाम परिदृश्यों और SQL - Timescale/ClickHouse के लिए।

प्रश्न: भारी सारांश के बिना मात्रा कैसे संग्रहीत करें?

A: साफ बाल्टी के साथ हिस्टोग्राम का उपयोग करें और अनुरोध करने पर मात्रा की गणना करें; या समुच्चय में टी-डाइजेस्ट/सीकेएमएस।

प्रश्न: आउट-ऑफ-ऑर्डर से कैसे निपटें?

A: सहिष्णुता खिड़की (5-15 मिनट) और नियतात्मक डीडअप नीति दर्ज करें; मोबाइल/एज से टेलीमेट्री के लिए - विंडो व्यापक है।

प्रश्न: रोलअप की आवश्यकता कब है?

A: हमेशा> 30-90 दिन: समुच्चय आकार × 10-100 को कम करते हैं और एनालिटिक्स में तेजी लाते हैं।

प्रश्न: क्या लॉग और मैट्रिक्स को मिलाना संभव है?

A: अलग से स्टोर करें (प्रारूप/प्रश्न अलग हैं)। सहसंबंध के लिए, Exemplar/TraceID और डैशबोर्ड का उपयोग करें, लेकिन सब कुछ एक तालिका में न जोड़ें।

17) कुल

प्रभावी समय श्रृंखला भंडारण मैट्रिक्स अनुबंध + टैग अनुशासन, सक्षम निगरानी (WAL/संपीड़न), संपीड़न और प्रतिधारण/रोलअप नीतियां हैं। कार्डिनैलिटी कंट्रोल, एनए/फेडरेशन और स्टोर की खुद की अवलोकन क्षमता जोड़ें - और आपको महीनों से वर्षों तक उचित लागत और उछाल प्रतिरोध मिलता है।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।