হাইবারনেটে প্রথম এবং দ্বিতীয় স্তরের ক্যাশেগুলি কী কী?


245

হাইবারনেটে প্রথম এবং দ্বিতীয় স্তরের ক্যাচিং কী তা কি সহজ কথায় ব্যাখ্যা করতে পারবেন?

উত্তর:


300

1.1) প্রথম স্তরের ক্যাশে

প্রথম স্তরের ক্যাশে সর্বদা সেশন অবজেক্টের সাথে সংযুক্ত । হাইবারনেট ডিফল্টরূপে এই ক্যাশে ব্যবহার করে। এখানে, এটি একের পর এক লেনদেন প্রক্রিয়া করে, মানে এক লেনদেনকে বহুবার প্রক্রিয়া করে না। মূলত এটি প্রদত্ত লেনদেনের মধ্যে প্রয়োজনীয় এসকিউএল প্রশ্নের সংখ্যা হ্রাস করে। এটি লেনদেনের প্রতিটি সংশোধনীর পরে আপডেট করার পরিবর্তে এটি লেনদেনের শেষে কেবলমাত্র লেনদেনকে আপডেট করে।

1.2) দ্বিতীয় স্তরের ক্যাশে

দ্বিতীয় স্তরের ক্যাশে সর্বদা সেশন ফ্যাক্টরি অবজেক্টের সাথে যুক্ত হয় । লেনদেন চলাকালীন, এর মধ্যে সেশন ফ্যাক্টরি স্তরে বস্তুগুলি লোড করে, যাতে সেই বস্তুগুলি একক ব্যবহারকারীর কাছে আবদ্ধ না হয়ে পুরো অ্যাপ্লিকেশনটিতে উপলব্ধ থাকে। যেহেতু বস্তুগুলি ইতিমধ্যে ক্যাশে লোড করা হয়েছে, যখনই কোনও বস্তু কোয়েরি দ্বারা ফিরে আসে, তখন ডাটাবেস লেনদেনের প্রয়োজন হয় না। এই ভাবে দ্বিতীয় স্তরের ক্যাশে কাজ করে। এখানে আমরা ক্যোয়ারী লেভেল ক্যাশেও ব্যবহার করতে পারি।

থেকে উদ্ধৃত: http://javabeat.net/intr Productions- to-hibernate-caching/


38
সেশন অবজেক্টের সাথে প্রথম স্তরের ক্যাশে এবং সেশন কারখানা অবজেক্টের সাথে দ্বিতীয় স্তরের ক্যাশে ম্যাপিংয়ের জন্য +1। আমার পড়া চালিয়ে যাওয়ার দরকার নেই।
মাহেস

1
1 তম স্তরের ক্যাশে। বেশিরভাগ ক্ষেত্রে এটির প্রয়োজন হয় না তবে এটি থেকে মুক্তি পাওয়ার কোনও বিকল্প নেই। কিন্তু আপনি তা সব সময় সম্পর্কে চিন্তা করা উচিত ..
এসইএস

6
@ses আপনার বেশিরভাগ ক্ষেত্রে প্রথম স্তরের ক্যাশে প্রয়োজন। অন্যথায় আপনার কাছে খুব খারাপ পারফরম্যান্স সমস্যা হবে যেমন এন + 1 ক্যোয়ারী, বা উত্সাহী প্রাক-আনার ক্যাশে, বা কোয়েরি প্রতিবার যখন আপনি কোনও বৈশিষ্ট্যে অ্যাক্সেস করবেন একবার।
ডেনিস সি

সাধারণত আমরা খুব স্বল্প সময়ের জন্য সেশনটি ব্যবহার করি [এবং খুব শরীর এটি প্রস্তাব দেয়] / স্বল্পকালীন অধিবেশন: আমরা এমনকি সেই সময়কালে সেই ক্যাশে ব্যবহার করি না। যদি সেশনটি দীর্ঘকাল বেঁচে থাকে তবে আমরা অধিবেশন থেকে ডেটা (উদাহরণস্বরূপ ফর্মটি সম্পাদনা করার সময়) সংযুক্ত করি। মনে হয় এটি কেবলমাত্র একটি দৃশ্যের জন্য প্রয়োজন যখন আমরা দীর্ঘকালীন অধিবেশনটির জন্য কিছু জটিল অনুরোধের পরে অনুরোধ তৈরি করার সময় ক্যোয়ারী-সেশন-এপিআই ব্যবহার করার চেষ্টা করি।
এসএস

