ডাটাবেস পুলিং কি?


133

আমি কেবল ডাটাবেস সংযোগ পুলিংয়ের ধারণা এবং এটি কীভাবে অর্জন করা হয়েছিল তা জানতে চেয়েছিলাম।

উত্তর:


217

ডাটাবেস সংযোগ পুলিং একটি পদ্ধতি যা ডাটাবেস সংযোগগুলি উন্মুক্ত রাখতে ব্যবহৃত হয় যাতে সেগুলি অন্যরা পুনরায় ব্যবহার করতে পারে।

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

পরবর্তী কয়েকটি অনুচ্ছেদের জন্য নিম্নলিখিত চিত্রটি দেখুন:

  +---------+
  |         |
  | Clients |
+---------+ |
|         |-+  (1)   +------+   (3)    +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
|         |    |     +------+          +----------+
+---------+    |         ^
               |         | (2)
               |     /------\
               |     | Pool |
               |     \------/
           (4) |         ^
               |         | (5)
               |     +-------+   (6)   +-----------+
               #===> | Close | ======> | RealClose |
                     +-------+         +-----------+

এটি সহজতম ফর্মের মধ্যে, এটি একটি ওপেন-সংযোগ API কলটির অনুরূপ একটি এপিআই কল (1) যা "আসল" এর মতো to এটি প্রথমে উপযুক্ত সংযোগের জন্য পুলটি পরীক্ষা করে (2) এবং যদি একটি উপলব্ধ থাকে তবে তা ক্লায়েন্টকে দেওয়া হয়েছে। অন্যথায় একটি নতুন তৈরি করা হয় (3)।

একটি "উপযুক্ত সংযোগ" হ'ল এমন একটি যা ইতিমধ্যে সঠিক তথ্য (যেমন ডাটাবেস উদাহরণ, শংসাপত্র এবং সম্ভবত অন্যান্য জিনিস) ব্যবহার করে ডাটাবেসে অ্যাক্সেস পেয়েছে

একইভাবে, একটি ঘনিষ্ঠ এপিআই কল রয়েছে (4) যা প্রকৃত নিকটবর্তী সংযোগকে কল করে না , বরং এটি পরে ব্যবহারের জন্য পুলটিতে সংযোগ স্থাপন করে (5)। এক পর্যায়ে পুলে সংযোগ করা যেতে পারে আসলে বন্ধ (6)।

এটি একটি দুর্দান্ত সরল ব্যাখ্যা। বাস্তব বাস্তবায়নগুলি একাধিক সার্ভার এবং একাধিক ব্যবহারকারীর অ্যাকাউন্টগুলিতে সংযোগগুলি পরিচালনা করতে সক্ষম হতে পারে, তারা সংযোগগুলির কিছু বেসলাইন প্রাক-বরাদ্দ করতে পারে তাই কিছু তত্ক্ষণাত্ প্রস্তুত থাকে এবং ব্যবহারের প্যাটার্নটি শান্ত হয়ে গেলে তারা প্রকৃতপক্ষে পুরানো সংযোগগুলি বন্ধ করতে পারে।


9
আপনি কোথা থেকে সুন্দর ছোট গ্রাফ পাবেন?
অ্যাড্রিয়ান গ্রিগোর

19
আমি এটি স্ক্র্যাচ থেকে তৈরি করেছি (মূর্খ আমাকে) আপনি যদি কিছু শালীন গ্রাফিক্স দেখতে চান তবে জেনগারের উত্তরটি দেখুন।
paxdiablo

1
যদি কোনও উপলব্ধ থাকে তবে তা ক্লায়েন্টকে দেওয়া হয়েছে, অন্যথায় একটি নতুন তৈরি করা হয়েছে imilar একইভাবে, এমন একটি ঘনিষ্ঠ এপিআই কল রয়েছে যা প্রকৃত নিকটবর্তী সংযোগটি আসলে কল করে না, বরং এটি পরে ব্যবহারের জন্য পুলটিতে সংযোগ স্থাপন করে। আপনার উল্লেখ হিসাবে, আমি খুব কম প্রশ্ন আছে। যখন 1000 ক্লায়েন্টের অনুরোধ সংযোগ এবং বন্ধ নয়। সুতরাং পুলের মধ্যে 1000 সংযোগ জীবন্ত। এটি পুলের কার্য সম্পাদনের পক্ষে ভাল ?? এবং আমাকে বুঝতে আমার বোঝা একটু ভুল হয়েছে ??
ইয়ে উইন

