কম্পিউটার টিউটোরিয়াল

RedisTimeSeries 1.6 রিলিজ: হাই-পারফরম্যান্স টাইম সিরিজের জন্য নতুন ফিচার

আজ, আমরা RedisTimeSeries 1.6-এর জেনারেল অ্যাভেইলেবিলিটি ঘোষণা করে খুশি হচ্ছি। এই ব্লগ পোস্টে এখন উপলব্ধ প্রধান নতুন ফিচারগুলো ডিটেইল করা হয়েছে।

RedisTimeSeries সম্পর্কে

RedisTimeSeries Redis-এর জন্য একটি হাই-পারফরম্যান্স, মেমরি-ফার্স্ট টাইম-সিরিজ ডেটা স্ট্রাকচার। RedisTimeSeries টাইম সিরিজ মাল্টি-টেন্যান্সি সাপোর্ট করে (এটি একসাথে অনেক টাইম সিরিজ ধারণ করতে পারে) এবং একই সাথে এই টাইম সিরিজগুলো এক্সেস করতে একাধিক ক্লায়েন্টকে সার্ভ করতে পারে। এখন এটি Redis Stack-এর অংশ হিসেবেও উপলব্ধ।

RedisTimeSeries 1.6-এ প্রধান নতুন ফিচারগুলো

  • এনহান্সড কুয়েরি ক্যাপাবিলিটি
    • ক্রস-টাইম সিরিজ অ্যাগ্রিগেশন
    • টাইমস্ট্যাম্প বা স্যাম্পল ভ্যালু দ্বারা ফিল্টারিং রেজাল্ট
    • কোন লেবেলগুলো রিট্রিভ করা হবে সেটি সিলেক্ট করা
    • অ্যাগ্রিগেশন বাকেট আলাইন করা
      স্যাম্পল ডিলিট করা
  • ইম্প্রুভড পারফরম্যান্স
  • KeySpace নোটিফিকেশন
  • Redis on Flash-এর জন্য Redis Enterprise সাপোর্ট

এনহান্সড কুয়েরি ক্যাপাবিলিটি

ক্রস-টাইম সিরিজ অ্যাগ্রিগেশন

ভার্সন 1.6-এর আগে, শুধু একটি টাইপের অ্যাগ্রিগেশন সম্ভব ছিল:

  • একটি সিঙ্গল টাইম সিরিজের জন্য –
    ইকুইডিউরেশনাল টাইমফ্রেমের ওভার স্যাম্পল অ্যাগ্রিগেট করা।

ভার্সন 1.6 থেকে, দুটি নতুন অ্যাগ্রিগেশন টাইপ সম্ভব:

  • একাধিক টাইম সিরিজের জন্য –
    সমান টাইমস্ট্যাম্পযুক্ত স্যাম্পলগুলো টাইম সিরিজের সেটের ওভার অ্যাগ্রিগেট করা।
  • একাধিক টাইম সিরিজের জন্য –
    প্রথমে, প্রতিটি টাইম সিরিজ ইকুইডিউরেশনাল টাইমফ্রেমের ওভার অ্যাগ্রিগেট করা, তারপর, প্রতিটি টাইমফ্রেমের জন্য, টাইম সিরিজের সেটের ওভার রেজাল্টগুলো অ্যাগ্রিগেট করা।

প্রথম নতুন অ্যাগ্রিগেশন টাইপটি ডেমো করি। প্রথম, দুটি স্টক তৈরি করি, এবং তাদের প্রাইস ৩টি আলাদা টাইমস্ট্যাম্পে যোগ করি:

TS.CREATE stock:A LABELS type stock name A
TS.CREATE stock:B LABELS type stock name B
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:B 1000 120 stock:B 1010 110 stock:B 1020 100

এখন, আমরা প্রতি টাইমস্ট্যাম্প ম্যাক্সিমাম স্টক প্রাইস রিট্রিভ করতে পারি:

redis:6379> TS.MRANGE - + WITHLABELS FILTER type=stock GROUPBY type 
REDUCE max

