তারা কী এবং কীভাবে তারা কাজ করে?
প্রসঙ্গটি এসকিউএল সার্ভার হিসাবে ঘটে
তারা কী এবং কীভাবে তারা কাজ করে?
প্রসঙ্গটি এসকিউএল সার্ভার হিসাবে ঘটে
উত্তর:
উইন্ডোজ এবং পসআইএক্স উভয় সিস্টেমে, নামযুক্ত পাইপগুলি একই মেশিনে চলমান প্রক্রিয়াগুলির মধ্যে আন্ত-প্রক্রিয়া যোগাযোগের জন্য একটি উপায় সরবরাহ করে। পাইপ নামযুক্ত যা আপনাকে দেয় তা হল নেটওয়ার্ক স্ট্যাকের সাথে জড়িত পারফরম্যান্সের জরিমানা ছাড়াই আপনার ডেটা প্রেরণের এক উপায়।
আগত অনুরোধগুলির জন্য আপনার যেমন কোনও আইপি ঠিকানা / পোর্ট শুনে কোনও সার্ভার রয়েছে, তেমন কোনও সার্ভার একটি নামযুক্ত পাইপও সেটআপ করতে পারে যা অনুরোধগুলি শুনতে পারে। উভয় ক্ষেত্রেই, ক্লায়েন্ট প্রক্রিয়া (বা ডিবি অ্যাক্সেস লাইব্রেরি) অবশ্যই অনুরোধটি প্রেরণের জন্য নির্দিষ্ট ঠিকানা (বা পাইপের নাম) জানতে হবে। প্রায়শই, একটি সাধারণভাবে ব্যবহৃত স্ট্যান্ডার্ড ডিফল্ট উপস্থিত থাকে (অনেকটা এইচটিটিপি-র পোর্ট 80 এর মতো, এসকিউএল সার্ভারটি টিসিপি / আইপিতে 1433 বন্দর ব্যবহার করে; named পাইপ \ এসকিএল a নামযুক্ত পাইপের জন্য ক্যোয়ারী)।
অতিরিক্ত নামযুক্ত পাইপ সেট আপ করে, আপনার একাধিক ডিবি সার্ভার চলতে পারে, প্রতিটি নিজস্ব অনুরোধ শ্রোতাদের সাথে।
নামযুক্ত পাইপগুলির সুবিধা হ'ল এটি সাধারণত অনেক দ্রুত হয় এবং নেটওয়ার্ক স্ট্যাক সংস্থানগুলি মুক্ত করে।
- বিটিডাব্লু, উইন্ডোজ জগতে, আপনি পাইপগুলির নাম দূরবর্তী মেশিনেও রাখতে পারেন - তবে সেই ক্ষেত্রে, নামযুক্ত পাইপটি টিসিপি / আইপি-র মাধ্যমে পরিবহন করা হয়, তাই আপনি কর্মক্ষমতা হারাবেন। স্থানীয় মেশিন যোগাযোগের জন্য নামযুক্ত পাইপ ব্যবহার করুন।
ইউনিক্স এবং উইন্ডোজ দুজনেরই "নামযুক্ত পাইপ" নামে জিনিস রয়েছে তবে তারা ভিন্ন আচরণ করে। ইউনিক্সে, নামযুক্ত পাইপটি একটি একমুখী রাস্তা যা সাধারণত মাত্র একজন পাঠক এবং একজন লেখক থাকে - লেখক লেখেন, এবং পাঠক পড়েন, আপনি এটি পেয়েছেন?
উইন্ডোজে, জিনিসটি "নামযুক্ত পাইপ" টিসিপি সকেটের মতো একটি আইপিসি অবজেক্ট - জিনিস উভয় দিক দিয়ে প্রবাহিত হতে পারে এবং কিছু মেটাডেটা রয়েছে (আপনি অন্য প্রান্তে জিনিসটির শংসাপত্রগুলি পেতে পারেন)।
ইউনিক্স নামের পাইপগুলি ফাইল সিস্টেমে একটি বিশেষ ফাইল হিসাবে উপস্থিত হয় এবং শেল সহ সাধারণ ফাইল আইও কমান্ডের সাহায্যে এটি অ্যাক্সেস করা যায়। উইন্ডোজগুলি না করে এবং একটি বিশেষ সিস্টেম কল দিয়ে খোলার প্রয়োজন হয় (যার পরে তারা বেশিরভাগ সাধারণ উইন 32 হ্যান্ডেলের মতো আচরণ করে)।
আরও বিভ্রান্তিকর, ইউনিক্সের কাছে "ইউনিক্স সকেট" বা এএফ_ইউনিক্স সকেট নামে কিছু রয়েছে যা দ্বিদ্বিদ্বী হওয়ায় উইন 32 "নামক পাইপ" এর মতো আরও (তবে সম্পূর্ণ পছন্দ নয়) কাজ করে।
লিনাক্স পাইপস
ফার্স্ট ইন ফার্স্ট আউট (ফিফো) ইন্টারপ্রোসেস যোগাযোগ ব্যবস্থা।
কমান্ড লাইনে নামহীন পাইপগুলি "" "দ্বারা প্রতিনিধিত্ব করে দুটি কমান্ডের মধ্যে।
পাইপগুলির নামকরণ
একটি ফিফোর বিশেষ ফাইল। একবার তৈরি হয়ে গেলে, আপনি পাইপটি কোনও সাধারণ ফাইলের মতো ব্যবহার করতে পারেন (খোলা, বন্ধ, লিখুন, পড়ুন, ইত্যাদি)।
কমান্ড লাইন ( ম্যান পৃষ্ঠা ) থেকে "মাই পাইপ" নামে একটি নামযুক্ত পাইপ তৈরি করতে :
mkfifo myPipe
সি থেকে একটি নামী পাইপ তৈরি করতে, যেখানে "প্যাথনাম" নামটিই আপনি পাইপটি পেতে চান এবং "মোড" এ পাইপের যে অনুমতি থাকতে পারে তা রয়েছে ( ম্যান পৃষ্ঠা ):
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
tell()
অবস্থান করতে পারবেন না seek()
।
উইকিপিডিয়া অনুসারে :
[...] একটি traditionalতিহ্যবাহী পাইপটি "নামবিহীন" কারণ এটি বেনামে উপস্থিত রয়েছে এবং প্রক্রিয়াটি যতক্ষণ চলবে কেবল ততক্ষণ ধরে থাকে। একটি নামী পাইপ সিস্টেম-অবিচলিত এবং প্রক্রিয়াটির জীবনর বাইরেও বিদ্যমান এবং এটি ব্যবহার না করা হলে অবশ্যই "লিঙ্কযুক্ত" বা মুছে ফেলা উচিত। প্রক্রিয়াগুলি সাধারণত নামক পাইপের সাথে সংযুক্ত থাকে (সাধারণত একটি ফাইল হিসাবে প্রদর্শিত হয়) আইপিসি সম্পাদন করতে (আন্তঃ প্রক্রিয়া যোগাযোগ)।
পাইপগুলি অ্যাপ্লিকেশনগুলির মধ্যে ডেটা স্ট্রিম করার একটি উপায়। লিনাক্সের অধীনে আমি এই প্রক্রিয়াটির আউটপুটটিকে অন্য প্রক্রিয়াতে প্রবাহিত করার জন্য সমস্ত সময় ব্যবহার করি। এটি বেনামে রয়েছে কারণ গন্তব্য অ্যাপটির কোনও ধারণা নেই that ইনপুট-স্ট্রিমটি কোথা থেকে এসেছে। এটির দরকার নেই।
একটি নামী পাইপ হ'ল একটি বিদ্যমান পাইপে সক্রিয়ভাবে হুক করা এবং এর ডেটা হুভার করার একটি উপায়। এটি এমন পরিস্থিতিতে যেখানে সরবরাহকারী জানেন না যে ক্লায়েন্টরা কী ডেটা খাবে।
এটি টেকনেটের একটি অংশ (তাই নিশ্চিত উত্তর নেই যে নামক পাইপগুলি দ্রুত বলে কেন ??):
নামী পাইপ বনাম টিসিপি / আইপি সকেট
একটি দ্রুত স্থানীয় অঞ্চল নেটওয়ার্ক (ল্যান) পরিবেশে, সংক্রমণ নিয়ন্ত্রণ প্রোটোকল / ইন্টারনেট প্রোটোকল (টিসিপি / আইপি) সকেট এবং নামযুক্ত পাইপ ক্লায়েন্টগুলি পারফরম্যান্সের ক্ষেত্রে তুলনীয়। তবে, টিসিপি / আইপি সকেট এবং নামযুক্ত পাইপ ক্লায়েন্টগুলির মধ্যে পারফরম্যান্স পার্থক্য ধীর নেটওয়ার্কগুলির সাথে স্পষ্ট হয়ে যায় যেমন বিস্তৃত অঞ্চল নেটওয়ার্কগুলি (ডাব্লুএএনএস) বা ডায়াল-আপ নেটওয়ার্কগুলি জুড়ে। পিয়ারদের মধ্যে আন্তঃসম্পর্ক যোগাযোগ (আইপিসি) প্রক্রিয়াগুলি বিভিন্ন উপায়ে যোগাযোগ করার কারণে এটি ঘটে।
নামযুক্ত পাইপগুলির জন্য, নেটওয়ার্ক যোগাযোগগুলি সাধারণত আরও ইন্টারঅ্যাকটিভ হয়। কোনও পিয়ার রিড কমান্ড ব্যবহার করে অন্য পীরের কাছে এটি না চাইতে পারা ডেটা প্রেরণ করে না। একটি নেটওয়ার্ক রিডে সাধারণত পিক নামের পাইপ বার্তাগুলির একটি সিরিজ জড়িত থাকে এটি ডেটা পড়া শুরু করার আগে। এগুলি ধীর নেটওয়ার্কে খুব ব্যয়বহুল হতে পারে এবং অতিরিক্ত নেটওয়ার্ক ট্র্যাফিকের কারণ হতে পারে যা অন্য নেটওয়ার্ক ক্লায়েন্টকে প্রভাবিত করে।
আপনি যদি স্থানীয় পাইপ বা নেটওয়ার্ক পাইপ সম্পর্কে কথা বলছেন তবে তা স্পষ্ট করে জানাও গুরুত্বপূর্ণ। যদি এসকিউএল সার্ভারের একটি দৃষ্টান্ত চলমান কম্পিউটারে সার্ভার অ্যাপ্লিকেশন স্থানীয়ভাবে চলমান থাকে তবে স্থানীয় নামযুক্ত পাইপ প্রোটোকল একটি বিকল্প। স্থানীয় নামযুক্ত পাইপগুলি কার্নেল মোডে চলে এবং এটি খুব দ্রুত।
টিসিপি / আইপি সকেটের জন্য, ডেটা সংক্রমণগুলি আরও সুচলিত হয় এবং এতে ওভারহেড কম থাকে। ডেটা ট্রান্সমিশনগুলি টিসিপি / আইপি সকেটগুলির কার্যকারিতা বৃদ্ধির প্রক্রিয়া যেমন উইন্ডোডিং, বিলম্বিত স্বীকৃতি ইত্যাদির সুবিধাও নিতে পারে। এটি একটি ধীর নেটওয়ার্কে খুব সহায়ক হতে পারে। অ্যাপ্লিকেশনগুলির ধরণের উপর নির্ভর করে এই জাতীয় পারফরম্যান্সের পার্থক্যগুলি উল্লেখযোগ্য হতে পারে।
টিসিপি / আইপি সকেটগুলি ব্যাকলগ সারি সমর্থন করে। আপনি এসকিউএল সার্ভারের সাথে সংযোগের চেষ্টা করার সময় পাইপ-ব্যস্ত ত্রুটির কারণ হতে পারে এমন নামযুক্ত পাইপের তুলনায় এটি একটি সীমিত স্মুথিং এফেক্ট সরবরাহ করতে পারে।
সাধারণত, টিসিপি / আইপি ধীর ল্যান, ডাব্লুএএন, বা ডায়াল-আপ নেটওয়ার্কে অগ্রাধিকার দেওয়া হয়, যখন নেটওয়ার্কের গতি সমস্যা না হলে নামযুক্ত পাইপগুলি আরও ভাল পছন্দ হতে পারে কারণ এটি আরও কার্যকারিতা, ব্যবহারের সহজতা এবং কনফিগারেশন বিকল্পগুলির প্রস্তাব দেয়।
উইন্ডোজ অ্যাপ্লিকেশনগুলির জন্য আন্তঃ-প্রক্রিয়া যোগাযোগ (বেশিরভাগ)। ইউনিক্সে অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগের জন্য সকেটগুলি ব্যবহার করার মতো।
ইউনিক্স / লিনাক্স প্রসঙ্গে নামযুক্ত পাইপগুলি যোগাযোগ করার জন্য দুটি পৃথক শেল তৈরি করতে ব্যবহার করা যেতে পারে যেহেতু শেল কেবল অন্যের সাথে কিছু ভাগ করতে পারে না।
তদুপরি, একই শেলটিতে দু'বার ইনস্ট্যান্ট করা একটি স্ক্রিপ্ট দুটি দৃষ্টান্তের মাধ্যমে কিছু ভাগ করতে পারে না। আমি ডেমোনের কোডিং করার সময় নামযুক্ত পাইপের জন্য একটি ব্যবহার পেয়েছি যেখানে স্টার্ট () এবং স্টপ () ফাংশন রয়েছে এবং আমি দুটি ক্রিয়া সম্পাদন করতে একই স্ক্রিপ্টটি ব্যবহার করতে চেয়েছিলাম।
নামযুক্ত পাইপ (বা কোনও ধরণের সেমফোর) ব্যাকগ্রাউন্ডে স্ক্রিপ্ট শুরু করা কোনও সমস্যা নয়। জিনিসটি যখন এটি শেষ হয় আপনি পটভূমিতে উদাহরণটি অ্যাক্সেস করতে পারবেন না।
সুতরাং আপনি যখন তাকে স্টপ কমান্ডটি প্রেরণ করতে চান আপনি কেবল এটি করতে পারবেন না: নামযুক্ত পাইপ ছাড়াই একই স্ক্রিপ্টটি চালানো এবং স্টপ ফাংশন কল করা কোনও কাজ করবে না যেহেতু আপনি আসলে অন্য কোনও উদাহরণ চালাচ্ছেন।
সমাধানটি ছিল আপনি যখন ডিমনটি শুরু করবেন তখন দুটি পাইপ প্রয়োগ করুন, একটি পড়ুন এবং অন্যটি রাইট করুন। তারপরে তাকে অন্যান্য কাজের মধ্যে তৈরি করুন, READ পাইপটি শুনুন। তারপরে স্টপ () ফাংশনে একটি কমান্ড রয়েছে যা পাইপে একটি বার্তা লিখবে, এটি পটভূমি চলমান স্ক্রিপ্ট দ্বারা পরিচালিত হবে যা একটি প্রস্থান করবে 0 এইভাবে একই স্ক্রিপ্টের আমাদের দ্বিতীয় উদাহরণটি কেবল কাজটি করতে পারে: থামার জন্য প্রথম উদাহরণটি বলুন।
এইভাবে একটি এবং কেবল একটি স্ক্রিপ্ট নিজেই শুরু এবং থামাতে পারে।
উদাহরণস্বরূপ কোনও স্পর্শের মাধ্যমে স্টপটি ট্রিগার করে আপনার এটি করার বিভিন্ন উপায় রয়েছে। তবে এটি কোডের জন্য সুন্দর এবং আকর্ষণীয়।
নামযুক্ত পাইপগুলি আন্ত-প্রক্রিয়া যোগাযোগের জন্য একটি উইন্ডোজ সিস্টেম। এসকিউএল সার্ভারের ক্ষেত্রে, সার্ভারটি যদি ক্লায়েন্টের মতো একই মেশিনে থাকে, তবে TCP / IP এর বিপরীতে ডেটা ট্র্যানফার করার জন্য নামযুক্ত পাইপ ব্যবহার করা সম্ভব।