@ ইয়েউইন, ভাল লাগছে না। আপনার পুলটিতে 1000 টি সংযোগ রেখে যাওয়ার বিষয়ে পুনরায় প্রশ্ন করুন, এটি তখনই ঘটতে পারে তবে আপনি যদি 1000 সমবর্তী ক্রিয়াকলাপের সাথে কোনও পর্যায়ে এসে পৌঁছান। অন্যথায়, পুনরায় ব্যবহার করা হবে এবং এটি 1000 এ পৌঁছাবে না that এই ঘটনার পরিপ্রেক্ষিতে, আমার পেনাল্টিমেট অনুচ্ছেদটি দেখুন, বিশেষত "ব্যবহারের ধরণটি শান্ত হয়ে গেলে" আসলেই পুরানো সংযোগগুলি বন্ধ করতে পারে "।
paxdiablo

1
@ ডিগোমারিয়ানী, আমি হাতে হাতে এটি সম্পন্ন করার চেয়ে ধীরে ধীরে, এমএস
ওয়ার্ডকে

105

চিত্রগুলি হাজার শব্দ বলে (প্যাক্সিডিয়াবল একটি দুর্দান্ত বর্ণনা দিয়েছেন):

বিকল্প পাঠ

উৎস


35
এবং স্পষ্টতই, ভাল চিত্রগুলি ASCII শিল্পের কয়েক শত
টুকরোও বলেছে

@ সাগর দয়া করে উত্তরটি বেছে নিন যা আপনি সবচেয়ে কার্যকর বলে মনে করেছেন। আপনার কোনও গ্রহণযোগ্য রেকর্ড নেই।
zengr

1
আমি পুলে ৪ টি সংযোগ দেখেছি pool তাই পুল সংযোগের মাধ্যমে এই পুলে সংযোগ নম্বর সীমাবদ্ধ রয়েছে ?? বা পুলটিতে সংযোগ ফ্রি না হলে কী হবে? ক্লায়েন্টের জন্য কানেকশন মুক্ত অপেক্ষা করা দরকার ??
ইয়ে উইন

1
@ ডিএডেন্ডেন সংযোগ পুলটি কীভাবে বাস্তবায়ন করা হয় তার উপর এটি নির্ভর করে। সংযোগ সর্বাধিক ক্ষমতাতে পৌঁছালে বেশিরভাগ পুল একটি নতুন সংযোগ তৈরি করে। এটি ডিবি একটি প্রান্তে পৌঁছানো অবধি বাড়তে থাকবে। কিছু ক্ষেত্রে (যেমন ওরাকল জেডিবিসি) আপনি পুল নির্মাণের সময় "প্রাথমিক আকার" এবং "সর্বাধিক আকার" নির্দিষ্ট করতে পারেন।
zengr

2
দুর্ভাগ্যক্রমে, চিত্রটি সবচেয়ে গুরুত্বপূর্ণ জিনিসটি বলে না। এটি: 10, 20, 30, ... কেন খোলা সংযোগগুলি মেমরির জন্য এবং সামগ্রিক সিস্টেমের পারফরম্যান্সের জন্য প্রয়োজনের সময় একটি সংযোগ খোলার চেয়ে কম ব্যয়বহুল? এটা কিভাবে হতে পারে? 30 বনাম 1 কম ব্যয়বহুল? কিভাবে?
সবুজ

16

নাম অনুসারে। কিছু লোক যদি সাঁতার কাটতে চায় তবে তারা একই সুইমিংপুলে সাঁতার কাটতে পারে, প্রতিবার কেউ যুক্ত হলে নতুন সুইমিংপুলটি তৈরি করা কি আসলেই বোঝা যায়? সময় এবং ব্যয় একটি অগ্রাধিকার।


7

ডাটাবেস সংযোগ পুলিং হ'ল ডাটাবেসগুলিতে সংযোগগুলি ক্যাশে করা হয় যাতে প্রতিবার আমরা কোনও ডাটাবেসে সংযোগ করতে চাইলে নতুন সংযোগ স্থাপনের ব্যয় হ্রাস করার জন্য পরের বার তাদের পুনরায় ব্যবহার করা যেতে পারে।



1

সংযোগ পুলিং ধারণাটি কেবল জাভাতে নয়, বহু প্রোগ্রামিং ভাষা জুড়ে। একটি নতুন সংযোগ অবজেক্ট তৈরি করা ব্যয়বহুল তাই একটি ভার্চুয়াল পুল জাভা জাস্ট ( http://javajust.com/javaques.html ) তৈরি করে লাইফসাইকেলে সংখ্যার নির্দিষ্ট সংযোগ তৈরি এবং রক্ষণাবেক্ষণ করা হয় এই পৃষ্ঠায় প্রশ্ন 14 দেখুন

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