সংক্ষেপে, আমি আপনার সিটিওর সাথে একমত হব। আপনি স্কেলাবিলিটি ব্যয়ে সম্ভবত কিছু কর্মক্ষমতা অর্জন করেছেন (যদি এই শর্তগুলি বিভ্রান্তিকর হয় তবে আমি নীচে পরিষ্কার করব)। আমার দুটি সবচেয়ে বড় উদ্বেগ হ'ল আনুভূমিকভাবে স্কেল করার জন্য রক্ষণাবেক্ষণযোগ্যতা এবং বিকল্পগুলির অভাব (ধরে নিবেন যে আপনার এটির প্রয়োজন হবে)।
ডেটাতে সান্নিধ্য: আসুন একটি পদক্ষেপ পিছনে নেওয়া যাক। কোডটিকে কোনও ডিবিতে ঠেলে দেওয়ার কয়েকটি ভাল কারণ রয়েছে। আমি যুক্তি দিয়ে বলব যে সবচেয়ে বড়টি হ'ল ডেটাটির সান্নিধ্য - উদাহরণস্বরূপ, আপনি যদি গণনাটি কয়েক মুঠো মান ফিরিয়ে দেওয়ার প্রত্যাশা করছেন তবে এই মিলিয়ন মিলিয়ন রেকর্ডের সমষ্টি, মিলিয়ন মিলিয়ন রেকর্ড প্রেরণ (অন-চাহিদা) অন্য কোথাও একত্রিত হওয়ার নেটওয়ার্কটি অত্যন্ত ব্যর্থ, এবং সহজেই আপনার সিস্টেমকে হত্যা করতে পারে। এটি বলার পরে, আপনি অন্যান্য উপায়ে ডেটাগুলির এই সান্নিধ্য অর্জন করতে পারেন, মূলত ক্যাশে বা বিশ্লেষণ ডিবি ব্যবহার করে যেখানে কিছু সংহতকরণ সামনে করা হয়।
ডিবিতে কোডের সম্পাদনা:"কার্যনির্বাহী পরিকল্পনার ক্যাশে" এর মতো গৌণ পারফরম্যান্সের প্রভাবগুলি যুক্তিযুক্ত হওয়া আরও বেশি কঠিন difficult কখনও কখনও, ক্যাশেড এক্সিকিউশন প্ল্যানগুলি একটি খুব নেতিবাচক জিনিস হতে পারে, যদি ভুল এক্সিকিউশন প্ল্যান ক্যাশে হয়। আপনার আরডিবিএমএসের উপর নির্ভর করে আপনি এগুলির মধ্যে সবচেয়ে বেশি কিছু পেতে পারেন তবে বেশিরভাগ ক্ষেত্রে প্যারামেট্রিসড এসকিউএল এর চেয়ে বেশি কিছু পাবেন না (সেই পরিকল্পনাগুলি সাধারণত ক্যাশেও হয়ে যায়)। আমি আরও যুক্তি দিয়ে বলব যে বেশিরভাগ সংকলিত বা জেআইটি'র ভাষা সাধারণত তাদের এসকিউএল সমতুল্য (যেমন টি-এসকিউএল বা পিএল / এসকিউএল) বুনিয়াদি ক্রিয়াকলাপ এবং অ-সম্পর্কযুক্ত প্রোগ্রামিংয়ের (স্ট্রিং ম্যানিপুলেশন, লুপস ইত্যাদির) চেয়ে ভাল সম্পাদন করে, তাই আপনি নম্বর ক্রাঞ্চিংয়ের জন্য আপনি যদি জাভা বা সি # এর মতো কিছু ব্যবহার করেন তবে সেখানে কিছুই হারাবেন না। সূক্ষ্ম দানাযুক্ত অপ্টিমাইজেশনটিও বেশ কঠিন - ডিবিতে, আপনি ' আপনার একমাত্র ডেটা স্ট্রাকচার হিসাবে প্রায়শই জেনেরিক বি-ট্রি (সূচক) দিয়ে আটকে থাকেন। সুস্পষ্টভাবে বলতে গেলে, দীর্ঘমেয়াদি লেনদেন হওয়া, লক বাড়ানো ইত্যাদির মতো সামগ্রীর একটি সম্পূর্ণ বিশ্লেষণ বই ভরাতে পারে।
রক্ষণাবেক্ষণযোগ্যতা: এসকিউএল হ'ল এটি করার জন্য ডিজাইন করা একটি দুর্দান্ত ভাষা। আমি নিশ্চিত নই যে এটি প্রয়োগের যুক্তির জন্য দুর্দান্ত। আমাদের জীবনকে বহনযোগ্য করে তোলা (টিডিডি, রিফ্যাক্টরিং, ইত্যাদি) তৈরি করার বেশিরভাগ সরঞ্জামাদি এবং অনুশীলনগুলি ডাটাবেস প্রোগ্রামিংয়ে প্রয়োগ করা কঠিন।
পারফরম্যান্স বনাম স্কেলাবিলিটি:এই শর্তাদি স্পষ্ট করার জন্য, আমি এর অর্থ: পারফরম্যান্স হ'ল কম লোড ধরে নিয়ে মুহুর্তে আপনি আপনার সিস্টেমে (এবং ব্যবহারকারীর কাছে ফিরে) একক অনুরোধের আশা করতে চেয়েছিলেন quick এটি প্রায়শই শারীরিক স্তরগুলির মধ্য দিয়ে যায় এমন স্তরগুলির দ্বারা সীমাবদ্ধ থাকবে those স্তরগুলি কতটা অনুকূলিত হয়েছে ইত্যাদি Sc আপনার মাঝারি / নিম্ন পারফরম্যান্স থাকতে পারে (বলুন, একটি অনুরোধের জন্য 5 সেকেন্ড +), তবে দুর্দান্ত স্কেলাবিলিটি (কয়েক মিলিয়ন ব্যবহারকারীকে সমর্থন করতে সক্ষম)। আপনার ক্ষেত্রে, আপনি সম্ভবত ভাল পারফরম্যান্সের অভিজ্ঞতা অর্জন করতে পারেন, তবে আপনার স্কেলাবিলিটিটি শারীরিকভাবে আপনি কত বড় সার্ভার তৈরি করতে পারবেন তার দ্বারা সীমাবদ্ধ থাকবে। এক পর্যায়ে, আপনি সেই সীমাটি হিট করবেন এবং শারডিংয়ের মতো জিনিসগুলির দিকে ফিরে যেতে বাধ্য হবেন যা অ্যাপ্লিকেশনটির প্রকৃতির উপর নির্ভর করে সম্ভব হবে না।
অকালে অপ্টিমাইজেশন: শেষ পর্যন্ত, আমি মনে করি আপনি অকালে অপ্টিমাইজ করার ভুল করেছেন। অন্যরা যেমন উল্লেখ করেছে, আপনার কাছে অন্যান্য মীমাংসাগুলি কীভাবে কাজ করবে তা দেখানোর মতো পরিমাপের সত্যিই নেই। ঠিক আছে, আমরা কোনও তত্ত্বকে প্রমাণ বা অস্বীকার করার জন্য সর্বদা পূর্ণ-স্কেল প্রোটোটাইপগুলি তৈরি করতে পারি না ... তবে সাধারণভাবে, আমি সর্বদা পারফরম্যান্সের জন্য রক্ষণাবেক্ষণের (সম্ভবত কোনও অ্যাপ্লিকেশনটির সবচেয়ে গুরুত্বপূর্ণ গুণ) ব্যবসায়ের জন্য একটি পদ্ধতিকে বেছে নিতে দ্বিধা বোধ করব ।
সম্পাদনা: একটি ইতিবাচক নোটে, উল্লম্ব স্কেলিং বেশ কয়েকটি ক্ষেত্রে প্রসারিত হতে পারে। যতদূর আমি জানি, এসও বেশ কিছু সময়ের জন্য একটি একক সার্ভারে ছুটেছিল। আমি নিশ্চিত না যে এটি আপনার 10,000 ব্যবহারকারীর সাথে কীভাবে মেলে (আমার ধারণা এটি আপনার সিস্টেমে কী করছে তার প্রকৃতির উপর নির্ভর করবে) তবে এটি আপনাকে কী করা যায় তার একটি ধারণা দেয় (আসলে, অনেকদূর আছে) আরও চিত্তাকর্ষক উদাহরণ, এটি কেবল এমন জনপ্রিয় হিসাবে ঘটে যা সহজেই লোকেরা বুঝতে পারে।
সম্পাদনা 2: অন্যত্র উত্থাপিত কয়েকটি বিষয় সম্পর্কে স্পষ্ট করে মন্তব্য করতে:
- পুনরায়: পারমাণবিক ধারাবাহিকতা - এসিডি ধারাবাহিকতা সিস্টেমের প্রয়োজনীয়তাও হতে পারে। উপরেরটি সত্যই এর বিরুদ্ধে তর্ক করে না, এবং আপনার বুঝতে হবে যে এসিডি ধারাবাহিকতার জন্য আপনার সমস্ত ব্যবসায়িক যুক্তি ডিবি-র মধ্যে চালানো দরকার না। কোড যা নেই সরিয়ে প্রয়োজন ডিবি মধ্যে সেখানে হতে, আপনি এটি ডিবি বাকি ভৌত পরিবেশের চালানোর জন্য constraining করছি - আপনার ডিবি প্রকৃত ডেটা ম্যানেজমেন্ট অংশ হিসাবে একই হার্ডওয়্যার সম্পদের জন্য প্রতিদ্বন্দ্বী নেই। অন্যান্য ডিবি সার্ভারগুলিতে কেবল কোড স্কেলিংয়ের জন্য (তবে আসল তথ্য নয়) - অবশ্যই, এটি সম্ভব হতে পারে তবে বেশিরভাগ ক্ষেত্রে অতিরিক্ত লাইসেন্স ব্যতীত আপনি এখানে কী অর্জন করছেন? ডিবি থেকে দূরে থাকা জিনিসগুলি ডিবিতে রাখবেন না।
- পুনরায়: এসকিউএল / সি # পারফরম্যান্স - যেহেতু এটি আগ্রহের বিষয় বলে মনে হচ্ছে, তাই আলোচনায় কিছুটা যুক্ত করা যাক। আপনি অবশ্যই ডিবিগুলির মধ্যে নেটিভ / জাভা / সি # কোড চালাতে পারেন, তবে যতদূর আমি জানি, এটি এখানে আলোচনা করা হয়নি - আমরা টি-এসকিউএল বনাম সি # এর মতো কিছুতে সাধারণ অ্যাপ্লিকেশন কোডটি প্রয়োগের সাথে তুলনা করছি। অতীতে আপেক্ষিক কোডের সাথে সমাধান করা বেশ কয়েকটি সমস্যা ছিল - যেমন "সর্বাধিক সমবর্তী লগিনগুলি" সমস্যাটি বিবেচনা করুন, যেখানে আপনার লগইন বা লগআউট এবং আপনার সময়কে চিহ্নিত করার রেকর্ড রয়েছে এবং আপনার কী কাজ করা দরকার যে কোনও সময়ে লগ ইন করা সর্বাধিক সংখ্যক ব্যবহারকারী ছিল। সহজতম সমাধান হ'ল রেকর্ডগুলির মাধ্যমে পুনরাবৃত্তি করা এবং লগইন / লগআউটগুলির মুখোমুখি হওয়ার সাথে সাথে একটি কাউন্টার বাড়ানো / হ্রাস করা এবং এই মানটির সর্বোচ্চ সন্ধান করা।may, আমি জানি না), সেরা আপনি যা করতে পারেন তা কর্সর (খাঁটি সম্পর্কযুক্ত সমাধানগুলি সমস্ত জটিলতার বিভিন্ন আদেশে রয়েছে, এবং কিছুক্ষণ লুপ ব্যবহার করে এটি সমাধানের চেষ্টা করা খারাপ ফলাফলের ফলে)। এই ক্ষেত্রে, হ্যাঁ, সি # সমাধানটি টি-এসকিউএল, পিরিয়ডে আপনি যা অর্জন করতে পারবেন তার চেয়ে আসলে দ্রুত। এটি সুদূরপ্রসারী বলে মনে হতে পারে, তবে আপনি যদি সমস্যাগুলি তুলনামূলকভাবে পরিবর্তনের প্রতিনিধিত্ব করে সারিগুলির সাথে কাজ করে থাকেন এবং সেগুলির জন্য উইন্ডোড সমষ্টিগুলি গণনা করার প্রয়োজন হয় তবে এই সমস্যাটি সহজেই আর্থিক ব্যবস্থায় নিজেকে প্রকাশ করতে পারে। সঞ্চিত প্রকল্পের অনুরোধগুলি আরও ব্যয়বহুল হতে থাকে - একটি তুচ্ছ স্পিকে এক মিলিয়ন বার আবেদন করে দেখুন কীভাবে এটি সি # ফাংশন কল করার সাথে তুলনা করে। আমি উপরোক্ত কয়েকটি অন্যান্য উদাহরণে ইঙ্গিত দিয়েছিলাম - টি-এসকিউএল-তে সঠিক হ্যাশ টেবিল প্রয়োগ করার জন্য আমি এখনও কারও মুখোমুখি হইনি (এটি আসলে কিছুটা সুবিধা দেয়), যদিও সি # তে করা খুব সহজ is আবার, এমন কিছু জিনিস রয়েছে যেগুলিতে ডিবিগুলি দুর্দান্ত হয় এবং এগুলিতে এগুলি এত ভয়াবহ নয়। আমি সি # তে যোগ, এসইউএমস এবং গ্রোপ বিওয়াইস করতে চাই না, আমি টি-এসকিউএল বিশেষত সিপিইউ নিবিড় কিছু লিখতে চাই না।