PostgreSQL- এর জন্য Amazon RDS-এর মতো পণ্যগুলি ছোট স্থাপনার জন্য ঠিক আছে, কিন্তু PostgreSQL স্কেলিং একটি ভিন্ন গল্প। একবার প্রকল্পটি অনেক টেরাবাইটে বেড়ে গেলে, এই পরিচালিত ডেটাবেসগুলি ধীর এবং ব্যয়বহুল হয়ে যায়, যা ডেটা ব্যবস্থাপনাকে আরও জটিল করে তোলে।
সারণি বিলিয়ন সারি পৌঁছানোর সময় পারফরম্যান্স ক্ষতিগ্রস্ত হয়, এবং যখন
কিন্তু আর কখনো না. আজ, আমরা Tiered Storage-এর সাধারণ উপলব্ধতা ঘোষণা করতে পেরে আনন্দিত, একটি বহু-স্তরযুক্ত স্টোরেজ আর্কিটেকচার যা টাইমস্কেল প্ল্যাটফর্মে আপনার টাইম সিরিজ এবং বিশ্লেষণাত্মক ডাটাবেসের জন্য অসীম, কম খরচের স্কেলেবিলিটি সক্ষম করার জন্য তৈরি করা হয়েছে। আপনি এখন আপনার পুরানো, কদাচিৎ অ্যাক্সেস করা ডেটা একটি কম খরচের স্টোরেজ স্তরে সঞ্চয় করতে পারেন যদিও এখনও এটি অ্যাক্সেস করতে সক্ষম হচ্ছেন—আপনার ঘন ঘন অ্যাক্সেস করা ডেটার জন্য কর্মক্ষমতা বলিদান ছাড়াই।
আপনি যখন আমাদের নতুন বহু-স্তরযুক্ত স্টোরেজ ব্যাকএন্ড সহ একটি টাইমস্কেল টাইম-সিরিজ ডাটাবেসে ডেটা সন্নিবেশ করেন তখন এটি ঘটে:
আপনার সাম্প্রতিক ডেটা দ্রুত ক্যোয়ারী এবং উচ্চ ইনজেস্টের জন্য অপ্টিমাইজ করা একটি উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে লেখা হবে।
একবার আপনি ঘন ঘন সেই ডেটা অ্যাক্সেস না করলে, আপনি একটি টায়ারিং নীতি সেট আপ করে স্বয়ংক্রিয়ভাবে এটিকে একটি কম খরচের অবজেক্ট স্টোরেজ স্তরে স্তরিত করতে পারেন। স্বল্প-মূল্যের স্টোরেজ স্তরের ডেটা আপনার ডাটাবেসের মধ্যে সম্পূর্ণরূপে অনুসন্ধানযোগ্য থাকে এবং আপনি যে পরিমাণ ডেটা সঞ্চয় করতে পারেন তার কোনও সীমা নেই - শত শত টিবি বা তার বেশি পর্যন্ত৷ আমাদের কম খরচের স্টোরেজ স্তরে ডেটার জন্য প্রতি GB/মাস $0.021 ফ্ল্যাট মূল্য রয়েছে—Amazon S3 থেকে সস্তা।
ডেভেলপারদের কর্মক্ষমতার সাথে আপস না করে AWS- এ তাদের বৃহৎ PostgreSQL ডাটাবেস স্কেল করার জন্য একটি সস্তা উপায় প্রয়োজন। যদিও অবজেক্ট স্টোরগুলি আশ্চর্যজনকভাবে স্কেলযোগ্য এবং সাশ্রয়ী মূল্যের, সেগুলি দ্রুততম নয় এবং বিকাশকারীদের তাদের অ্যাপ্লিকেশনগুলির জন্য মিলিসেকেন্ডের ক্যোয়ারী প্রতিক্রিয়াগুলিও পেতে হবে।
যাইহোক, একবার ডেটা পুরানো হয়ে গেলে এবং খুব কমই অ্যাক্সেস করা হলে, রিয়েল-টাইম কর্মক্ষমতা প্রায়শই ততটা অপরিহার্য নয়। বিকাশকারীদের এখনও অ্যাডহক কোয়েরি, ডেটা বিশ্লেষণ বা নিয়ন্ত্রক সম্মতির জন্য এই ঐতিহাসিক ডেটা অ্যাক্সেস করতে সক্ষম হতে হবে, তবে তারা এই ধরনের প্রশ্নের জন্য কিছু লেটেন্সি ধরে নিতে পারে। এখন, বিকাশকারীরা যা চান তা হল এই ঐতিহাসিক ডেটা যতটা সম্ভব সাশ্রয়ী এবং দক্ষতার সাথে সংরক্ষণ করার ক্ষমতা।
এই নতুন টায়ার্ড স্টোরেজ আর্কিটেকচার ডেভেলপারদের রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য স্টোরেজ খরচ এবং পারফরম্যান্স ট্রেড-অফের মধ্যে বেছে নেওয়া থেকে মুক্ত করে। তাদের সাম্প্রতিক এবং ঘন ঘন অ্যাক্সেস করা ডেটা উচ্চ-পারফরম্যান্স স্তরে রেখে, তারা টাইমস্কেলের মিলিসেকেন্ডের ক্যোয়ারী গতি এবং ইনজেশন ক্ষমতার সুবিধা নেবে এবং তাদের পুরানো ডেটা টায়ার্ড করে, তারা তাদের PostgreSQL ডাটাবেসে যতগুলি প্রয়োজন ততগুলি TB রাখতে পারে কম
টাইমস্কেলের টায়ার্ড স্টোরেজ আর্কিটেকচার PostgreSQL এর নমনীয়তা লাভ করে এবং
এই স্টোরেজ আর্কিটেকচারটি টাইমস্কেল পরিষেবাগুলিতে যে কোনও স্টোরেজ সীমাবদ্ধতাও দূর করে: যেহেতু আমাদের কম খরচের স্টোরেজ স্তর অসীম, আপনি যত খুশি ততগুলি টিবি সঞ্চয় করতে পারেন। উদাহরণ স্বরূপ,
এই ইনসাইটস ডাটাবেসটি ক্রমাগত আমাদের গ্রাহক বহরে থেকে কোয়েরির পরিসংখ্যান সংগ্রহ ও বিশ্লেষণ করছে, এবং এটি আজ 350 টিবি ছাড়িয়ে গেছে এবং দ্রুত বৃদ্ধি পাচ্ছে। সেই 350 TB থেকে, 250 TB কম খরচের স্টোরেজের জন্য টায়ার্ড।
আসুন গণিত করি:
আমরা কম্প্রেশনের পরে আমাদের উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে 5 TB সঞ্চয় করি। অবশ্যই, আমরা কম্প্রেশন সক্ষম করেছি, এবং আমরা 20x এর কম্প্রেশন অনুপাত পাচ্ছি—অর্থাৎ 100 TB পোস্টগ্রেস ডেটা এখন 5 TB ডিস্কে ফিট করে কম্প্রেশনের (!)
অবশিষ্ট 250 TB ডেটা কম খরচে স্টোরেজ স্তরে সংরক্ষণ করা হয়। ডেটা একটি নির্দিষ্ট বয়সে পৌঁছানোর পরে এই স্তরকরণটি স্বয়ংক্রিয়ভাবে ঘটে, যা বর্তমানে কয়েক সপ্তাহের পুরনো।
বৃহৎ স্থাপনার সাথে আমাদের গ্রাহকরাও ইতিমধ্যে টায়ার্ড স্টোরেজ ব্যবহার করছেন:
"আমরা বাজারের ডেটার উপর প্রচুর বিশ্লেষণ করি, এবং আমাদের যে পরিমাণ ডেটা সঞ্চয় করতে হবে তা একটি সাধারণ ডিস্ক-ভিত্তিক ডাটাবেস সমাধানকে অসম্ভাব্য করে তোলে (এটি খুব ব্যয়বহুল)। টাইমস্কেলের টায়ার্ড স্টোরেজ নির্বিঘ্নে আমাদেরকে প্রচুর পরিমাণে ডেটা স্থানান্তর করতে দেয়। অবজেক্ট স্টোরেজ লেয়ার। ঐতিহাসিক ডেটার বিশাল ভলিউম সঞ্চয় করার এবং পোস্ট-অ্যানালাইসিস করার জন্য এটি একটি দুর্দান্ত সমাধান। এটি ছাড়া, আমরা ঘরের মধ্যে একটি সমাধান তৈরি করতে বাধ্য হব।"
- একটি মালিকানাধীন ডিজিটাল সম্পদ ট্রেডিং কোম্পানির প্রধান প্রযুক্তি কর্মকর্তা
সরলতা টায়ার্ড স্টোরেজের মূল বৈশিষ্ট্য। আপনার ডেটা উচ্চ-পারফরম্যান্স টিয়ার থেকে কম খরচের অবজেক্ট টিয়ারে স্থানান্তর করতে, আপনাকে যা করতে হবে তা হল আমাদের
সম্পাদকের দ্রষ্টব্য: টাইমস্কেল হাইপারটেবলগুলি হল PostgreSQL টেবিলগুলি স্বয়ংক্রিয়ভাবে সময়ের দ্বারা বিভক্ত। সেই পার্টিশনগুলোকে বলা হয় খণ্ড। খণ্ডগুলি হল টাইমস্কেলে ব্যবহারকারী-সংজ্ঞায়িত নীতিগুলির একক: উদাহরণস্বরূপ, যখন আপনি একটি ডেটা ধারণ নীতি সংজ্ঞায়িত করবেন, তখন আপনি সম্পূর্ণ পার্টিশন (খণ্ডগুলি) মুছে ফেলবেন এবং যখন আপনি স্টোরেজ স্তরগুলির মধ্যে ডেটা স্থানান্তর করবেন, তখন আপনি সম্পূর্ণ অংশগুলি সরাতে থাকবেন . এটি একটি সম্পদ-ব্যবহার এবং বিকাশকারীর অভিজ্ঞতার দৃষ্টিকোণ থেকে ডেটা পরিচালনা করার একটি খুব সুবিধাজনক উপায়।
উদাহরণস্বরূপ, এই নীতিটি আপনার events
হাইপারটেবলের অবজেক্ট স্টোরেজে এক মাসের বেশি পুরানো সমস্ত ডেটা স্থানান্তরিত করবে:
SELECT add_tiering_policy('events', INTERVAL '1 month');
যে সব আপনি প্রয়োজন! বুদ্ধিমান ক্যোয়ারী প্ল্যানিং সহ অন্য সবকিছু স্বয়ংক্রিয়ভাবে ঘটে যা শুধুমাত্র উপযুক্ত স্তরে যেকোন এসকিউএল কোয়েরি চালায়।
বর্তমানে কম খরচের স্টোরেজ স্তরে সঞ্চিত ডেটা ড্রপ করতে, আপনি একটি ডেটা ধারণ নীতি নির্ধারণ করতে পারেন যাতে একটি নির্দিষ্ট সময়ের পরে (যেমন, পাঁচ বছর পরে) ডেটা স্বয়ংক্রিয়ভাবে মুছে যায়।
এছাড়াও, আপনি যদি স্বল্প-মূল্যের স্টোরেজ স্তর থেকে উচ্চ-পারফরম্যান্স স্তরে একটি নির্দিষ্ট অংশকে "ফিরে যেতে" চান (
-- Untier a particular chunk CALL untier_chunk('_hyper_1_1_chunk');
আপনি টাইমস্কেল কনসোলে কত ডেটা টায়ার্ড করা হয়েছে (এবং মাসের শেষে কত খরচ হবে) তা ট্র্যাক করতে পারেন:
এবং বিলিং অনুমানের কথা বলছি...
আমাদের উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে প্রতি GB/মাস ডেটার কার্যকর মূল্য $0.177
ডেটা টিয়ারিং করার সময়, আপনি শুধুমাত্র আপনার সঞ্চয় করা ডেটার জন্য অর্থপ্রদান করবেন, এক্সিকিউট করা প্রশ্ন বা স্ক্যান করা ডেটার পরিমাণের জন্য নয়: এটি সত্যিই একটি সমতল মূল্য। এই মূল্য কাঠামোর সাথে আমাদের লক্ষ্য ছিল মোট ডেটা স্টোরেজ খরচ গণনা করার জন্য একটি স্বচ্ছ, দ্ব্যর্থহীন এবং সহজ উপায় প্রদান করা, যাতে আপনার ডেটা পরিচালনা করা সহজ হয়।
একটি দ্রুত উদাহরণ হিসাবে, ধরা যাক আপনার কাছে 5.2 TB স্টোরেজ সহ একটি হাইপারটেবল রয়েছে, সাম্প্রতিক হাইপারটেবল খণ্ড এবং অন্যান্য পোস্টগ্রেস টেবিলগুলি প্রায় 200 GB এবং এক মাসের চেয়ে পুরানো হাইপারটেবল ডেটা প্রায় 5 TB গ্রহণ করে৷ আপনি ঘন ঘন এই পুরানো ডেটা অ্যাক্সেস বা অনুসন্ধান করবেন না, যার অর্থ আপনার অ্যাপ্লিকেশনের দৈনন্দিন ক্রিয়াকলাপগুলির জন্য এটির প্রয়োজন নেই৷ তবুও, অ্যাডহক প্রশ্ন বা সম্মতির প্রয়োজনীয়তার জন্য আপনি এটিকে আপনার ডাটাবেসে অ্যাক্সেসযোগ্য রাখতে চান (আমরা আমাদের গ্রাহকদের মধ্যে এই ধরনের অনেক ঘটনা দেখতে পাই)।
একটি খরচ-কার্যকর ডেটা ম্যানেজমেন্ট কৌশল হিসাবে, আপনি এক মাসের চেয়ে পুরানো সমস্ত খণ্ডকে কম খরচের স্তরে শ্রেণীবদ্ধ করতে পারেন এবং সেই 5 TB ডেটা সংরক্ষণের খরচ প্রায় $478/মাস থেকে প্রায় $105/মাসে কমিয়ে আনতে পারেন, একটি 78% হ্রাস আপনার স্টোরেজ বিলে। ( এই অনুমানের জন্য, আমরা ধরে নিই যে আপনি আপনার হাইপারটেবলের জন্য কম্প্রেশন সক্ষম করেছেন এবং সমস্ত টাইমস্কেল পরিষেবাগুলিতে মধ্যম সামগ্রিক কম্প্রেশন বিবেচনা করুন)।
আপনার ডেটার পাশাপাশি সঞ্চয়ও বাড়বে: যখন একাধিক টেরাবাইট এই কম খরচের স্তরে স্থানান্তরিত করা হয়, তখন আপনার স্টোরেজ বিল হাজার হাজার ডলার থেকে কয়েকশো ডলারে কমে যাবে। নিম্নোক্ত রেফারেন্স টেবিলটি আমাদের স্বল্প খরচের স্টোরেজ স্তরটি আসলে কতটা সাশ্রয়ী মূল্যের তা ব্যাখ্যা করে।
আপনি বিন্দু পেতে!
আরও একটি জিনিস রয়েছে যা টায়ার্ড স্টোরেজকে আরও আশ্চর্যজনক করে তোলে: আপনি যখন কম খরচের স্টোরেজ স্তরে ডেটা রাখেন, তখন আপনি এই ডেটার জন্য শুধুমাত্র একবার অর্থ প্রদান করেন, যদি আপনার কাছে উচ্চ-প্রাপ্যতার প্রতিলিপি থাকে বা আপনার পরিষেবাতে চলমান প্রতিলিপিগুলি পড়ে থাকে। .
একই কাঁটাচামচ প্রযোজ্য. টাইমস্কেলে, আপনি UI থেকে একটি বোতামে ক্লিক করে আপনার প্রাথমিক ডাটাবেসের অনুলিপি তৈরি করতে পারেন (আমরা তাদের ফর্ক বলি), উদাহরণস্বরূপ, পরীক্ষা চালানোর জন্য বা ডেভ পরিবেশ তৈরি করার জন্য। একটি (বা একাধিক) ফর্ক তৈরি করার সময়, কম খরচের স্টোরেজে প্রাইমারির সাথে শেয়ার করা ডেটার জন্য আপনাকে বিল করা হবে না । আপনি যদি প্রাইমারিতে নেই এমন আরও ডেটা টাইয়ার করার সিদ্ধান্ত নেন, তাহলে আপনি এটিকে কম খরচের স্তরে সঞ্চয় করার জন্য অর্থ প্রদান করবেন, তবে ফর্কের উচ্চ-পারফরম্যান্স স্তর থেকে সস্তা স্তরে স্থানান্তর করে আপনি যথেষ্ট সঞ্চয় থেকে উপকৃত হবেন .
এই স্ফটিক পরিষ্কার করতে, আসুন একটি উদাহরণ রোল আউট. কল্পনা করুন যে আপনার কাছে 6.5 TB ডেটা সহ একটি প্রাথমিক পরিষেবা রয়েছে এবং আপনি এটিও সেট করেছেন:
ব্যর্থতার কারণে ডাউনটাইম এবং ডেটা হারানোর ঝুঁকি উল্লেখযোগ্যভাবে কমাতে একটি উচ্চ-প্রাপ্যতা প্রতিরূপ
আপনার পঠিত প্রশ্নগুলি পরিবেশন করার জন্য একটি পঠিত প্রতিরূপ এবং প্রাথমিককে সম্পূর্ণরূপে লেখার জন্য নিজেকে উৎসর্গ করার অনুমতি দেয়
উন্নয়ন এবং পরীক্ষার উদ্দেশ্যে যে পরিষেবার একটি কাঁটা
একটি বিলিং দৃষ্টিকোণ থেকে, আপনি যদি আপনার প্রাথমিক পরিষেবাতে 6.5 TB ডেটা উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে রাখেন, তাহলে আপনি আপনার স্টোরেজ বিলে প্রতিফলিত [6.5 TB x 4] দেখতে পাবেন দুটি প্রতিলিপি, কাঁটা এবং প্রাথমিক পরিষেবা—মোট 26 টিবি। আমাদের মধ্যবর্তী কম্প্রেশন রেট ধরে নিলে, এটি ব্যয়বহুল হবে: প্রায় $4,602/মাস।
কিন্তু আপনার অ্যাপ্লিকেশানের সক্রিয়ভাবে শুধুমাত্র সাম্প্রতিকতম 500 GB ডেটা অ্যাক্সেস করার প্রয়োজন হলে কী হবে? আপনি কম খরচে সঞ্চয়স্থানে 6 TB স্তর দিতে পারেন এবং আপনার উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে শুধুমাত্র 500 GB রাখতে পারেন। এবং যেহেতু আপনি আপনার স্বল্প-মূল্যের স্টোরেজ স্তরের ডেটার জন্য শুধুমাত্র একবার অর্থ প্রদান করেন, তাই আপনার নতুন স্টোরেজ বিলটি দেখতে এইরকম হবে:
[500 GB x 4] = 2 TB উচ্চ-ক্ষমতাসম্পন্ন সঞ্চয়স্থানে (26 TB এর পরিবর্তে)
[6 TB x 1] কম খরচে স্টোরেজ স্তরে
উপরোক্ত স্টোরেজ বিল প্রায় $480/মাস পর্যন্ত আসবে: আপনি $4,000/মাসে সঞ্চয় করবেন! এটি টায়ার্ড স্টোরেজের সঞ্চয় গুণনের প্রভাব। বিশেষ করে যদি আপনি প্রতিলিপি বা কাঁটাচামচ চালাচ্ছেন, কম খরচে স্টোরেজ স্তরের সুবিধা নেওয়া একটি দুর্দান্ত ধারণা—আপনার সামগ্রিক বিলে আপনি যে সঞ্চয়গুলি দেখতে পাবেন তা খুবই তাৎপর্যপূর্ণ হবে।
আমরা মার্চ মাসে আর্লি অ্যাক্সেস হিসাবে টাইমস্কেল প্ল্যাটফর্মে আমাদের টায়ার্ড স্টোরেজ কার্যকারিতার একটি প্রাথমিক সংস্করণ প্রকাশ করেছি। অনেক উন্নতির পর, এটি এখন সাধারণ উপলব্ধতায় পৌঁছেছে। এটির প্রথম প্রকাশের পর থেকে, আমরা টায়ার্ড স্টোরেজকে স্থিতিশীল, নির্ভরযোগ্য এবং দ্রুততর করার জন্য কঠোর পরিশ্রম করেছি।
আমরা আমাদের মূল্য নির্ধারণের মডেল সম্পর্কে দীর্ঘ এবং কঠোর চিন্তা করেছি, আমাদের কম খরচের স্টোরেজ স্তরের মূল্য নির্ধারণের একাধিক উপায়ে ধারাবাহিকভাবে পুনরাবৃত্তি করছি। অবশেষে, আমরা সবচেয়ে সহজের দিকে ঝুঁকেছি: ডেটা ভলিউম প্রাক-সংকোচনের উপর একটি সমতল হার। আমরা ইতিমধ্যেই উল্লেখ করেছি যে আমরা কীভাবে সহজ এবং অনুমানযোগ্য মূল্য নির্ধারণ করেছি, তবে প্রতি GB/মাস যতটা সম্ভব কম মূল্য প্রদান করাও আমাদের জন্য গুরুত্বপূর্ণ ছিল। আমাদের মূল্য $0.021 এ নেমে এসেছে—তুলনা হিসাবে, Amazon S3-এ ফাইল সংরক্ষণ করার খরচ
ব্যক্তিগতভাবে, আমাকে (ইয়ানিস) অবশ্যই স্বীকার করতে হবে যে নেতৃস্থানীয় দলগুলি এক দশকেরও বেশি সময় ধরে ক্লাউড-নেটিভ সলিউশন তৈরি করার পরে, আমাকে এখনও ফিরে যেতে হবে এবং মাঝে মাঝে বিভিন্ন ক্লাউড প্রাইসিং পৃষ্ঠাগুলিতে একাধিক রেট টেবিল পুনরায় পরীক্ষা করতে হবে, বিশেষ করে অতিরিক্ত ফি খুঁজছেন, প্রতিবার আমি আমাদের পরিষেবার জন্য মোট খরচ সঠিকভাবে গণনা করতে চাই।
টাইমস্কেলে, আমরা বিশ্বাস করি যে ডাটাবেস পরিষেবা চালানোর জন্য বা স্টোরেজ স্তরগুলি সম্পর্কে অবগত পছন্দ করতে আপনাকে একটি জটিল স্প্রেডশীট তৈরি করতে হবে না।
ডেভেলপারদের জীবনকে আরও সহজ করে তোলার প্রতিশ্রুতি আমাদের প্রতি GB/মাস $0.021-এর সমতল হারে নিয়ে গেছে—কোন অনুমান, লুকানো খরচ, অথবা প্রশ্ন বা ডেটা রিড প্রতি চার্জ নেই।
ডেটা ভলিউম প্রি-কম্প্রেশন মানে টাইমস্কেল কম্প্রেশন প্রয়োগ করার আগে ডেটা ভলিউম। উদাহরণস্বরূপ, টাইমস্কেল কম্প্রেশনের কারণে, হাই-পারফরম্যান্স স্টোরেজ স্তরে একটি 500 GB ভলিউম একবার সংকুচিত হলে শুধুমাত্র 50 GB ডিস্ক স্পেস প্রয়োজন হতে পারে। আপনি যদি এই ডেটাটিকে কম খরচে সঞ্চয়স্থানে শ্রেণীবদ্ধ করার সিদ্ধান্ত নেন, তবে আপনার বিলটি প্রতি মাসে [500 GB * $0.021] হিসাবে আসল 500 GB ভলিউমের উপর গণনা করা হবে।
টাইমস্কেলে ঢোকানো সমস্ত ডেটা প্রাথমিকভাবে আমাদের উচ্চ-পারফরম্যান্স স্টোরেজ স্তরে লেখা হয়। আপনার সাম্প্রতিক ডেটার জন্য দ্রুত ডিস্কগুলি ব্যবহার করা আপনার সাম্প্রতিক মানগুলির জন্য শীর্ষ সন্নিবেশ এবং অনুসন্ধান কর্মক্ষমতা নিয়ে আসবে, একটি ব্যবহার প্যাটার্ন যা ডেটা-নিবিড় অ্যাপ্লিকেশনগুলির প্রয়োজনের সাথে খাপ খায়।
বিপরীতে, কম খরচে স্টোরেজ টিয়ার হল একটি বস্তুর দোকান যা Amazon S3 এ নির্মিত। এই অবজেক্ট স্টোরটি আপনার ডেটা আর্কাইভ করার জন্য একটি বাহ্যিক বালতির চেয়ে অনেক বেশি, যদিও: এটি আপনার ডাটাবেসের একটি অবিচ্ছেদ্য অংশ। আপনি যখন এই অবজেক্ট স্টোরেজ স্তরে ডেটা স্থানান্তর করবেন, তখন আপনার ডাটাবেস সমস্ত শব্দার্থবিদ্যা এবং মেটাডেটা সম্পর্কে সম্পূর্ণ সচেতন থাকবে এবং আপনি স্বাভাবিক এসকিউএল (যদিও ধীর কর্মক্ষমতা সহ) সাথে স্বাভাবিকভাবে অনুসন্ধান চালিয়ে যেতে পারেন।
পর্দার আড়ালে, আমরা একটি সংকুচিত কলামার বিন্যাসে ডেটা সংরক্ষণ করছি (বিশেষত, Apache Parquet )। ডেটা টায়ার্ড করা হলে, টাইমস্কেলের নেটিভ অভ্যন্তরীণ ডাটাবেস বিন্যাসে (সাধারণত আমাদের
আপনি যখন আপনার এসকিউএল ক্যোয়ারী চালান, তখন এটি স্বচ্ছভাবে উচ্চ-পারফরম্যান্স স্টোরেজ টিয়ার, অবজেক্ট স্টোরেজ টিয়ার বা উভয় থেকে প্রয়োজনীয় ডেটা টেনে আনবে। আমরা যখন স্বচ্ছ বলি, তখন আমরা স্বচ্ছ বলতে বোঝায়: টাইমস্কেল তার মানক এবং টায়ার্ড ডেটা জুড়ে নির্বিচারে জটিল প্রশ্নগুলিকে সমর্থন করে, যার মধ্যে রয়েছে জটিল পূর্বাভাস, যোগদান, CTE, উইন্ডো, হাইপারফাংশন এবং আরও অনেক কিছু।
নীচের উদাহরণের ক্যোয়ারীতে (একটি EXPLAIN
ধারা সহ), আপনি দেখতে পারেন কিভাবে ক্যোয়ারী প্ল্যানে একটি Foreign Scan
অন্তর্ভুক্ত থাকে যখন ডাটাবেস অবজেক্ট স্টোরেজ স্তর থেকে ডেটা অ্যাক্সেস করে। এই উদাহরণে, devices
এবং sites
হল স্ট্যান্ডার্ড পোস্টগ্রেস টেবিল (শুধুমাত্র উচ্চ-পারফরম্যান্স স্টোরেজে থাকে), যখন metrics
একটি হাইপারটেবল যা উভয় স্টোরেজ স্তর জুড়ে বিস্তৃত। metrics
হাইপারটেবলের বিরুদ্ধে এই ক্যোয়ারীটি চালানোর সময়, এর তিনটি খণ্ড স্ট্যান্ডার্ড স্টোরেজ থেকে পড়া হয়েছিল, এবং পাঁচটি খণ্ড অবজেক্ট স্টোরেজ থেকে পড়া হয়েছিল।
EXPLAIN SELECT time_bucket('1 day', ts) as day, max(value) as max_reading, device_id FROM metrics JOIN devices ON metrics.device_id = devices.id JOIN sites ON devices.site_id = sites.id WHERE sites.name = 'DC-1b' GROUP BY day, device_id ORDER BY day; QUERY PLAN ---------------------------------------------------------- GroupAggregate Group Key: (time_bucket('1 day'::interval, _hyper_5666_706386_chunk.ts)), _hyper_5666_706386_chunk.device_id -> Sort Sort Key: (time_bucket('1 day'::interval, _hyper_5666_706386_chunk.ts)), _hyper_5666_706386_chunk.device_id -> Hash Join Hash Cond: (_hyper_5666_706386_chunk.device_id = devices.id) -> Append -> Seq Scan on _hyper_5666_706386_chunk -> Seq Scan on _hyper_5666_706387_chunk -> Seq Scan on _hyper_5666_706388_chunk -> Foreign Scan on osm_chunk_3334 -> Hash -> Hash Join Hash Cond: (devices.site_id = sites.id) -> Seq Scan on devices -> Hash -> Seq Scan on sites Filter: (name = 'DC-1b'::text)
উপরের ক্যোয়ারী প্ল্যানে, Foreign Scan on osm_chunk_3334
অতলবিহীন অবজেক্ট স্টোরেজ স্তর থেকে ডেটা আনার সাথে মিলে যায়।
ক্যোয়ারী টাইম উইন্ডোর বাইরে পড়ে থাকা খণ্ডগুলি প্রক্রিয়াকরণ এড়াতে, আমরা কেবলমাত্র সেই অংশগুলিকে স্পর্শ করার জন্য খণ্ড বর্জন করি যা ক্যোয়ারীটি সন্তুষ্ট করার জন্য প্রয়োজনীয়। অবজেক্ট স্টোরেজের মধ্যে সারি গ্রুপ এবং কলামার অফসেটগুলির একটি "মানচিত্র" তৈরি করতে ডাটাবেস বিভিন্ন ধরনের মেটাডেটা সঞ্চয় করে।
তদ্ব্যতীত, যখন একটি প্রশ্ন চালানো হয়, তখন এটি পড়া ডেটা সম্পর্কে আরও নির্বাচনী হয়। যদি আপনার ক্যোয়ারী শুধুমাত্র সারি এবং কয়েকটি কলামের পরিসীমা স্পর্শ করে, তবে কম খরচের স্টোরেজ স্তরের পিছনে থাকা S3 অবজেক্ট থেকে ডেটার শুধুমাত্র সেই উপসেটটি পড়া হয়।
উপরে, উদাহরণস্বরূপ, শুধুমাত্র device_id
এবং value
কলামগুলি অবজেক্ট স্টোরেজ স্তর থেকে পড়া হয়। যদি একটি অতিরিক্ত সময়-ভিত্তিক WHERE
ফিল্টার অন্তর্ভুক্ত করা হয়, তবে ডাটাবেসটি প্রথমে তার মেটাডেটা ব্যবহার করবে (উচ্চ-কার্যক্ষমতার সঞ্চয়স্থানে সংরক্ষিত এবং মেমরিতে ক্যাশে করা) যাতে ক্যোয়ারী চালানোর জন্য কোন Parquet ফাইল এবং সারি গ্রুপগুলি পড়তে হবে তা আরও কমাতে। PostgreSQL-এর মাধ্যমে স্বচ্ছভাবে এই তলাবিহীন স্টোরেজ অ্যাক্সেস করার সময়ও কোয়েরি লেটেন্সি কমাতে সবই।
ঐতিহাসিক তথ্যের চারপাশে সঞ্চয়স্থানের সিদ্ধান্তগুলি ব্যয়বহুল হতে হবে না। টাইমস্কেলে, আপনার কাছে এখন একটি কম খরচে, অসীম স্টোরেজ টিয়ারে অ্যাক্সেস আছে যেখানে কোনো মূল্য নির্ধারণ করা নেই যা আপনাকে আপনার অ্যাপ্লিকেশনের কর্মক্ষমতার সাথে আপস না করে একটি সাশ্রয়ী মূল্যের জন্য আপনার ডেটাবেস স্টোরেজ স্কেল করতে দেয়।
আপনি যদি ভাবছেন যে এটি আপনার ব্যবহারের ক্ষেত্রে একটি ভাল সমাধান কিনা,
- ইয়ানিস রুসোস, কার্লোটা সোটো এবং আনা টাভারেস লিখেছেন।
এছাড়াও এখানে প্রকাশিত.