বড় ডেটাসেটগুলি পরিচালনা করার জন্য এসকিউএল সার্ভার ২০০৮ আর 2 এর জন্য শ্যাটারিং সেটআপ করার ধরণগুলি?


14

আমি এসকিউএল সার্ভার ২০০৮ আর 2-তে একটি বড় ডেটাসেট (> 1 বিলিয়ন সারি) পরিচালনা করতে চাই। আমি শুনেছি আপনি যদি "শারডিং" বা "অনুভূমিক পার্টিশন" সেট আপ করেন তবে এটি একাধিক ফাইলের মধ্যে টেবিলগুলি ভেঙে দেয়ায় এটি বড় ডেটাসেটগুলি পরিচালনা করা আরও দ্রুত করে তোলে।

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

উত্তর:


23

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

ভাগ করা অনুভূমিক বিভাজন থেকে আলাদা কিছু এবং একটি 'ভাগ করা কিছুই নয়' আর্কিটেকচার বোঝায় যা এসকিউএল সার্ভার 1 এর বেশিরভাগ সংস্করণ দ্বারা সমর্থিত নয়

এসকিউএল সার্ভার অনুভূমিক বিভাজনকে সমর্থন করতে পারে এবং একটি ভাগ করা ডিস্ক আর্কিটেকচার bill 1 বিলন সারিগুলির জন্য পর্যাপ্ত হবে।

এসকিউএল সার্ভারে, আপনি একটি পার্টিশন ফাংশন তৈরি করেন কোনও টেবিলের কলামে মান বা মানের রেঞ্জের উপর ভিত্তি করে একটি পার্টিশন নির্বাচন করেন, যেমন

create partition function F_AccPrdPart (int)
    as range left for values (
    180001                         -- Dummy value
   ,199012 ,199112 ,199212 ,199312, 199412 ,199512
   ,199612 ,199712 ,199812 ,199912 ,200012 ,200112
   ,200212 ,200312 ,200412 ,200512 ,200612 ,200712
   ,200812
   ,200901, 200902, 200903, 200904, 200905, 200906
   ,200907, 200908, 200909, 200910, 200911, 200912
   ,201001, 201002, 201003, 201004, 201005, 201006
   ,201007, 201008, 201009, 201010, 201011, 201012
   ,201101, 201102, 201103, 201104, 201105, 201106
   ,201107, 201108, 201109, 201110, 201111, 201112
   ,202012
   ,939999                         -- Dummy value
)
go

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

পার্টিশন ফাংশনের মানের উপর ভিত্তি করে ফাইলগ্রুপগুলিতে টেবিল পার্টিশন বরাদ্দ করতে এক বা একাধিক পার্টিশন স্কিম তৈরি করা যেতে পারে, যেমন

create partition S_AccPrdPart as partition F_AccPrdPart
    TO ([PRIMARY]
      ,[PartVol1], [PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6] 
      ,[PartVol1], [PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6]
      ,[PartVol1], [PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6]
      ,[PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2], [PartVol3], [PartVol4], [PartVol5], [PartVol6], [PartVol1]
      ,[PartVol2]
      ,[PRIMARY]
      ,[PRIMARY])
go

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

পার্টিশন স্কিমে আপনি একটি টেবিল তৈরি করতে পারেন যেমন এটি কোনও ফাইলগ্রুপ, যেমন

Create table FooTrans (
       FooTransID        int identity (1,1) not null
      ,AccPeriod         int not null
      ,[...]
) on S_AccPrdPart (AccPeriod)
go

নোট করুন যে সারণি একটি নির্দিষ্ট ফাইল গ্রুপের পরিবর্তে পার্টিশন স্কিমে তৈরি করা হয়েছে, এবং ধারাটি পার্টিশন কী হিসাবে ব্যবহৃত কলামটি নির্দিষ্ট করে। পার্টিশন কী এর উপর ভিত্তি করে, টেবিলের সারিগুলি পার্টিশন স্কিমের একটি ফাইলগ্রুপে বরাদ্দ করা হবে।

দ্রষ্টব্য: পার্টিশন স্কিম ডিজাইনের জন্য একটি নিয়মের নিয়মটি হ'ল প্রতিটি পার্টিশনের কম লক্ষের দশকের মধ্যে একটি সারি গণনা হওয়া উচিত, সারিগুলির প্রস্থের উপর নির্ভর করে 10 এবং 50 মিলিয়নের মধ্যে বলুন। পার্টিশনটি যে ডিস্ক ভলিউমটিতে বসে থাকে তা কমপক্ষে কয়েক সেকেন্ডের মধ্যে কমপক্ষে একটি একক পার্টিশনের স্ক্যান করার জন্য দ্রুত হওয়া উচিত।