1) 1) "type=stock"
2) 1) 1) "type"
2) "stock"
2) 1) "__reducer__"
2) "max"
3) 1) "__source__"
2) "stock:A,stock:B"
3) 1) 1) (integer) 1000
2) 120
2) 1) (integer) 1010
2) 110
3) 1) (integer) 1020
2) 120

FILTER type=stock
ক্লজ আমাদের শুধু একটি টাইম সিরিজ দিয়ে রেখে দিয়েছে যা স্টক প্রাইস রিপ্রেজেন্ট করে।
GROUPBY type REDUCE
max
ক্লজ টাইম সিরিজকে আইডেন্টিক্যাল টাইপ ভ্যালুযুক্ত গ্রুপে ভাগ করে, এবং তারপর, প্রতিটি টাইমস্ট্যাম্পের জন্য, সমান টাইপ ভ্যালু শেয়ার করা সকল সিরিজকে max অ্যাগ্রিগেটর ব্যবহার করে অ্যাগ্রিগেট করে।

FILTER label=value
TS.MRANGE এবং TS.MREVRANGE দ্বারা সাপোর্টেড। অতিরিক্ত ফিল্টারিং ক্লজও সাপোর্টেড (ডকুমেন্টেশন দেখুন)।

এরপর, আমরা দ্বিতীয় নতুন অ্যাগ্রিগেশন টাইপটি ডেমো করব:

প্রথম, দুটি স্টক তৈরি করি, এবং তাদের প্রাইস ৯টি আলাদা টাইমস্ট্যাম্পে যোগ করি।

TS.CREATE stock:A LABELS type stock name A
TS.CREATE stock:B LABELS type stock name B
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:B 1000 120 stock:B 1010 110 stock:B 1020 100
TS.MADD stock:A 2000 200 stock:A 2010 210 stock:A 2020 220
TS.MADD stock:B 2000 220 stock:B 2010 210 stock:B 2020 200
TS.MADD stock:A 3000 300 stock:A 3010 310 stock:A 3020 320
TS.MADD stock:B 3000 320 stock:B 3010 310 stock:B 3020 300

এখন, প্রতিটি স্টকের জন্য, আমরা ১০০০ মিলিসেকেন্ড টাইম ফ্রেম প্রতি গড় স্টক প্রাইস ক্যালকুলেট করব, এবং তারপর সেটি টাইমফ্রেমের জন্য ম্যাক্সিমাম গড়যুক্ত স্টকটি রিট্রিভ করব:

redis:6379> TS.MRANGE - + WITHLABELS AGGREGATION avg 1000 FILTER type=stock GROUPBY type REDUCE max

1) 1) "type=stock"
2) 1) 1) "type"
2) "stock"
2) 1) "__reducer__"
2) "max"
3) 1) "__source__"
2) "stock:A,stock:B"
3) 1) 1) (integer) 1000
2) 110
2) 1) (integer) 2000
2) 210
3) 1) (integer) 3000
2) 310

GROUPBY label REDUCE reducer
TS.MRANGE এবং TS.MREVRANGE দ্বারা সাপোর্টেড।

Reducer হতে পারে sum, min, বা max।

টাইমস্ট্যাম্প বা স্যাম্পল ভ্যালু দ্বারা ফিল্টারিং রেজাল্ট

TS.RANGE, TS.REVRANGE, TS.MRANGE, এবং TS.MREVRANGE ব্যবহার করার সময়, আপনি সবসময় সকল স্যাম্পল রিট্রিভ বা অ্যাগ্রিগেট করতে চাও না।

[FILTER_BY_TS ts...]
ব্যবহার করে আপনি স্যাম্পলকে স্পেসিফিক টাইমস্ট্যাম্পের একটি লিস্ট দ্বারা ফিল্টার করতে পারেন।

[FILTER_BY_VALUE min max]
ব্যবহার করে আপনি স্যাম্পলকে মিনিমাম এবং ম্যাক্সিমাম ভ্যালু দ্বারা ফিল্টার করতে পারেন।

