সলিড স্টেট ড্রাইভের আগমনের সাথে কি বি-ট্রি এবং অন্যান্য ডেটা স্ট্রাকচারগুলি অচল হয়ে যাবে?


15

অনেকগুলি (সম্ভবত সবচেয়ে?) ডাটাবেস অ্যাপ্লিকেশনগুলি আজ ডেটা সংরক্ষণের জন্য বি-ট্রি এবং প্রকরণগুলি ব্যবহার করে, কারণ এই ডেটা স্ট্রাকচারটি হার্ড ডিস্কে অপারেশনগুলি পড়া, লিখতে এবং সন্ধান করার জন্য অনুকূল করে (এবং এই ক্রিয়াকলাপগুলি সামগ্রিক দক্ষতায় গুরুত্বপূর্ণ ভূমিকা পালন করে ডাটাবেস)।

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


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

একটি ডাটাবেস দৃষ্টিকোণ থেকে।
ড্যানিয়েল স্কোকো

উত্তর:


21

বি-ট্রিগুলি প্রায়শই হার্ড ডিস্কে ডাটাবেস সূচকগুলির জন্য ব্যবহৃত হয়, তবে ক্যাশের একাধিক স্তর সহ ভার্চুয়াল মেমরির সাথে আধুনিক মেমরির উত্তরাধিকারসূত্রে দেওয়া মেমরির ইন-মেমরি ডেটা স্ট্রাকচার হিসাবেও তাদের সুবিধা রয়েছে। এমনকি ভার্চুয়াল মেমরিটি এসএসডি থাকলেও, এটি পরিবর্তন হবে না।

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

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

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

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

ক্যাশ-বিস্মৃত ডেটা কাঠামোতে ভ্যান এমডে বোয়াস লেআউটটি অত্যন্ত গুরুত্বপূর্ণ।

এমআইটি ওপেনকোর্সওয়্যার অ্যালগরিদম কোর্সে ক্যাশে বিস্মৃত তথ্য স্ট্রাকচারের কিছু কভারেজ অন্তর্ভুক্ত রয়েছে।


1
মজাদার. আপনি এই বিষয়টিকে আরও ঘুরে দেখার জন্য কিছু ভাল পয়েন্টার দিয়েছেন (কোনও পাং উদ্দেশ্যে নয়!)। ধন্যবাদ।
ড্যানিয়েল স্কোকো

এই এমআইটি কোর্সে ক্যাশে বিস্মৃত ডেটা স্ট্রাকচারের তথ্যও রয়েছে।
ড্যান_ওয়াটারওয়ার্থ

হাই, আপনার কি এই অর্থ ছিল যে বি-ট্রি অচল হয়ে যাবে, ক্যাশে-বিস্মৃত ডেটা স্ট্রাকচারের কারণে, এসএসডি এর কারণে নয়? তবে কীভাবে অন্যান্য ডেটা স্ট্রাকচারগুলি, যেমন কোনও ডিবিএমএসের ব্লক পরিচালনার বিষয়ে?
ইয়াং বো

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

3

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

  1. ডিস্কের (10 ডলার) ডান দিকে মাথাটি সরিয়ে দিন।
  2. ডিস্কটি ঘোরার জন্য অপেক্ষা করুন (10 কে আরপিএম এ, যার অর্থ প্রতি সেকেন্ডে 167 ঘূর্ণন, তবে গড়ে আমরা কেবল অর্ধ ঘূর্ণনের জন্য অপেক্ষা করি, তাই ms 3 মিমি)।
  3. ব্লকটি পড়ুন (3 মিলিয়ন ডলার)।
  4. র‌্যামে পরিবর্তন করুন। (~ 10ns)
  5. মাথাটি আবার ডিস্কে ডান অবস্থানে নিয়ে যান (আবার 10 ডলার)।
  6. আবার ডিস্কটি ঘোরার জন্য অপেক্ষা করুন (আবার 3 মিলিয়ন ডলার)।
  7. ব্লকটি লিখুন (3 মিলিয়ন ডলার)।

এটি 10 ​​+ 3 + 3 + 10 + 3 + 3 = 34 এমএস

গড়ে, এসএসডি তে একই কাজ করা কেবলমাত্র 1 মিমি, ডিস্কের অবস্থান নির্বিশেষে।

এবং যেহেতু একটি হ্যাশটেবল আরও দ্রুত, আমরা ভাবতে পারি যে হ্যাশটেবলটি আরও ভাল প্রতিস্থাপন হবে।

একমাত্র সমস্যা হ্যাশ টেবিলগুলি সংরক্ষণের আদেশ নয় এবং তাই ভ্যান এমডে বোসের মতো পরবর্তী এবং পূর্ববর্তী সন্ধান করা সম্ভব নয়।

দেখা:

  1. http://en.wikipedia.org/wiki/Van_Emde_Boas_tree
  2. http://bryanpendleton.blogspot.com/2009/06/cache-oblivious-data-structures.html

কেন পরবর্তী এবং পূর্ববর্তী গুরুত্বপূর্ণ গুরুত্বপূর্ণ? সমস্ত উপাদান x এর চেয়ে বড় এবং z এর চেয়ে ছোট হওয়ার কল্পনা করুন, আপনাকে পূর্ববর্তী সন্ধানের সাথে সূচীগুলি ব্যবহার করতে হবে এবং এরপরের সন্ধান করতে হবে।

ওয়েল, একমাত্র সমস্যা হ'ল আমরা অর্ডার সক্ষমতা সংরক্ষণের সাথে হ্যাশ টেবিলগুলি পাইনি। সম্ভবত বি-গাছের বালতির আকার গুরুত্বপূর্ণ হবে তবে এটি ক্যাশে বিস্মৃত অ্যালগরিদমের সাথে সমাধান হয়ে যায়।

সুতরাং আমি বলব এটি একটি উন্মুক্ত সমস্যা।


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

1
অবশ্যই হ্যাশ এর মাঝে মাঝে বলা হয় "কী রূপান্তর" এবং রুপান্তর না আছে "এলোমেলো" হতে - হয়তো এটা একটি হ্যাশ ফাংশন যে যুক্তিসঙ্গতভাবে দক্ষ অনুক্রমিক অ্যাক্সেস (অনুসন্ধানের দূর না জন্য করতে পারবেন সংজ্ঞায়িত করতে সম্ভব - তথ্য হারিয়ে গেছে হ্যাশ ফাংশন, সর্বোপরি - তবে এটি হ্রাস করা) এবং হ্যাশের সংঘর্ষগুলি বিরল রাখার সময় কিছু লোকাল সুবিধা দেয়।
স্টিভ 314
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.