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

Oracle TimesTen: শীর্ষ পারফরম্যান্সের জন্য ألترا-ফাস্ট ইন-মেমরি ডাটাবেস

TimesTen ইতিহাস

  • ১৯৯৪ সালে HP Labs-এ আবিষ্কৃত
  • HP-এর Open Call সমাধানে এমবেডেড
  • ১৯৯৬ সালে VC-ফান্ডেড স্টার্টআপ হিসেবে স্পিন-অফ
  • হাজার হাজার প্রোডাকশন কাস্টমার
  • ২০০৫ সালে Oracle Corporation দ্বারা অ্যাকোয়ার্ড
  • ২০০৫ সাল থেকে ৩টি বড় রিলিজ: ৬.০, ৭.০, 11gR2, 18c Release 1

Oracle TimesTen ওভারভিউ

Oracle TimesTen In-Memory Database একটি ইন-মেমরি, রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম যাতে পার্সিস্টেন্স এবং হাই অ্যাক্সেসিবিলিটি রয়েছে। মূলত হিউলেট-প্যাকার্ড ল্যাবসে প্যালো অ্যাল্টো, ক্যালিফোর্নিয়ায় ডিজাইন ও ইমপ্লিমেন্ট করা হয়েছিল, TimesTen ১৯৯৬ সালে আলাদা স্টার্টআপ হিসেবে স্পিন-আউট হয়েছিল এবং ২০০৫ সালে Oracle Corporation দ্বারা অধিগ্রহণ করা হয়েছিল।

TimesTen ডাটাবেসের উচ্চ পার্সিস্টেন্স এবং অ্যাক্সেসিবিলিটি রয়েছে। ইন-মেমরি ডাটাবেস হলে এটি খুব কম লেটেন্সি এবং হাই থ্রুপুট প্রদান করে। অন্যান্য ফিচারগুলোর মধ্যে স্ট্যান্ডার্ড রিলেশনাল ডাটাবেস APIসহ JDBC এবং ODBC রয়েছে। TimesTen শুধু একটি スタンドআলোন ইন-মেমরি ডাটাবেস হিসেবে নয়, বরং অন্যান্য রিলেশনাল ডাটাবেসে ক্যাশে হিসেবে ব্যবহারের ইউটিলিটিও প্রদান করে, Oracle Database নিজেসহ। এটি প্রায়শই অত্যধিক ভলিউম OLTP অ্যাপ্লিকেশনে ব্যবহৃত হয় যার মধ্যে ফাইন্যানশিয়াল ট্রেডিং এবং টেলিকম বিলিং অন্তর্ভুক্ত।

TimesTen কীভাবে ডিস্কে ডেটা সংরক্ষণ করে

ছবির সোর্স: https://luna-ext.di.fc.ul.pt/oracle11g/timesten.112/e14261/overview.htm

প্রতিটি TimesTen ডেটা স্টোরে ঠিক দুটি চেকপয়েন্ট ফাইল থাকে। প্রতি ১০ মিনিটে একটি চেকপয়েন্ট ডিফল্টভাবে কল হয়; এটি ডার্টি মেমরি পেজগুলো প্রথম চেকপয়েন্ট ফাইলে লেখে, এবং পরবর্তী চেকপয়েন্টে অন্য চেকপয়েন্ট ফাইলটি ব্যবহার করে। রাইট ট্রানজ্যাকশনগুলো প্রথমে একটি ইন-মেমরি বাফারে রাখা হয়, তারপর লগ ফাইলগুলে ফ্লাশ করা হয়।

দুই ধরনের ট্রানজ্যাকশনাল লগিং

১. বাফার্ড লগিং

(স্পিড: দ্রুত, ড্যুরাবিলিটি: ভালো) ট্রানজ্যাকশনগুলো প্রথমে একটি ইন-মেমরি লগ বাফারে সংরক্ষিত হয়। বাফার পূর্ণ হলে, এটি ব্যাকগ্রাউন্ডে ডিস্কে ফ্লাশ হয়। প্রক্রিয়াটি খুব দ্রুত (৫০০০ TPS বা তার বেশি)। বাফার ফ্লাশ হওয়ার আগে ক্র্যাশ হলে ট্রানজ্যাকশন হারানোর ছোট সম্ভাবনা থাকে। কাস্টমার লগ বাফারের সাইজ কনফিগার করতে পারেন।

২. ডিউরেবল কমিট

(স্পিড: ধীর, ড্যুরাবিলিটি: অত্যন্ত ভালো) প্রতিটি ট্রানজ্যাকশন অবিলম্বে ডিস্কে ফ্লাশ হয়। এই স্পিড ডিস্ক ডিভাইসের স্পিডের ওপর নির্ভর করে। যেহেতু প্রতিটি ট্রানজ্যাকশন ডিস্কে সংরক্ষিত হয়, তাই এটি খুব ডিউরেবল।

