InfluxDB உடன் பணிபுரியும் போது கோபம், பேரம் பேசுதல் மற்றும் மனச்சோர்வு

InfluxDB உடன் பணிபுரியும் போது கோபம், பேரம் பேசுதல் மற்றும் மனச்சோர்வு

நீங்கள் நேரத் தொடர் தரவுத்தளத்தைப் பயன்படுத்தினால் (டைம்சீரிஸ் டிபி, விக்கி) புள்ளிவிபரங்களைக் கொண்ட தளத்திற்கான முக்கிய சேமிப்பகமாக, சிக்கலைத் தீர்ப்பதற்குப் பதிலாக, நீங்கள் நிறைய தலைவலிகளைப் பெறலாம். நான் அத்தகைய தரவுத்தளத்தைப் பயன்படுத்தும் திட்டத்தில் பணிபுரிகிறேன், சில சமயங்களில் InfluxDB, விவாதிக்கப்படும், முற்றிலும் எதிர்பாராத ஆச்சரியங்களை அளிக்கிறது.

பொறுப்புத் துறப்பு: பட்டியலிடப்பட்டுள்ள சிக்கல்கள் InfluxDB பதிப்பு 1.7.4க்கு பொருந்தும்.

ஏன் நேரத் தொடர்?

பல்வேறு பிளாக்செயின்களில் பரிவர்த்தனைகளைக் கண்காணிப்பது மற்றும் புள்ளிவிவரங்களைக் காண்பிப்பது திட்டம். குறிப்பாக, நிலையான நாணயங்களின் உமிழ்வு மற்றும் எரிப்பதைப் பார்க்கிறோம் (விக்கி) இந்த பரிவர்த்தனைகளின் அடிப்படையில், நீங்கள் வரைபடங்களை உருவாக்கி, சுருக்க அட்டவணைகளைக் காட்ட வேண்டும்.

பரிவர்த்தனைகளை பகுப்பாய்வு செய்யும் போது, ​​ஒரு யோசனை தோன்றியது: InfluxDB நேரத் தொடர் தரவுத்தளத்தை முக்கிய சேமிப்பகமாகப் பயன்படுத்த. பரிவர்த்தனைகள் நேரத்தின் புள்ளிகள் மற்றும் அவை நேரத் தொடர் மாதிரியுடன் நன்கு பொருந்துகின்றன.

திரட்டல் செயல்பாடுகளும் மிகவும் வசதியாகத் தோன்றின - நீண்ட கால அட்டவணையைச் செயலாக்குவதற்கு ஏற்றது. பயனருக்கு ஒரு வருடத்திற்கான விளக்கப்படம் தேவை, மேலும் தரவுத்தளத்தில் ஐந்து நிமிட கால அளவு கொண்ட தரவுத் தொகுப்பு உள்ளது. அவருக்கு நூறு ஆயிரம் புள்ளிகளை அனுப்புவதில் அர்த்தமில்லை - நீண்ட செயலாக்கத்தைத் தவிர, அவை திரையில் கூட பொருந்தாது. காலக்கெடுவை அதிகரிப்பதற்கான உங்கள் சொந்த செயலாக்கத்தை நீங்கள் எழுதலாம் அல்லது Influx இல் கட்டமைக்கப்பட்ட திரட்டல் செயல்பாடுகளைப் பயன்படுத்தலாம். அவர்களின் உதவியுடன், நீங்கள் நாளுக்கு நாள் தரவைக் குழுவாக்கலாம் மற்றும் தேவையான 365 புள்ளிகளை அனுப்பலாம்.

இது போன்ற தரவுத்தளங்கள் பொதுவாக அளவீடுகளைச் சேகரிக்கும் நோக்கத்திற்காகப் பயன்படுத்தப்படுவது கொஞ்சம் குழப்பமாக இருந்தது. சர்வர்கள், ஐஓடி சாதனங்கள், "ஓட்டம்" என்ற படிவத்தின் மில்லியன் கணக்கான புள்ளிகள் அனைத்தையும் கண்காணித்தல்: [ - ]. ஆனால் தரவுத்தளம் ஒரு பெரிய தரவு ஓட்டத்துடன் நன்றாக வேலை செய்தால், சிறிய தொகுதி ஏன் சிக்கல்களை ஏற்படுத்த வேண்டும்? இதைக் கருத்தில் கொண்டு, இன்ஃப்ளக்ஸ்டிபியை வேலைக்கு எடுத்துக்கொண்டோம்.

