দুটি অজগর প্রসেস সহ এসকিউএলাইট এতে অ্যাক্সেস করে: একটি পাঠ্য, একটি লেখা


22

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

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

দেখে মনে হচ্ছে লিখিতভাবে এগিয়ে থাকা লগিং সক্ষম হয়েছে, একসাথে একটি এসকিউএল ডাটাবেস পড়া এবং লেখাই ডাটাবেসটির বাইরে কোনও প্রক্রিয়া লক না করেই ঘটতে পারে।

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


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

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

... পিছনে। আমি সমস্ত বিবরণ মনে রাখিনা, তবে আমি মনে করি যখন যখন একটি প্রক্রিয়া একটি লক পাওয়ার চেষ্টা করেছিল এবং অন্য একটি পড়ার কারণে না পারে, তখন এটি 20-30 সেকেন্ডের মতো পাগলের মতো কিছু পেতে পারে LE আমরা একটি ডেডিকেটেড থ্রেড তৈরি করে শেষ করেছি যা এসকিউএলাইট অ্যাক্সেসের জন্য দায়ী ছিল এবং তারপরে আমাদের উভয় প্রসেস ছিল এবং সেগুলির মধ্যে সমস্ত থ্রেড রয়েছে D সেই থ্রেডে তাদের ডিবি অনুরোধকে সিরিয়ালাইজ করবে। অন্ধকারে, সম্ভবত আমি আবার এসকিউএলাইটের সাথে যেতে পারতাম না।
DXM

1
@ ডিএক্সএম সতর্কতার জন্য ধন্যবাদ জানায়, তবে কয়েকটি পরীক্ষা চালানোর পরে আমি তেমন কিছু করার চেষ্টা করি না। আমি জানি যে স্ক্লাইটটি সংস্করণ 3 সহ একটি বড় আকারের রূপরেখা পেয়েছে, যা ২০০৪ এর কাছাকাছি ছিল, তাই আমি অবাক হয়েছি যে আপনার নেতিবাচক অভিজ্ঞতা সেই সময়ের আগে থেকে আসে।
বিবি

1
... নিজে, এসকিউএলাইটের লকিং স্কিমগুলির উপর নির্ভর না করে। আমি নিজেই কাজটি করিনি, এটি অন্য একটি দল ছিল তবে আমি বেশিরভাগ প্রতিক্রিয়া জানাতে এবং কৌতূহলের বাইরে লুপটিতে রেখেছিলাম। আমি অনলাইনেও গিয়েছিলাম এবং কিছু স্বাধীন পাঠ করেছি এবং মূল লেখকের পৃষ্ঠাটি পেয়েছি found এটি পড়ে, আমার ধারণাটি পাওয়া গেল যে এসকিউএলাইটের আবিষ্কারক কেবল থ্রেডগুলি ঘৃণা করেছিলেন এবং কেন কেউ এগুলি ব্যবহার করবেন তা দেখেননি, তাই ক) তাদের সাথে ডিবি ডিজাইন করা হয়নি এবং খ) তালা / সুরক্ষা ছিল যুক্ত / প্রত্যাশা হিসাবে হ্যাক হয়েছে কারণ অনেক লোক এটি চেয়েছিল।
DXM

উত্তর:


25

আপনি ফাইল লকিং এবং কনকুরেন্সি ডকুমেন্টেশন সন্ধান করছেন।

এসকিউএলাইট প্রক্রিয়াগুলি সম্মতিতে পরিচালনা করতে লকগুলির একটি সিরিজ ব্যবহার করে; পড়তে, বিভিন্ন প্রক্রিয়া একটি SHAREDলক পেতে পারে।

যে প্রক্রিয়াটি লিখেছে, তার জন্য একটি RESERVEDলক পাওয়া দরকার, এবং কেবলমাত্র যখন ডিস্কে পরিবর্তনগুলি প্রবাহিত করতে হয় কেবল তখনই এটি PENDINGরাজ্যে চলে যায় । যেকোন পড়ার প্রক্রিয়াটির পরে ফাইলটি আনলক করতে হবে, তার পরে লেখার প্রক্রিয়াটি EXCLUSIVEআসল ডাটাবেস ফাইলটিতে লেখার জন্য যেতে সক্ষম হয় ।

কারণ লেখক প্রক্রিয়াটিতে কেবলমাত্র আসল লেখার জন্য ডেটাবেস ফাইলটি লক করা প্রয়োজন (মেমরি ফ্লাশ, কমিট), কেবলমাত্র একজন পাঠক এবং মাত্র একজন লেখক একটি সেটআপ বেশ ভাল অভিনয় করবেন। আমি আশা করি যে এটি ঠিকঠাকভাবে সঞ্চালিত হবে, যদি ভাল না হয় তবে একটি সেটআপ হিসাবে কেবল একটি প্রক্রিয়া সমস্ত পড়া এবং লেখার কাজ করে।

যখন আপনার একাধিক প্রক্রিয়া ঘন ঘন একই ডাটাবেসে লেখার জন্য থাকে তখন এসকিউএলাইট কম উপযুক্ত হয়, কারণ PENDINGপরিবর্তনের ক্রমিকায়িতকরণের জন্য লেখার জন্য একচেটিয়া লক পাওয়া দরকার ।


মার্টিজানের পুরো উত্তরের জন্য ধন্যবাদ! আমি কিছু স্ক্রিপ্ট কিছু টেস্টিং করি এবং মনে হয় যে দুটি প্রক্রিয়া সুখের সাথে একক স্ক্লাইটের উদাহরণটি একই সাথে পড়বে এবং লিখবে। আমি একযোগে পঠন এবং লেখার অনুরোধগুলি সেকেন্ডের প্রতি 1/100 তম বন্ধ করে দিয়েছিলাম এবং এখনও লকড ডিবি ব্যতিক্রম পাইনি। আশ্চর্যের বিষয় হল, কেবলমাত্র যখন আমি "ডাটাবেস লক" ত্রুটি বার্তাটি পেলাম তখন ম্যানুয়ালি চেষ্টা করছিলাম (sqlite3 কমান্ড লাইন ক্লায়েন্টের সাথে) কয়েক সারি মুছে ফেলার জন্য যখন অনুরোধগুলি আমার স্ক্রিপ্ট থেকে সেকেন্ডের 1/100 তম থেকে সরিয়ে দেওয়া হয়েছিল। আমি ভাবছি যদি পাইস্কুএল স্বয়ংক্রিয়ভাবে কোনও ত্রুটির পরে কোনও লেখার চেষ্টা করে।
বিবি

10

কেবল অনুসরণ করতে চেয়েছিলেন এবং বাস্তবায়নটি সফল হয়েছে তা সবাইকে জানিয়ে দিন। এসকিউএলাইটের সাথে কাজ করা একটি সত্যিকারের আনন্দ ছিল এবং কেবলমাত্র একটি প্রক্রিয়া এটি লিখেছিল এমন সময়ে আমাদের কখনই লক-আপ নিয়ে সমস্যা হয় নি ... এমনকি একটি গৌণ প্রক্রিয়া থেকে খুব দ্রুত একযোগে পড়েও।

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