1
@ ডেনিসচেং: লিঙ্কটি মারা গেছে। দয়া করে javabeat.net/intr
پيداوار-

118

স্ট্রিমলাইন লজিক ব্লগে প্রথম স্তরের ক্যাশিংয়ের বেশ ভাল ব্যাখ্যা রয়েছে ।

মূলত, প্রথম স্তরের ক্যাচিং প্রতি সেশনের ভিত্তিতে ঘটে যেখানে দ্বিতীয় স্তরের ক্যাচিং একাধিক সেশনে ভাগ করা যায়।


20
এই মুহূর্তে এটি সহজ শব্দ, তাদের কেন এটি ব্যাখ্যা করার জন্য এতটা কঠিন সময় আছে তা আমি জানি না
ব্ল্যাকটাইগারএক্স

হ্যাঁ ... হ্যাঁ আমি সত্যিই জানি না কীভাবে আমি আরও
সহজসাধ্য

2
এটি আসলে আমার জন্য আরও স্পষ্ট। প্রথমটি সেশন প্রতি যেখানে দ্বিতীয়টি মাল্টি সেশনের জন্য, আমার মনে রাখা সহজ? আমরা কি দুবার ভোট দিতে পারি না? : ডি
কালো জ্ঞান

1
1 ম স্তরের ক্যাশে কেন প্রয়োজন তা নমুনা নেই। আমার ক্ষেত্রে যেমন এর কোনও প্রয়োজন হয় না। তবে আপনার এটি সম্পর্কে এবং অধিবেশনটি সম্পর্কে সর্বদা চিন্তা করা উচিত।
ses

এই উত্তরটির 11 বছর পরে এবং দুর্ভাগ্যক্রমে লিঙ্কটি বর্তমানে বিদ্যমান নেই। তবে আমি এর সংরক্ষণাগার ওয়েবপৃষ্ঠায় এর সামগ্রীটি পেয়েছি: web.archive.org/web/20081207044228/http://…
গোলু

105

হাইবারনেট ক্যাশের কিছু প্রাথমিক ব্যাখ্যা এখানে ...

প্রথম স্তরের ক্যাশে "সেশন" অবজেক্টের সাথে সম্পর্কিত। ক্যাশে অবজেক্টের সুযোগটি সেশনের। একবার সেশন বন্ধ হয়ে গেলে ক্যাশেড অবজেক্টস চিরতরে চলে যায়। প্রথম স্তরের ক্যাশে ডিফল্টরূপে সক্ষম হয় এবং আপনি এটি অক্ষম করতে পারবেন না। যখন আমরা কোনও সত্তাকে প্রথমবার জিজ্ঞাসা করি তখন এটি ডাটাবেস থেকে পুনরুদ্ধার করা হয় এবং হাইবারনেট সেশনের সাথে সম্পর্কিত প্রথম স্তরের ক্যাশে সংরক্ষণ করা হয়। যদি আমরা আবার একই সেশনের অবজেক্টের সাথে একই বস্তুটি জিজ্ঞাসা করি তবে এটি ক্যাশে থেকে লোড হবে এবং কোনও এসকিএল কোয়েরি কার্যকর করা হবে না। evict()পদ্ধতিটি ব্যবহার করে লোড করা সত্তাটি সেশন থেকে সরানো যেতে পারে । এই সত্তার পরবর্তী লোডিং আবার একটি ডেটাবেস কল করবে যদি এটি evict()পদ্ধতি ব্যবহার করে সরিয়ে ফেলা হয় । clear()পদ্ধতিটি ব্যবহার করে পুরো সেশন ক্যাশে সরানো যেতে পারে । এটি ক্যাশে সঞ্চিত সমস্ত সত্তা সরিয়ে ফেলবে।

