যদি আপনার ডাটাবেস যথেষ্ট ছোট হয় তবে আপনি ফাইল সিস্টেমটি ব্যবহার করতে পারেন। এই পদ্ধতির সুবিধা হ'ল এটি খুব স্বল্প-প্রযুক্তি, এবং খুব অল্প কোড সহ সর্বত্র কাজ করবে। যদি কীগুলি মুদ্রণযোগ্য অক্ষরগুলির সমন্বয়ে গঠিত থাকে এবং এতে না থাকে /
তবে আপনি সেগুলি ফাইলের নাম হিসাবে ব্যবহার করতে পারেন:
put () { key=$1; value=$2; printf %s "$value" >"datastore.db/$key"; }
get () { key=$1; cat "datastore.db/$key"; }
remove () { key=$1; rm "datastore.db/$key"; }
স্বেচ্ছাসেবক কীগুলিকে সমন্বিত করতে, ফাইলের নাম হিসাবে কীটির একটি চেকসাম ব্যবহার করুন এবং allyচ্ছিকভাবে কীটির একটি অনুলিপি সংরক্ষণ করুন (যদি না আপনি কীগুলি তালিকাবদ্ধ করতে না পেরে খুশি হন বা প্রদত্ত এন্ট্রিটির জন্য কীটি কী তা জানান)।
put () {
key=$1; value=$2; set $(printf %s "$key" | sha1sum); sum=$1
printf %s "$key" >"datastore.db/$sum.key"
printf %s "$value" >"datastore.db/$sum.value"
}
get () {
key=$1; set $(printf %s "$key" | sha1sum); sum=$1
cat "datastore.db/$1.value"
}
remove () {
key=$1; set $(printf %s "$key" | sha1sum); sum=$1
rm "datastore.db/$1.key" "datastore.db/$1.value"
}
নোট করুন যে উপরের খেলনা বাস্তবায়নগুলি পুরো গল্প নয়: পারমাণবিকতার মতো কোনও কার্যকর লেনদেনের সম্পত্তি তাদের নেই । ফাইল তৈরি এবং নামকরণের মতো প্রাথমিক ফাইল সিস্টেম অপারেশনগুলি তবে পারমাণবিক, এবং উপরের ফাংশনগুলির পারমাণবিক সংস্করণ তৈরি করা সম্ভব।
এই ডাইরেক্ট-টু-ফাইল-সিস্টেম প্রয়োগগুলি কেবলমাত্র কয়েক হাজার ফাইল পর্যন্ত ছোট ছোট ডাটাবেসের জন্য আদর্শ ফাইল সিস্টেমগুলির সাথে উপযুক্ত। এই বিন্দু ছাড়াই, বেশিরভাগ ফাইল সিস্টেমে বড় ডিরেক্টরিগুলির সাথে মোকাবিলা করতে বেশ সময় লাগে। স্তরযুক্ত বিন্যাস ব্যবহার করে আপনি স্কিমটিকে বৃহত ডাটাবেসে রূপান্তর করতে পারেন। উদাহরণস্বরূপ, সমস্ত ফাইলকে একটি ডিরেক্টরিতে সংরক্ষণ করার পরিবর্তে তাদের নামের প্রথম কয়েকটি অক্ষরের উপর ভিত্তি করে এটিকে পৃথক সাব ডিরেক্টরিতে সংরক্ষণ করুন। গিটটি এটিই করে, উদাহরণস্বরূপ: এসএএএএ -1 হ্যাশ দ্বারা সূচিযুক্ত এর বস্তুগুলি বলা ফাইলগুলিতে সঞ্চিত থাকে .git/objects/01/2345679abcdef0123456789abcdef01234567
। সিন্টেমিক লেয়ারিং ব্যবহার করে এমন প্রোগ্রামগুলির অন্যান্য উদাহরণগুলি হ'ল ওয়েব ক্যাশিং প্রক্সি ডাব্লুউওফল এবং পলিপো ; উভয়ই বলা একটি ফাইলের URL এ পাওয়া কোনও পৃষ্ঠার ক্যাশেড অনুলিপি সঞ্চয় করেwww.example.com/HASH
যেখানে HASH হ'ল URL এর কিছু হ্যাশের এনকোডিং ¹
অদক্ষতার আরেকটি উত্স হ'ল বেশিরভাগ ফাইল সিস্টেম ছোট ফাইল সংরক্ষণের সময় প্রচুর জায়গা নষ্ট করে - সাধারণত ফাইল সিস্টেমে ফাইল প্রতি 2 কেবি পর্যন্ত অপচয় হয়, ফাইলের আকারের স্বতন্ত্রভাবে।
আপনি যদি সত্যিকারের ডাটাবেসের সাথে যেতে চান, তবে আপনার স্বচ্ছ ফাইল সিস্টেম অ্যাক্সেসের সুবিধার্থে পূর্ববর্তী হওয়ার দরকার নেই। বার্কলে ডিবি (সহ) সহ ডাটাবেসগুলিতে অ্যাক্সেসের জন্য বেশ কয়েকটি FUSE ফাইল সিস্টেম রয়েছে জেফ গারজিকের ডিবিএফএস ), ওরাকল ( ওরাকল ডিবিএফএস সহ ), মাইএসকিউএল ( মাইএসকিএলএফ সহ ) ইত্যাদি etc.
An
ইউআরএল এর মতো http://unix.stackexchange.com/questions/21943/standard-key-value-datastore-for-unix
, পলিপো ফাইলটির unix.stackexchange.com/M0pPbpRufiErf4DLFcWlhw==
অভ্যন্তরে একটি অতিরিক্ত শিরোনাম সহ ফাইলটি ব্যবহার করে যা স্পষ্ট লেখায় প্রকৃত URL টি নির্দেশ করে; ফাইলটির নাম হ'ল ইউআরএল এর এমডি 5 হ্যাশ (বাইনারি) এর বেস 64 এনকোডিং। ডাব্লুউফল ফাইলটি ব্যবহার করে http/unix.stackexchange.com/DM0pPbpRufiErf4DLFcWlhw
; ফাইলটির নাম হ'ল এমডি 5 হ্যাশের একটি বাড়ির বর্ধিত এনকোডিং এবং সহকারী ফাইলhttp/unix.stackexchange.com/UM0pPbpRufiErf4DLFcWlhw
URL থাকে contains