উদাহরণস্বরূপ, একটি স্যাম্পলড মেট্রিক বিবেচনা করুন যেখানে নরমাল ভ্যালু -১০০ এবং ১০০ এর মাঝপথে, কিন্তু ৯৯৯৯ ভ্যালু ব্যাড মেজারমেন্টের ইন্ডিকেশন হিসেবে ব্যবহৃত হয়।

TS.CREATE temp:TLV LABELS type temp location TLV
TS.MADD temp:TLV 1000 30 temp:TLV 1010 35 temp:TLV 1020 9999
temp:TLV 1030 40

এখন, সকল ভ্যালু রিট্রিভ করুন, আউট-অফ-রেঞ্জ ভ্যালু ইগনোর করে:

TS.RANGE temp:TLV - + FILTER_BY_VALUE -100 100

আউট-অফ-রেঞ্জ ভ্যালু ইগনোর করে গড় ভ্যালুও রিট্রিভ করুন:

TS.RANGE temp:TLV - + FILTER_BY_VALUE -100 100 AGGREGATION avg 1000

কোন লেবেলগুলো রিট্রিভ করা হবে সেটি সিলেক্ট করা

TS.MRANGE, TS.MREVRANGE, এবং TS.MGET ব্যবহার করার সময়, আমরা সবসময় ম্যাচ করা টাইম সিরিজের সাথে asoshiated সকল লেবেলের ভ্যালু চাই না, বরং শুধু সিলেক্টেড লেবেলের ভ্যালু চাই।

SELECTED_LABELS
সিলেক্ট করার অনুমতি দেয় কোন লেবেলগুলো রিট্রিভ করা হবে। নিচের টাইম সিরিজ এবং ডেটা দিয়ে:

TS.CREATE temp:TLV LABELS type temp location TLV
TS.MADD temp:TLV 1000 30 temp:TLV 1010 35 temp:TLV 1020 9999
temp:TLV 1030 40

ম্যাচ করা টাইম সিরিজের সাথে asoshiated সকল লেবেল পেতে আমরা

WITHLABELS
ব্যবহার করব:

redis:6379> TS.MGET WITHLABELS FILTER type=temp

1) 1) "temp:TLV"
2) 1) 1) "type"
2) "temp"
2) 1) "location"
2) "TLV"
3) 1) (integer) 1030
2) 40

কিন্তু ধরে নিন আমরা শুধু location চাই, আমরা

SELECTED_LABELS:
ব্যবহার করতে পারি

redis:6379> TS.MGET SELECTED_LABELS location FILTER type=temp

1) 1) "temp:TLV"
2) 1) 1) "location"
2) "TLV"
3) 1) (integer) 1030
2) 40

অ্যাগ্রিগেশন বাকেট আলাইন করা

মান লিন আপনি গড় দৈনিক তাপমাত্রা পেতে চান, কিন্তু আপনার 'দিন' ০৬:০০-তে শুরু হয়। এই কেসে, আমরা ইন্টারভালগুলোকে ০৬:০০ থেকে ০৫:৫৯-এ আলাইন করতে চাব, ০০:০০ থেকে ২৩:৫৯-এ না।

TS.RANGE, TS.REVRANGE, TS.MRANGE, এবং TS.MREVRANGE ব্যবহার করার সময়, এখন অ্যাগ্রিগেশন বাকেটগুলো রিকোয়েস্টেড স্টার্ট, এন্ড, বা স্পেসিফিক টাইমস্ট্যাম্পের সাথে আলাইন করা সম্ভব –

ALIGN
ব্যবহার করে।

অ্যালাইনমেন্ট ডেমো করতে, নিচের ডেটা যোগ করি:

TS.CREATE stock:A LABELS type stock name A
TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120
TS.MADD stock:A 1030 200 stock:A 1040 210 stock:A 1050 220
TS.MADD stock:A 1060 300 stock:A 1070 310 stock:A 1080 320

এরপর, আমরা

