এসকিউএল ডাটাবেসে কেন সমবর্তী লেখার অনুমতি নেই?


79

আমি এসকিউএলাইট সহ জাভা ব্যবহার করে ডাটাবেস প্রোগ্রামিং করছি।

আমি দেখতে পেয়েছি যে ডাটাবেসের সাথে একবারে কেবল একটি সংযোগের লেখার ক্ষমতা রয়েছে, আবার অনেকগুলি সংযোগ একবারে পড়ার ক্ষমতা রাখে।

এসকিউএলাইটের স্থাপত্যটি কেন এইভাবে ডিজাইন করা হয়েছিল? যতক্ষণ দুটি লেখা হচ্ছে তা ডাটাবেসে একই জায়গায় লেখা হচ্ছে না, কেন দুটি লেখাই একবারে ঘটতে পারে না?



5
কারণ এসকিউএলাইট "লাইট" হতে ডিজাইন করা হয়েছিল। কর্মক্ষমতা সহ কম মেমরি এবং কম প্রক্রিয়াজাতকরণ। আপনি কীভাবে এসকিউএলাইটকে একই ফাইলটিতে একাধিক লেখার হ্যান্ডেল করবেন তা ভাবুন। বর্তমান নকশাটি কার্যকর করা সহজ - পুরো ফাইলটি লক হয়ে গেছে এবং অন্যদের অপেক্ষা করতে হবে। নিম্ন স্তরের গ্রানুলারিটির সাথে সামঞ্জস্য লেখার জন্য সারি / পৃষ্ঠা লক করা দরকার যা আপনি আরডিএমএস থেকে পান। যদি প্রয়োজনের সাথে সামঞ্জস্য লেখার দাবি হয়, তবে এসকিউএলাইট কোনও প্রার্থী নয় এবং পরিবর্তে, আপনার হালকা ওজনের আরডিবিএমএসের দিকে নজর দেওয়া উচিত: en.wikedia.org/wiki/…
টমাস কার্লিসেল

উত্তর:


157

কারণ "একাধিক সমবর্তী লেখক" একক লেখক, একাধিক-পাঠকের চেয়ে মূল ডাটাবেস ইঞ্জিনে অর্জন করা অনেক বেশি কঠিন। এটি এসকিউএলাইটের ডিজাইনের প্যারামিটারের বাইরে এবং এটি সহ এসকিউএলাইটের আনন্দদায়ক ছোট আকার এবং সরলতাকে নষ্ট করবে।

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

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

এসকিউএলাইটের উপযুক্ত ব্যবহারের পৃষ্ঠায় একটি বিবৃতি দিয়ে দর্শনটির সংক্ষিপ্তসার ঘটানো যেতে পারে :

এসকিউএলাইট ক্লায়েন্ট / সার্ভার ডেটাবেসগুলির সাথে প্রতিযোগিতা করে না। এসকিউএলাইট ফপেন () এর সাথে প্রতিযোগিতা করে।


41
+1 টি। এসকিউএলাইট একটি প্রক্রিয়াধীন ডাটাবেস। কোনও সার্ভার-ভিত্তিক ডিবিতে রয়েছে এমন কোনও কেন্দ্রীয় সালিশ নেই। লেখকদের সরাসরি একে অপরের সাথে সহযোগিতা এবং বিশ্বাস করতে হবে। কোনও একক দূষিত লেখক কেবল সহযোগিতা না করে সর্বনাশ করতে পারেন।
জার্গ ডব্লু মিট্টাগ

12
এছাড়াও, এসকিউএলাইট কার্যকর করে এমন কিছু পরিবেশ এমনকি একাধিক প্রক্রিয়া সমর্থন করে না।
ডেভিড 25272

1
সম্ভবত একটি দূষিত লেখাই ইতিমধ্যে সহযোগিতা না করে বিপর্যয় ডেকে আনতে পারে। তারা এটি করার জন্য এসকিউএলাইট কোডটি ব্যবহার করতে পারে না, তবে তাদের নিজস্ব কোড থাকতে পারে, যা কেবল লিঙ্কমুক্ত করার কল হতে পারে ()
বিডিএসএল