দ্বিতীয় স্তরের ক্যাশে প্রথম স্তরের ক্যাশে পৃথক পৃথক পৃথক স্তরের ক্যাশে যা বিশ্বব্যাপী সেশনের কারখানার স্কোপতে ব্যবহারের জন্য উপলব্ধ। দ্বিতীয় স্তরের ক্যাশেটি সেশন কারখানার সুযোগে তৈরি করা হয় এবং নির্দিষ্ট সেশন কারখানাটি তৈরি করে তৈরি করা সমস্ত সেশনে এটি ব্যবহারের জন্য উপলব্ধ। এর অর্থ হ'ল একবার সেশন কারখানা বন্ধ হয়ে গেলে এর সাথে সম্পর্কিত সমস্ত ক্যাশে মারা যায় এবং ক্যাশে পরিচালকও বন্ধ হয়ে যায়। হাইবারনেট সেশন যখনই কোনও সত্তা লোড করার চেষ্টা করে, প্রথম স্তরের ক্যাশে (নির্দিষ্ট হাইবারনেট সেশনের সাথে সম্পর্কিত) সত্তাটির ক্যাশেড অনুলিপিটি সন্ধান করার জন্য এটি প্রথম স্থান। সত্তার ক্যাশেড অনুলিপি যদি প্রথম স্তরের ক্যাশে উপস্থিত থাকে তবে লোড পদ্ধতির ফলস্বরূপ এটি ফিরে আসে। যদি প্রথম স্তরের ক্যাশে কোনও ক্যাশেড সত্তা না থাকে তবে দ্বিতীয় স্তরের ক্যাশে ক্যাশেড সত্তার সন্ধান করা হবে। যদি দ্বিতীয় স্তরের ক্যাশে সত্তাকে ক্যাশে করে থাকে তবে লোড পদ্ধতির ফলস্বরূপ এটি ফিরে আসে। কিন্তু, সত্তাটি ফেরত দেওয়ার আগে, এটি প্রথম স্তরের ক্যাশেও সংরক্ষণ করা হয় যাতে সত্তার জন্য লোড পদ্ধতিতে পরবর্তী অনুরোধটি প্রথম স্তরের ক্যাশে থেকে সত্তাকে ফিরিয়ে দেয় এবং আবার দ্বিতীয় স্তরের ক্যাশে যাওয়ার দরকার পড়বে না। যদি সত্তা প্রথম স্তরের ক্যাশে এবং দ্বিতীয় স্তরের ক্যাশেও পাওয়া যায় না, তবে ডাটাবেস কোয়েরি কার্যকর করা হবে এবং সত্তা উভয় ক্যাশে স্তরে সংরক্ষণ করা হবে, প্রতিক্রিয়া হিসাবে ফিরে আসার আগেload() পদ্ধতি।


2
দুর্দান্ত ব্যাখ্যা! আপনি যদি কিছু সিকোয়েন্স ডায়াগ্রাম আঁকতে পারতেন তবে দুর্দান্ত লাগবে !!!
আদেলিন

পুঙ্খানুপুঙ্খ এবং দুর্দান্ত ব্যাখ্যা
মণীশ

1
আপনি যদি যা ইতিমধ্যে জেনে গেছেন তা সংশোধন করতে চাইলে ডেনিস সি এবং আইওমএক্সএক্সের উপরোক্ত দুটি উত্তর দুর্দান্ত, খুব সংক্ষিপ্ত এবং মনে রাখা সহজ। তবে, আপনি যদি ইতিমধ্যে এটি জানেন না তখন আপনি এই পার্থক্যের ব্যাখ্যা খুঁজছেন, এই উত্তরটি আরও ভাল!
শিক্ষার্থী আত্মা

দুর্দান্ত ব্যাখ্যা !!
blu3

17

এটি একটি খুব সাধারণ প্রশ্ন, সুতরাং এই উত্তরটি আমার ব্লগে আমার লেখা নিবন্ধের ভিত্তিতে তৈরি ।

প্রথম স্তরের ক্যাশে

হাইবারনেট শেষ সম্ভাব্য মুহুর্ত পর্যন্ত স্থির হওয়া প্রসঙ্গটি ফ্লাশ করে দেওয়ার চেষ্টা করে। আমি যেমন এই নিবন্ধে ব্যাখ্যা করেছি , এই কৌশলটি traditionতিহ্যগতভাবে লেনদেনের লিখিত-পিছনে হিসাবে পরিচিত।

লেখার পিছনে কোনও যৌক্তিক বা শারীরিক লেনদেনের চেয়ে হাইবারনেট ফ্লাশিংয়ের সাথে আরও সম্পর্কিত। লেনদেনের সময়, ফ্লাশ একাধিকবার হতে পারে।

এখানে চিত্র বর্ণনা লিখুন

ফ্ল্যাশ পরিবর্তনগুলি কেবলমাত্র বর্তমান ডাটাবেস লেনদেনের জন্য দৃশ্যমান। বর্তমান লেনদেন প্রতিশ্রুতিবদ্ধ না হওয়া অবধি অন্যান্য সমবর্তী লেনদেনের দ্বারা কোনও পরিবর্তন দৃশ্যমান হয় না।