কাস্টমার যেকোনো সময় BUFFERED LOGGING থেকে DURABLE COMMIT-এ স্যুইচ করতে পারেন ttDurableCommit() নামক একটি SQL ফাংশন কল করে। কাস্টমার রানটাইমে ড্যুরাবিলিটি বনাম পারফরম্যান্স ফ্লেক্সিবলি নিয়ন্ত্রণ করতে পারেন, যা কনভেনশনাল RDBMS-এ সম্ভব নয়।

সিগনিফিক্যান্ট রেসপন্স টাইম উন্নতি: ইন-মেমরি ডাটাবেস ক্যাশে + Oracle ডাটাবেস

ছবির সোর্স: https://www.oracle.com/technetwork/database/windows/ds-imdb-cache-1-129794.pdf

উপরোक्त গ্রাফে ৭টি ট্রানজ্যাকশন টাইপের জন্য গড় ট্রানজ্যাকশন রেসপন্স টাইম মাপা হয়েছে।

লাল বারগুলো TimesTen IMDB-এ ডেটা ক্যাশেড থাকলে প্রাপ্ত রেসপন্স টাইম। অ্যাপ্লিকেশন ডাটাবেস অপারেশনের জন্য এটি বিশাল উন্নতি। মনে রাখবেন Oracle ডাটাবেসে রেসপন্স টাইমের ভালো অংশ ক্লায়েন্ট-সার্ভার কানেকশন এবং নেটওয়ার্ক রাউন্ডট্রিপের কারণে, যেগুলো অস্তিত্বে নেই যখন অ্যাপ্লিকেশন সরাসরি মেমরিতে TimesTen ডাটাবেসের সাথে লিংক করা থাকে। অ্যাপ্লিকেশন TCP/IP ক্লায়েন্ট/সার্ভারের মাধ্যমে TimesTen-এ সংযোগ করতে পারে।

TimesTen ডাটাবেস তৈরি করা

DSN ডিফাইন করুন

  • DataStore অ্যাট্রিবিউট: ডাটাবেসের চেকপয়েন্ট ফাইলগুলোয় ডিরেক্টরি নাম নির্দিষ্ট করে ex: DataStore=/data/TTDEMO/TTDEMO-DSN1/TTDEMO-DSN1
  • LogDir অ্যাট্রিবিউট: ট্রানজ্যাকশন লগ ফাইলগুলোর ডিরেক্টরি নাম নির্দিষ্ট করে। ট্রানজ্যাকশন লগে প্রতিটি ডাটাবেস আপডেট, কমিট, এবং রোলব্যাকের লগ রেকর্ড থাকে।
  • DatabaseCharacterSet অ্যাট্রিবিউট: ডেটা সংরক্ষণের ক্যারেক্টারসেট লজিক্যালি দুটি আলাদা মেমরি রিজনে ভাগ করা হয়
  • ডাটাবেস মেমরি রিজন
    - Permanent region - PermSize DSN অ্যাট্রিবিউট এর alokেটেড সাইজ কনফিগার করে। - রিজন স্থায়ী ডাটাবেস এলিমেন্ট সংরক্ষণ করে (ex: টেবিল, ইন্ডেক্স) - রিজন চেকপয়েন্ট অপারেশনের সময় ডিস্কে লেখা হয়। - Temporary region - TempSize DSN অ্যাট্রিবিউট এর alokেটেড সাইজ কনফিগার করে - রিজন ট্রানজিয়েন্ট ডেটা এবং স্টেটমেন্ট এক্সিকিউশন সময় জেনারেট হওয়া ইনফো সংরক্ষণ করে। (temp tables, stored result sets..)
  • ডাটাবেস স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে যখন ইনস্ট্যান্স অ্যাডমিনিস্ট্রেটর ডাটাবেসের সাথে সংযোগ করবে
$ttisql <DSN name>
  • Ttisql ইউটিলিটি সরাসরি সার্ভার DSN-এ সংযোগ করে এবং ttIsqlCS ইউটিলিটি TimesTen ক্লায়েন্ট DSN-এ সংযোগ করে।
$ttisql connStr "DSN=TTDEMO-DSN1;UID=timesten;pwd=timesten"
  • RAM Policy: ডাটাবেস কখন মেমরিতে লোড হবে এবং আনলোড হবে তা নির্ধারণ করে।
    inUse: ডাটাবেস মেমরিতে থাকে যদি এটি ব্যবহৃত হয় (ডিফল্ট পলিসি)।
    always: ডাটাবেস সবসময় মেমরিতে রেসিডেন্ট থাকে।
    manual: ডাটাবেস ম্যানুয়ালি মেমরিতে লোড এবং আনলোড করা হয়।

GitOps ক্লাউড নেটিভ অ্যাপ্লিকেশন বিল্ড করার জন্য একটি কার্যকর ফাউন্ডেশন সক্ষম করতে পারে। GitOps-এর মূল সিদ্ধান্তগুলো সংস্থাগুলোর জন্য নিচের বেনিফিটগুলো হাইলাইট করে:

ইন-মেমরি ডাটাবেস ক্যাশে

ছবির সোর্স: https://www.oracle.com/database/technologies/timesten-cache.html