12
একযোগে অ্যাপ্লিকেশনগুলিতে খুব বেশি মাঝারি স্থল নেই। হয় আপনি সম্মতি, ধারাবাহিকতা এবং ডেটা অখণ্ডতা পেতে পারেন চ্যালেঞ্জিং শর্ত এবং প্রান্তের মামলা সহ অন্তত 100% সময়, বা আপনি পাবেন না। যদি আপনি এটি না করেন তবে এটি ভঙ্গুর, ধীর এবং ক্রাশপ্রবণ এবং লোকেরা খুব দ্রুত এটির উপর নির্ভর করে stop তবে এটি নিয়মিতভাবে সঠিকভাবে পাওয়া শক্তিশালী is এমন অনেকগুলি পরিস্থিতি নেই যেখানে লেখকরা মূল সমর্থনের অনুপস্থিত ওডলস, আন্তঃস্বীকৃত লেখাগুলি নিজেরাই সমন্বিত করতে পারেন।
জোনাথন ইউনিস

8
@ বিডিএসএল যে কোনও ধরণের ডাটাবেসগুলি ধরে নিতে হবে যে লেখকরা ভাল আচরণ করবেন না যাতে তারা ডেটা হারাবেন না। লেখকরা এসকিউএলাইট এটিকে প্রতিযোগী হিসাবে অবস্থান করে fopen(), তাই সরল পাঠ্য ফাইলে একযোগে লেখার সাথে আসে এমন সমস্ত চুলচেরা বিবেচনা করুন।
ব্লারফ্লার

12

কারণ এমন কোনও সার্ভার নেই যা জানাতে পারে যে জিনিসগুলি একই জায়গায় লিখতে হবে কি না। একটি ফাইল লেখার চেষ্টা করছে মাত্র দুটি প্রক্রিয়া।

একটি মন্তব্যে ইঙ্গিত হিসাবে, সমবর্তী লেখাগুলি একটি অভ্যন্তরীণ থ্রেড দ্বারা সমর্থিতও হতে পারে। এটি কতটা ভাল কাজ করবে তা নিশ্চিত নয় (এটি সম্পর্কে খুব বেশি ভাবেননি)। যাইহোক এখানে এসকিউএলাইট থ্রেড ব্যবহার করে না: ডঃ হিপ মনে করেন যে থ্রেডগুলি খারাপ।

আসলে ডিআর Hipp মনে করেন যে যে থ্রেড মন্দ মধ্যে নথিভুক্ত করা হয় SQLite প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী


2
এটি সমকালীন লেখাগুলির অনুমতি না পাওয়ার প্রযুক্তিগত কারণ ব্যাখ্যা করে, তবে কেন নকশার সিদ্ধান্ত নেওয়া হয়েছিল তা নয়।
রবার্ট হার্ভে

3
এসকিউএলাইট ডিজাইন করার সিদ্ধান্ত যাতে এটি একবারে কেবল একটি লেখাকেই পরিচালনা করে।
রবার্ট হার্ভে

7
@ গায়ো কোনও সার্ভারের সমবর্তী লেখাগুলি পরিচালনা করার প্রয়োজন নেই: যেমন একটি ডাটাবেস সার্ভারটি পৃথক প্রক্রিয়া, এসকিউএলাইটের অভ্যন্তরে একটি পৃথক থ্রেড থাকতে পারে যা একই উদ্দেশ্যে কাজ করে। রবার্ট হার্ভে সঠিক: এসকিউএল দলটি একটি নকশার সিদ্ধান্ত নিয়েছিল, এবং এটি একক গ্রন্থাগারের সাম্প্রতিক লেখাগুলি পরিচালনা করার দক্ষতার সাথে কিছুই করার নেই (কারণ এটি তাত্ত্বিকভাবে পারে)।

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

5
@ জেপা: এসকিউএলাইট ইতিমধ্যে "সার্ভার" ছাড়াই বেশ কয়েকটি প্রক্রিয়া / থ্রেডের মধ্যে লক সিঙ্ক্রোনাইজ করার ব্যবস্থা করে। একটি "সার্ভার" প্রয়োজন নেই - ওএস-সরবরাহিত লকিং / সিঙ্ক্রোনাইজেশন / আইপিসি / যা যথেষ্ট তা ব্যবহার করে, তবে জটিল বাস্তব দ্রুত পাওয়া যায়। পোস্টে উল্লিখিত "অভ্যন্তরীণ থ্রেড" এর কোনও অর্থ নেই।
মাদুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.