InfluxDB இல் வேறு என்ன வசதியானது

குறிப்பிடப்பட்ட திரட்டல் செயல்பாடுகளைத் தவிர, மற்றொரு பெரிய விஷயம் உள்ளது - தொடர்ச்சியான கேள்விகள் (ஆவணம்) இது ஒரு அட்டவணையில் தரவை செயலாக்கக்கூடிய தரவுத்தளத்தில் கட்டமைக்கப்பட்ட ஒரு திட்டமிடல் ஆகும். எடுத்துக்காட்டாக, ஒவ்வொரு 24 மணி நேரத்திற்கும் நீங்கள் ஒரு நாளுக்கான அனைத்து பதிவுகளையும் தொகுக்கலாம், சராசரியைக் கணக்கிடலாம் மற்றும் உங்கள் சொந்த சைக்கிள்களை எழுதாமல் மற்றொரு அட்டவணையில் ஒரு புதிய புள்ளியைப் பதிவு செய்யலாம்.

மேலும் உள்ளது தக்கவைப்பு கொள்கைகள் (ஆவணம்)-ஒரு குறிப்பிட்ட காலத்திற்குப் பிறகு தரவு நீக்கத்தை அமைத்தல். எடுத்துக்காட்டாக, நீங்கள் ஒரு வாரத்திற்கு CPU சுமைகளை வினாடிக்கு ஒரு முறை அளவீடுகளுடன் சேமிக்க வேண்டியிருக்கும் போது இது பயனுள்ளதாக இருக்கும், ஆனால் ஓரிரு மாத இடைவெளியில் அத்தகைய துல்லியம் தேவையில்லை. அத்தகைய சூழ்நிலையில், நீங்கள் இதைச் செய்யலாம்:

  1. மற்றொரு அட்டவணையில் தரவை ஒருங்கிணைக்க தொடர்ச்சியான வினவலை உருவாக்கவும்;
  2. முதல் அட்டவணைக்கு, அதே வாரத்தை விட பழைய அளவீடுகளை நீக்குவதற்கான கொள்கையை வரையறுக்கவும்.

மற்றும் இன்ஃப்ளக்ஸ் சுயாதீனமாக தரவின் அளவைக் குறைக்கும் மற்றும் தேவையற்ற விஷயங்களை நீக்கும்.

சேமிக்கப்பட்ட தரவு பற்றி

அதிக தரவு சேமிக்கப்படவில்லை: சுமார் 70 ஆயிரம் பரிவர்த்தனைகள் மற்றும் சந்தை தகவலுடன் மற்றொரு மில்லியன் புள்ளிகள். புதிய உள்ளீடுகளைச் சேர்த்தல் - ஒரு நாளைக்கு 3000 புள்ளிகளுக்கு மேல் இல்லை. தளத்திற்கான அளவீடுகளும் உள்ளன, ஆனால் அங்கு சிறிய தரவு உள்ளது, தக்கவைப்பு கொள்கையின்படி, அவை ஒரு மாதத்திற்கு மேல் சேமிக்கப்படும்.

பிரச்சினைகள்

சேவையின் வளர்ச்சி மற்றும் அடுத்தடுத்த சோதனையின் போது, ​​InfluxDB இன் செயல்பாட்டில் மேலும் மேலும் முக்கியமான சிக்கல்கள் எழுந்தன.

1. தரவுகளை நீக்குதல்

பரிவர்த்தனைகளுடன் தொடர்ச்சியான தரவு உள்ளது:

SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'

முடிவு:

InfluxDB உடன் பணிபுரியும் போது கோபம், பேரம் பேசுதல் மற்றும் மனச்சோர்வு

தரவை நீக்க ஒரு கட்டளையை அனுப்புகிறேன்:

DELETE FROM transactions WHERE symbol=’USDT’

அடுத்து, ஏற்கனவே நீக்கப்பட்ட தரவைப் பெற நான் ஒரு கோரிக்கை வைக்கிறேன். வெற்று பதிலுக்குப் பதிலாக, நீக்கப்பட வேண்டிய தரவின் ஒரு பகுதியை Influx வழங்கும்.

முழு அட்டவணையையும் நீக்க முயற்சிக்கிறேன்:

DROP MEASUREMENT transactions

அட்டவணை நீக்கத்தை நான் சரிபார்க்கிறேன்:

SHOW MEASUREMENTS