ALIGN
ছাড়া অ্যাগ্রিগেট করব (যেটি মানে ডিফল্ট অ্যালাইনমেন্ট: 0)

redis:6379> TS.RANGE stock:A - + AGGREGATION min 20

1) 1) (integer) 1000
2) 100
2) 1) (integer) 1020
2) 120
3) 1) (integer) 1040
2) 210
4) 1) (integer) 1060
2) 300
5) 1) (integer) 1080
2) 320

এবং এখন

ALIGN
দিয়ে:

redis:6379> TS.RANGE stock:A – + ALIGN 10 AGGREGATION min 20

1) 1) (integer) 990
2) 100
2) 1) (integer) 1010
2) 110
3) 1) (integer) 1030
2) 200
4) 1) (integer) 1050
2) 220
5) 1) (integer) 1070
2) 310

ALIGN
১০ সেট করা মানে একটি বাকেট টাইম ১০-এ শুরু হওয়া উচিত, এবং সকল বাকেট (প্রতিটি ২০ মিলিসেকেন্ড ডিউরেশন) সেই অনুযায়ী আলাইন হয়।

যখন রেঞ্জ কুয়েরির জন্য স্টার্ট টাইমস্ট্যাম্প এক্সপ্লিসিটলি স্টেট করা থাকে (না '-'), তখন ALIGN সেট করাও সম্ভব সেটি টাইমে '–' বা '

start
' সেট করলে।

redis:6379> TS.RANGE stock:A 5 + ALIGN – AGGREGATION min 20

1) 1) (integer) 985
2) 100
2) 1) (integer) 1005
2) 110
3) 1) (integer) 1025
2) 200
4) 1) (integer) 1045
2) 220
5) 1) (integer) 1065
2) 310

একইভাবে, যখন রেঞ্জ কুয়েরির জন্য এন্ড টাইমস্ট্যাম্প এক্সপ্লিসিটলি স্টেট করা থাকে (না '+'), তখন

ALIGN
সেট করাও সম্ভব সেটি টাইমে '+' বা 'end' সেট করলে।

স্যাম্পল ডিলিট করা

TS.DEL একটি দেয়া টাইম সিরিজে দুটি টাইমস্ট্যাম্পের মধ্যে স্যাম্পল ডিলিট করার অনুমতি দেয়।

উদাহরণস্বরূপ,

TS.DEL stock:A 1020 1050
১০২০ এবং ১০৫০-এর মাঝপথে (ইনক্লूसিভ) টাইমস্ট্যাম্পযুক্ত সকল স্যাম্পল ডিলিট করবে। রিটার্নড ভ্যালু হলো ডিলিট করা স্যাম্পলের সংখ্যা।

ইম্প্রুভড পারফরম্যান্স

অনেক অপ্টিমাইজেশন ইমপ্লিমেন্ট করা হয়েছে, এবং অধিকাংশ কুয়েরি এখন RedisTimeSeries 1.4-এর চেয়ে অনেক দ্রুত এক্সিকিউট হবে।

নিচের টেবিলটি সিঙ্গল নোডে অর্জনযোগ্য কুয়েরি পার সেকেন্ডের সংখ্যা ডিটেইল করে TSBS কুয়েরির জন্য (যেটি আমরা এখানে বর্ণনা করেছি)। টেবিলটি শুধু TSBS কুয়েরির সাবসেট লিস্ট করে যেগুলো ভার্সন 1.4-এ সাপোর্টেড ছিল।

Query type1.4
queries/sec
v1.6
queries/sec
% change (higher-better)
tsbs-scale100_cpu-max-all-1138815008.07%
tsbs-scale100_double-groupby-11001088.00%
tsbs-scale100_groupby-orderby-limit793128261.66%
tsbs-scale100_single-groupby-1-1-1134482134758.74%
tsbs-scale100_single-groupby-1-1-122383392164.54%

আমরা ৮% থেকে ৬৫% পারফরম্যান্স ইম্প্রুভমেন্ট পর্যবেক্ষণ করছি কুয়েরি পার সেকেন্ডের সংখ্যায়, RedisTimeSeries 1.4-এর তুলনায়।