• অ্যাপ্লিকেশন টিয়ারে Oracle ডাটাবেস টেবিল ক্যাশে করুন

  1. একক টেবিল এবং সম্পর্কিত টেবিল ক্যাশে করুন
  2. সকল বা সাবসেট রো এবং কলাম ক্যাশে করুন

• রিড-অনলি এবং আপডেটেবল ক্যাশে ডাটাবেস

  1. ক্যাশেড টেবিলগুলো রেগুলার SQL ডাটাবেস টেবিলের মতো অ্যাক্সেস করুন
  2. Join/সার্চ, ইন্সার্ট/আপডেট/ডিলিট

• অটোম্যাটিক ডেটা সিঙ্ক্রোনাইজেশন

  1. TimesTen থেকে Oracle
  2. Oracle থেকে TimesTen

Oracle IMDB Cache

• Cache group কী?

TimesTen ডাটাবেসে তৈরি ক্যাশেড টেবিলের একটি সেট যা Oracle Database-এ টেবিলের সাথে মিলে যায়

• Read-Only Cache Group

রিড অপারেশন TimesTen-এ সম্পাদিত হয়

রাইট অপারেশন Oracle-এ পাস থ্রু হয় এবং স্বয়ংক্রিয়ভাবে TimesTen-এ রিফ্রেশ হয়

ছবির সোর্স: https://docs.oracle.com/cd/E18283_01/timesten.112/e14261/cache.htm

Oracle-এ Cache Connect ইউজারকে তাদের Oracle ডাটাবেসের একটি সাবসেট TimesTen-এ ক্যাশে করতে সক্ষম করে যাতে ঘন ঘন অ্যাক্সেস করা ডেটার জন্য ভালো রেসপন্স টাইম এবং থ্রুপুট मिलে।

আপনি পূর্ণ টেবিল সিলেক্ট করতে পারেন, রোর সাবসেট, বা কলামের সাবসেট। ক্যাশে রিড-অনলি বা আপডেটেবল হতে পারে। যদি ডেটা TimesTen ডাটাবেসের ভিতরে আপডেট হয়, তবে আপডেটগুলো Oracle ডাটাবেসে সিঙ্ক্রোনাস রাইট-থ্রু বা অ্যাসিঙ্ক্রোনাস রাইট-থ্রু 통해 প্রপাগেট হয়। একই Oracle DB থেকে একাধিক ক্যাশে ইনস্ট্যান্স ক্যাশিং করতে পারে; প্রতিটি ক্যাশে ইনস্ট্যান্সের নিজস্ব আলাদা ক্যাশড কন্টেন্ট থাকতে পারে।

IMDB Cache অ্যাডমিনিস্ট্রেশন এবং সেরা অনুশীলন

  • Oracle এবং TimesTen ডাটাবেস দুটোতে একবারে Cache সেটআপ (প্রতি ইমপ্লিমেন্টেশন ডক অনুযায়ী)
  • Cache Agent Restart Policy সেট করুন: Manual, always, norestart
  • AUTOREFRESH ইন্টারভাল নির্দিষ্ট করুন
    • Oracle-এ ক্যাশ গ্রুপের টেবিল(গুলো)তে INSERT, UPDATE, এবং DELETE ট্রিগার তৈরি করে
    • ট্রিগার একটি ছোট রো লগিং টেবিলে ইনসার্ট করে যা TimesTen Oracle-এ রাখে
    • TimesTen এজেন্ট এই টেবিল কোয়ারি করে এবং আপনার নির্দিষ্ট ইন্টারভালে ডেটা রিফ্রেশ করে • Oracle-এ ডেটা ডেফিনিশন পরিবর্তন হলে LOAD, UNLOAD, FLUSH, REFRESH CACHE GROUPS প্রয়োজন

উপসংহার

TimesTen একটি ইন-মেমরি রিলেশনাল ডাটাবেস যা SQL অপারেশনের জন্য খুব কম লেটেন্সি এবং অত্যধিক হাই থ্রুপুট অফার করে স্ট্যান্ডার্ড রিলেশনাল ডাটাবেস ফাংশনালিটি প্রদান করে স্ট্যান্ডার্ড APIসহ। এটি স্ট্যান্ডআলোন ডাটাবেস হিসেবে বা Oracle ডাটাবেসের জন্য হাই-পারফরম্যান্স রিলেশনাল ক্যাশে হিসেবে ডিপ্লয় করা যায়।

ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন জিজ্ঞাসা করুন। আপনি আমাদের সাথে কথা বলতে পারেন।

  1. Oracle 18c Refreshable Clones মাস্টার করুন: একটি বIgineার গাইড

  2. Oracle-এর Always Free Autonomous Database দিয়ে শুরু করুন: পূর্ণ গাইড

  3. দ্রুত একটি Oracle DBaaS ডাটাবেস ক্লাউডে ডিপ্লয় করুন

  4. Oracle 19c: ডাটাবেস অ্যাডমিনিস্ট্রেটরদের জন্য উন্নত ফিচারসমূহ