நான் பட்டியலில் அட்டவணையைப் பார்க்கவில்லை, ஆனால் புதிய தரவு வினவல் அதே பரிவர்த்தனைகளின் தொகுப்பை இன்னும் வழங்குகிறது.

நீக்கல் வழக்கு தனிமைப்படுத்தப்பட்ட வழக்கு என்பதால் எனக்கு ஒருமுறைதான் பிரச்சனை ஏற்பட்டது. ஆனால் தரவுத்தளத்தின் இந்த நடத்தை "சரியான" செயல்பாட்டின் கட்டமைப்பிற்குள் தெளிவாக பொருந்தாது. பின்னர் கிதுப்பில் திறந்திருப்பதைக் கண்டேன் டிக்கெட் இந்த தலைப்பில் கிட்டத்தட்ட ஒரு வருடம் முன்பு.

இதன் விளைவாக, முழு தரவுத்தளத்தையும் நீக்கி பின்னர் மீட்டமைக்க உதவியது.

2. மிதக்கும் புள்ளி எண்கள்

InfluxDB இல் உள்ளமைந்த செயல்பாடுகளைப் பயன்படுத்தும் போது கணிதக் கணக்கீடுகள் துல்லியமான பிழைகளைக் கொண்டுள்ளன. இது அசாதாரணமானது அல்ல, ஆனால் இது விரும்பத்தகாதது.

என் விஷயத்தில், தரவு நிதிக் கூறுகளைக் கொண்டுள்ளது மற்றும் நான் அதை அதிக துல்லியத்துடன் செயல்படுத்த விரும்புகிறேன். இதன் காரணமாக, தொடர்ச்சியான கேள்விகளை கைவிட திட்டமிட்டுள்ளோம்.

3. தொடர்ச்சியான வினவல்களை வெவ்வேறு நேர மண்டலங்களுக்கு ஏற்ப மாற்ற முடியாது

சேவை தினசரி பரிவர்த்தனை புள்ளிவிவரங்களுடன் ஒரு அட்டவணையைக் கொண்டுள்ளது. ஒவ்வொரு நாளுக்கும், அந்த நாளுக்கான அனைத்து பரிவர்த்தனைகளையும் நீங்கள் குழுவாக்க வேண்டும். ஆனால் ஒவ்வொரு பயனரின் நாளும் வெவ்வேறு நேரத்தில் தொடங்கும், எனவே பரிவர்த்தனைகளின் தொகுப்பு வேறுபட்டதாக இருக்கும். UTC மூலம் ஆம் 37 வகைகள் நீங்கள் தரவுகளை ஒருங்கிணைக்க வேண்டிய மாற்றங்கள்.

InfluxDB இல், நேரத்தின் அடிப்படையில் குழுவாக்கும் போது, ​​நீங்கள் கூடுதலாக ஒரு மாற்றத்தைக் குறிப்பிடலாம், எடுத்துக்காட்டாக மாஸ்கோ நேரம் (UTC+3):

SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)

ஆனால் வினவல் முடிவு தவறாக இருக்கும். சில காரணங்களால், நாள் வாரியாகத் தொகுக்கப்பட்ட தரவு 1677 வரை மீண்டும் தொடங்கும் (InfluxDB அதிகாரப்பூர்வமாக இந்த ஆண்டு கால இடைவெளியை ஆதரிக்கிறது):

InfluxDB உடன் பணிபுரியும் போது கோபம், பேரம் பேசுதல் மற்றும் மனச்சோர்வு

இந்தச் சிக்கலைச் சமாளிக்க, தற்காலிகமாக UTC+0க்கு சேவையை மாற்றியுள்ளோம்.

4. செயல்திறன்

InfluxDB மற்றும் பிற தரவுத்தளங்களை ஒப்பிடும் பல வரையறைகள் இணையத்தில் உள்ளன. முதல் பார்வையில், அவை மார்க்கெட்டிங் பொருட்கள் போல் இருந்தன, ஆனால் இப்போது அவற்றில் சில உண்மை இருப்பதாக நான் நினைக்கிறேன்.

நான் என் வழக்கைச் சொல்கிறேன்.

கடைசி நாளுக்கான புள்ளிவிவரங்களை வழங்கும் API முறையை இந்த சேவை வழங்குகிறது. கணக்கீடுகளைச் செய்யும்போது, ​​முறை பின்வரும் வினவல்களுடன் தரவுத்தளத்தை மூன்று முறை வினவுகிறது:

SELECT * FROM coins_info WHERE time <= NOW() GROUP BY symbol ORDER BY time DESC LIMIT 1

SELECT * FROM dominance_info ORDER BY time DESC LIMIT 1

SELECT * FROM transactions WHERE time >= NOW() - 24h ORDER BY time DESC

விளக்கம்:

  1. முதல் கோரிக்கையில், ஒவ்வொரு நாணயத்திற்கும் சந்தை தரவுகளுடன் கடைசி புள்ளிகளைப் பெறுகிறோம். என் விஷயத்தில் எட்டு நாணயங்களுக்கு எட்டு புள்ளிகள்.
  2. இரண்டாவது கோரிக்கை புதிய புள்ளிகளில் ஒன்றைப் பெறுகிறது.
  3. மூன்றாவது கடைசி XNUMX மணிநேர பரிவர்த்தனைகளின் பட்டியலைக் கோருகிறது; அவற்றில் பல நூறுகள் இருக்கலாம்.

குறிச்சொற்கள் மற்றும் நேரத்தின் அடிப்படையில் InfluxDB தானாகவே ஒரு குறியீட்டை உருவாக்குகிறது, இது வினவல்களை விரைவுபடுத்துகிறது என்பதை தெளிவுபடுத்துகிறேன். முதல் கோரிக்கையில் சின்னமாக ஒரு குறிச்சொல் ஆகும்.

இந்த API முறையில் நான் அழுத்த சோதனையை நடத்தியுள்ளேன். 25 RPS க்கு, சேவையகம் ஆறு CPUகளின் முழு சுமையைக் காட்டியது:

InfluxDB உடன் பணிபுரியும் போது கோபம், பேரம் பேசுதல் மற்றும் மனச்சோர்வு

அதே நேரத்தில், NodeJs செயல்முறை எந்த சுமையையும் வழங்கவில்லை.

செயல்படுத்தும் வேகம் ஏற்கனவே 7-10 RPS ஆல் குறைக்கப்பட்டுள்ளது: ஒரு கிளையன்ட் 200 ms இல் பதிலைப் பெற முடிந்தால், 10 வாடிக்கையாளர்கள் ஒரு நொடி காத்திருக்க வேண்டும். 25 RPS என்பது ஸ்திரத்தன்மை பாதிக்கப்பட்ட வரம்பு; வாடிக்கையாளர்களுக்கு 500 பிழைகள் திருப்பி அனுப்பப்பட்டன.

அத்தகைய செயல்திறனுடன், எங்கள் திட்டத்தில் Influx ஐப் பயன்படுத்த இயலாது. மேலும்: பல வாடிக்கையாளர்களுக்கு கண்காணிப்பு காட்டப்பட வேண்டிய திட்டத்தில், இதே போன்ற சிக்கல்கள் தோன்றலாம் மற்றும் அளவீடுகள் சேவையகம் ஓவர்லோட் செய்யப்படும்.

முடிவுக்கு

பெறப்பட்ட அனுபவத்தின் மிக முக்கியமான முடிவு என்னவென்றால், போதுமான பகுப்பாய்வு இல்லாமல் ஒரு திட்டத்தில் அறியப்படாத தொழில்நுட்பத்தை நீங்கள் எடுக்க முடியாது. கிதுப்பில் உள்ள திறந்த சிக்கல்களின் எளிய திரையிடல், முக்கிய தரவு சேமிப்பகமாக InfluxDB ஐத் தேர்ந்தெடுப்பதைத் தவிர்க்க தகவலை வழங்கலாம்.

எனது திட்டத்தின் பணிகளுக்கு InfluxDB ஒரு நல்ல பொருத்தமாக இருந்திருக்க வேண்டும், ஆனால் நடைமுறையில் காட்டப்பட்டுள்ளபடி, இந்த தரவுத்தளம் தேவைகளை பூர்த்தி செய்யவில்லை மற்றும் நிறைய பிழைகள் உள்ளன.

திட்ட களஞ்சியத்தில் நீங்கள் ஏற்கனவே பதிப்பு 2.0.0-பீட்டாவைக் காணலாம்; இரண்டாவது பதிப்பில் குறிப்பிடத்தக்க மேம்பாடுகள் இருக்கும் என்று மட்டுமே நம்புகிறோம். இதற்கிடையில், நான் TimescaleDB ஆவணங்களைப் படிக்கச் செல்கிறேன்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்