KeySpace নোটিফিকেশন

Redis KeySpace নোটিফিকেশন Redis ক্লায়েন্টদের Pub/Sub চ্যানেল সাবস্ক্রাইব করতে দেয় যাতে সে ইভেন্টগুলো রিসিভ করতে পারে যা Redis ডেটা সেটকে কিছুভাবে এফেক্ট করে। আপনি উদাহরণস্বরূপ, RedisGears ব্যবহার করে এই নোটিফিকেশন দিয়ে একটি ফাংশন ট্রিগার করতে পারেন।

উদাহরণস্বরূপ, একটি টাইম সিরিজ প্রিডিক্টর বা অ্যানোমালি ডিটেক্টর ইমপ্লিমেন্ট করা সম্ভব যা স্যাম্পল স্ট্রিমকে লিসেন করে এবং রিয়েল-টাইম প্রিডিকশন এবং ওয়ার্নিং জেনারেট করে।
উদাহরণস্বরূপ, এই টেস্ট চেক করুন যা বিভিন্ন RedisTimeSeries কমান্ড সাবস্ক্রাইব করে এবং ইভেন্ট জেনারেট করে।

Redis on Flash-এর জন্য Redis Enterprise সাপোর্ট

ভার্সন 1.6 থেকে, RedisTimeSeries Redis on Flash-এ রান করতে পারে, তবে এটি নোট করা গুরুত্বপূর্ণ যে RoF কি লেভেলে ইমপ্লিমেন্টেড। অর্থাৎ, পুরো টাইম সিরিজের ভ্যালু হয় FLASH-এ থাকে বা RAM-এ।

RedisTimeSeries Redis Stack-এর অংশ

RedisTimeSeries এখন Redis Stack-এর অংশ। আপনি লেটেস্ট Redis Stack Server বাইনারি macOS, Ubuntu, বা Redhat-এর জন্য ডাউনলোড করতে পারেন, অথবা Docker, Homebrew, বা Linux-এ ইনস্টল করতে পারেন।

RedisInsight দিয়ে টাইম সিরিজ ডেটা ভিজুয়ালাইজ করুন

RedisInsight ডেভেলপারদের জন্য একটি ভিজুয়াল টুল যা ডেভেলপমেন্টের সময় RedisTimeSeries থেকে ডেটা এক্সপ্লোর করার একটি চমৎকার উপায় প্রদান করে Redis বা Redis Stack ব্যবহার করে।

আপনি টাইম সিরিজ কুয়েরি এক্সিকিউট করতে পারেন এবং রেজাল্টগুলো গ্রাফিক্যাল ইউজার ইন্টারফেস থেকে সরাসরি مشاهده করতে পারেন। RedisInsight এখন RedisTimeSeries কুয়েরি রেজাল্ট ভিজুয়ালাইজ করতে পারে।

RedisTimeSeries 1.6 রিলিজ: হাই-পারফরম্যান্স টাইম সিরিজের জন্য নতুন ফিচার

এছাড়া, RedisInsight-এ কুইক গাইড এবং টিউটোরিয়াল রয়েছে RedisTimeSeries ইন্টারঅ্যাক্টিভলি শিখতে।

RedisTimeSeries 1.6 রিলিজ: হাই-পারফরম্যান্স টাইম সিরিজের জন্য নতুন ফিচার

RedisTimeSeries সম্পর্কে আরও জানুন redis.io এবং developer.redis.com-এ।

  1. পিসিতে জুম আউট করার উপায় (How to Zoom Out On a PC)

  2. RedisGraph ২.৮ এখন উপলব্ধ: নতুন ফিচার ও উন্নতি

  3. RedisTimeSeries দিয়ে একটি স্কেলেবল ফাইন্যান্সিয়াল অ্যাপ্লিকেশন বানান

  4. স্মার্ট টিভিতে নেটফ্লিক্স অডিও সিঙ্ক সমস্যা সমাধান করুন