পার্টিশন, ভাগ করে নেওয়া এবং ভাগ করা কিছুই নেই

কিছুটা পরিভাষা এখানে এই বিষয়টির উপর আলোচনার কিছুটা ছিন্ন করার জন্য মনে হচ্ছে।

  • একটি 'শেয়ার্ড কিছুই নেই' সিস্টেমটি একটি সমান্তরাল সিস্টেম যেখানে নোডগুলি ভাগ করে না SAN সঞ্চয়স্থান, তবে নোডে স্থানীয় সঞ্চয়স্থান ব্যবহার করে। এই ধরণের স্থাপত্যের সর্বোত্তম উদাহরণ হলেন তেরদাটা rad ভাগ করা কোনও সিস্টেম খুব বড় ডেটা সেটগুলিতে ভাল স্কেল করে না কারণ তাদের কোনও কেন্দ্রীয় আই / ও বাধা নেই। সিস্টেমে নোডের সংখ্যা সহ I / O থ্রুটপুট স্কেল।

  • একটি 'শেয়ার্ড ডিস্ক' সিস্টেমটি এমন এক যেখানে এক বা একাধিক ডাটাবেস সার্ভারগুলি একক ডিস্ক স্টোরেজ সাবসিস্টেম ভাগ করে। ডাটাবেস হ'ল স্থানীয় স্টোরেজ বা একটি SAN এর সাথে সংযুক্ত, বা একটি ভাগ করা SAN এর সাথে সংযুক্ত সার্ভারের একটি ক্লাস্টার সহ একক সার্ভার হতে পারে। এই ধরণের সিস্টেমগুলি স্টোরেজ সাবসিস্টেম থেকে প্রাপ্ত থ্রুপুট দ্বারা সীমাবদ্ধ।

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

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

1 বিলিয়ন সারি জন্য

1 বিলিয়ন সারিগুলির জন্য (স্বতন্ত্র সারিগুলি অত্যন্ত প্রশস্ত না হলে) ওভারকিলের ক্ষেত্রগুলিতে একটি ভাগ করা কিছুই বা শার্পড আর্কিটেকচার আরামদায়ক নয়। যদি পর্যাপ্ত ফাস্ট ডিস্ক সাবসিস্টেম থাকে তবে এই ধরণের ভলিউম যুক্তিসঙ্গত বৈশিষ্ট্যের একক সার্ভারে পরিচালনা করা যেতে পারে।

পারফরম্যান্সের জন্য দামের দিক থেকে স্থানীয় প্রত্যক্ষ সংযুক্ত ডিস্কটি এখন পর্যন্ত সবচেয়ে ব্যয়বহুল। একটি একক SAS RAID নিয়ামক বেশ কয়েকটি অ্যারে নিতে পারে এবং একাধিক কন্ট্রোলার একটি সার্ভারে ইনস্টল করা যেতে পারে। কনফিগারেশনের উপর নির্ভর করে, একটি আধুনিক 24-25 স্লট এসএএস অ্যারে হাজার হাজার আইওপিএস বা 1 জিবি + / সেকেন্ডের মাধ্যমে স্ট্রিমিং পারফরম্যান্সে রাখতে পারে; একাধিক পিসিআই-ই বাস এবং একাধিক কন্ট্রোলার সহ একটি সার্ভার তাত্ত্বিকভাবে আরও কিছু পরিচালনা করতে পারে।

1 বিলিয়ন সারি ডাটাবেসের সাথে কাজ করার জন্য প্রয়োজনীয় পারফরম্যান্সের প্রকারটি পণ্য সার্ভার হার্ডওয়্যার এবং এই ধরণের সরাসরি সংযুক্ত স্টোরেজ দিয়ে বেশ সহজে এবং সস্তায় অর্জন করা যেতে পারে। একটি সানও ব্যবহার করা যেতে পারে তবে সমমানের পারফরম্যান্স পেতে আপনার একাধিক সান নিয়ন্ত্রকের প্রয়োজন হতে পারে এবং হার্ডওয়্যারটি সম্ভবত আরও ব্যয়বহুল ক্রম হতে পারে।

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

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

1 মাইক্রোসফ্ট এসকিউএল সার্ভারের একটি সমান্তরাল সংস্করণ তৈরি করে তবে এটি কেবলমাত্র হার্ডওয়ারের সাথে বান্ডিলযুক্ত ওএম চ্যানেলের মাধ্যমে উপলব্ধ। তাক থেকে উপলব্ধ সংস্করণগুলি এই ক্ষমতাটিকে সমর্থন করে না cap


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