প্রথম স্তরের ক্যাশের কারণে হাইবারনেট বেশ কয়েকটি অনুকূলকরণ করতে পারে:

দ্বিতীয় স্তরের ক্যাশে

একটি যথাযথ ক্যাচিং সমাধান একাধিক হাইবারনেট সেশন জুড়ে বিস্তৃত হতে পারে এবং এই কারণেই হাইবারনেট একটি অতিরিক্ত দ্বিতীয় স্তরের ক্যাশে সমর্থন করে।

দ্বিতীয় স্তরের ক্যাশেটি সেশনফ্যাক্টরি জীবনচক্রের সাথে আবদ্ধ, সুতরাং এটি কেবল তখনই ধ্বংস SessionFactoryহয়ে যায় (সাধারণত যখন অ্যাপ্লিকেশনটি বন্ধ হয়ে থাকে)। দ্বিতীয় স্তরের ক্যাশেটি মূলত সত্তা-ভিত্তিক ভিত্তিক, যদিও এটি একটি alচ্ছিক ক্যোয়ারী-ক্যাশিং সমাধানটিকেও সমর্থন করে।

আরও তথ্যের জন্য, এই নিবন্ধটি দেখুন


3

ডিফল্টরূপে, এনহাইবারনেট প্রথম স্তরের ক্যাচিং ব্যবহার করে যা সেশন অবজেক্ট ভিত্তিক। তবে আপনি যদি কোনও মাল্টি-সার্ভার পরিবেশে চলমান থাকেন তবে প্রথম স্তরের ক্যাশে কিছু কর্মক্ষমতা সম্পর্কিত সমস্যাগুলির সাথে খুব বেশি স্কেলযোগ্য নাও হতে পারে। এটি একাধিক সার্ভারের মাধ্যমে ডেটা বিতরণ করার কারণে এটি ডাটাবেসে খুব ঘন ঘন ট্রিপ করতে হয়েছিল তার কারণেই ঘটে। অন্য কথায় NHibernate একটি বেসিক, অত-অত-পরিশীলিত প্রক্রিয়াজাতকরণ L1 বাক্সের বাইরে ক্যাশে সরবরাহ করে। যাইহোক, এটি এমন বৈশিষ্ট্য সরবরাহ করে না যে কোনও ক্যাচিং সলিউশনটির অবশ্যই প্রয়োগের কার্যকারিতার উপর উল্লেখযোগ্য প্রভাব ফেলতে হবে।

সুতরাং এই সমস্ত সমস্যার প্রশ্নগুলি হল একটি এল 2 ক্যাশে ব্যবহার করা যা সেশনের কারখানার সাথে সম্পর্কিত। এটি ডেটাবেসটিতে সময় গ্রহনের ভ্রমণের পরিমাণ হ্রাস করে তাই শেষ পর্যন্ত অ্যাপের প্রতিক্রিয়া সময়কে বাড়িয়ে তোলে।


1

প্রথম স্তরের ক্যাশে

সেশন অবজেক্টটি প্রথম স্তরের ক্যাশে ডেটা ধারণ করে। এটি ডিফল্টরূপে সক্ষম হয়। প্রথম স্তরের ক্যাশে ডেটা পুরো অ্যাপ্লিকেশনটিতে উপলব্ধ হবে না। একটি অ্যাপ্লিকেশন অনেক সেশন অবজেক্ট ব্যবহার করতে পারে।

দ্বিতীয় স্তরের ক্যাশে

সেশনফ্যাক্টরি অবজেক্টটি দ্বিতীয় স্তরের ক্যাশে ডেটা ধারণ করে। দ্বিতীয় স্তরের ক্যাশে সঞ্চিত ডেটা পুরো প্রয়োগের জন্য উপলব্ধ available তবে আমাদের এটি স্পষ্টভাবে সক্ষম করা দরকার।


-4

দ্বিতীয় স্তরের ক্যাশে, ডোমেন এইচবিএম ফাইলগুলি মূল কী এবং পরিবর্তনযোগ্য মান হতে পারে। উদাহরণস্বরূপ, এই ডোমেন শ্রেণিতে এক দিনের কিছু সময়কাল সর্বজনীন সত্য হিসাবে স্থির থাকে। সুতরাং, এটি অ্যাপ্লিকেশন জুড়ে অপরিবর্তনীয় হিসাবে চিহ্নিত করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.