প্রকল্প সম্পর্কে
LevelDB হল Google-এ Sanjay Ghemawat এবং Jeff Dean দ্বারা তৈরি একটি এমবেডেড কী-ভ্যালু স্টোরেজ লাইব্রেরি। এটি স্ট্রিং কী থেকে স্ট্রিং ভ্যালুতে একটি সাজানো ম্যাপিং প্রদান করে এবং এটি আলাদা সার্ভিস হিসেবে চালানোর পরিবর্তে সরাসরি অ্যাপ্লিকেশনের সাথে লিংক করার উদ্দেশ্যে তৈরি।
README-তে বর্ণিত মূল ক্ষমতাসমূহ:
- কী এবং ভ্যালু হল ইচ্ছামত বাইট অ্যারে, এবং ডেটা কী অনুসারে সাজানো অবস্থায় সংরক্ষিত হয়।
- কলাররা ডিফল্ট সাজানোর ক্রম ওভাররাইড করতে একটি কাস্টম তুলনা ফাংশন সরবরাহ করতে পারে।
- মূল অপারেশনগুলি হল Put(key,value), Get(key) এবং Delete(key)।
- একাধিক পরিবর্তন একটি পারমাণবিক ব্যাচে প্রয়োগ করা যেতে পারে।
- ব্যবহারকারীরা ডেটার একটি সামঞ্জস্যপূর্ণ ভিউ পেতে একটি অস্থায়ী স্ন্যাপশট তৈরি করতে পারেন।
- ডেটার উপর সামনে এবং পিছনে ইটারেশন সমর্থিত।
- ডেটা স্বয়ংক্রিয়ভাবে Snappy দিয়ে কম্প্রেস করা হয়, সাথে Zstd-ও সমর্থিত।
- ফাইল সিস্টেম অপারেশনের মতো বাহ্যিক কার্যকলাপ একটি ভার্চুয়াল ইন্টারফেসের মাধ্যমে প্রেরণ করা হয়, যাতে OS ইন্টারঅ্যাকশন কাস্টমাইজ করা যায়।
প্রকল্পের দ্বারা উল্লেখিত গুরুত্বপূর্ণ সীমাবদ্ধতা: এটি একটি SQL ডেটাবেস নয়, কোনো রিলেশনাল মডেল, SQL কোয়েরি বা ইনডেক্স সমর্থন নেই; একবারে শুধুমাত্র একটি একক প্রসেস (সম্ভবত মাল্টি-থ্রেডেড) একটি ডেটাবেস অ্যাক্সেস করতে পারে; এবং কোনো বিল্ট-ইন ক্লায়েন্ট-সার্ভার সমর্থন নেই, তাই যাদের প্রয়োজন তাদের লাইব্রেরির চারপাশে নিজস্ব সার্ভার তৈরি করতে হবে।
রিপোজিটরিটি খুব সীমিত রক্ষণাবেক্ষণের অধীনে। রক্ষণাবেক্ষণকারীরা বলেন যে তারা শুধুমাত্র গুরুতর বাগ যেমন ডেটা ক্ষতি বা মেমরি করাপশন, এবং অভ্যন্তরীণভাবে সমর্থিত LevelDB ক্লায়েন্টদের জন্য একান্ত প্রয়োজনীয় পরিবর্তনগুলি পর্যালোচনা করবেন, সাধারণত ভাষা, স্ট্যান্ডার্ড লাইব্রেরি বা OS আপডেটের কারণে সৃষ্ট সমস্যা ঠিক করতে। অবদানগুলি পরীক্ষিত প্ল্যাটফর্ম (Linux এবং macOS-এর জন্য POSIX, বা Windows) লক্ষ্য করার, একটি স্থিতিশীল API বজায় রাখার, টেস্ট অন্তর্ভুক্ত করার এবং Google C++ স্টাইল গাইড অনুসরণ করার প্রত্যাশা করা হয়; বিল্ড কনফিগারেশন পরিবর্তন গ্রহণযোগ্য হওয়ার সম্ভাবনা কম। Pull request-গুলির জন্য Google কনট্রিবিউটর লাইসেন্স চুক্তিতে স্বাক্ষর এবং main-এ squashing/rebase প্রয়োজন।
বিল্ডিং ডিফল্টভাবে CMake ব্যবহার করে। POSIX-এ, একটি সাধারণ দ্রুত শুরু হল বিল্ড ডিরেক্টরি তৈরি করা, cmake একটি Release বিল্ড টাইপ দিয়ে চালানো, এবং তারপর বিল্ড করা। Windows-এ, CMake Visual Studio 2017 প্রজেক্ট/সলিউশন ফাইল তৈরি করতে পারে, 64-বিট টার্গেটের জন্য একটি অপশনসহ, এবং সলিউশনটি কমান্ড লাইন বা Visual Studio-র ভিতর থেকে বিল্ড করা যেতে পারে।
README-তে অন্তর্ভুক্ত db_bench প্রোগ্রাম থেকে একটি পারফরম্যান্স রিপোর্ট রয়েছে যা 16-বাইট কী এবং 100-বাইট ভ্যালুসহ এক মিলিয়ন এন্ট্রির একটি ডেটাবেস ব্যবহার করে। এটি রাইট বেঞ্চমার্ক (fillseq, fillsync, fillrandom, overwrite) এবং রিড বেঞ্চমার্ক (readrandom, readseq, readreverse) রিপোর্ট করে, উল্লেখ করে যে ফলাফলগুলি noisy এবং ব্যাকগ্রাউন্ড কমপ্যাকশন রিড পারফরম্যান্স উন্নত করে। পাবলিক ইন্টারফেস include/leveldb/*.h-এ অবস্থিত, যেখানে db.h প্রধান এন্ট্রি পয়েন্ট, options.h ডেটাবেস এবং প্রতি-অপারেশন আচরণের জন্য, comparator.h কাস্টম অর্ডারিংয়ের জন্য, iterator.h ইটারেশনের জন্য, write_batch.h পারমাণবিক আপডেটের জন্য, slice.h এবং status.h সহায়ক হিসাবে, env.h OS অ্যাবস্ট্রাকশনের জন্য, এবং table.h/table_builder.h নিম্ন-স্তরের মডিউল যা বেশিরভাগ ক্লায়েন্ট সরাসরি ব্যবহার করবে না। ডকুমেন্টেশন সোর্স ট্রির doc/-এর অধীনে বান্ডেল করা আছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.