English ∙ 日本語 ∙ 简体中文 ∙ 繁體中文 | العَرَبِيَّة ∙ বাংলা ∙ Português do Brasil ∙ Deutsch ∙ ελληνικά ∙ עברית ∙ Italiano ∙ 한국어 ∙ فارسی ∙ Polski ∙ русский язык ∙ Español ∙ ภาษาไทย ∙ Türkçe ∙ tiếng Việt ∙ Français | Add Translation
এই গাইডটো অনুবাদ কৰক!
ছিষ্টেম ডিজাইন প্ৰাইমাৰ
প্ৰেৰণা
বৃহৎ পৰিসৰৰ ছিষ্টেম ডিজাইন কৰিবলৈ শিকক।>
ছিষ্টেম ডিজাইন সাক্ষাৎকাৰৰ বাবে প্ৰস্তুতি লওক।
বৃহৎ পৰিসৰৰ ছিষ্টেম ডিজাইন কৰিবলৈ শিকক
স্কেলেবেল ছিষ্টেম ডিজাইন কৰিবলৈ শিকিলে আপোনাক এটি ভাল ইঞ্জিনিয়াৰ হ'বলৈ সহায় কৰিব।
ছিষ্টেম ডিজাইন এটা বিস্তৃত বিষয়। ছিষ্টেম ডিজাইন নীতিসমূহৰ ওপৰত অসংখ্য উৎস ৱেবত ছৰিয়াই থকা আছে।
এই ৰেপ'টো হৈছে সংগঠিত সংকলন যি আপোনাক স্কেলত ছিষ্টেম নিৰ্মাণ কৰিবলৈ শিকাত সহায় কৰে।
মুক্ত উৎস সমুদায়ৰ পৰা শিকক
এইটো সদায় নবীকৃত হোৱা মুক্ত উৎস প্ৰকল্প।
অংশগ্ৰহণ স্বাগতম!
ছিষ্টেম ডিজাইন সাক্ষাৎকাৰৰ বাবে প্ৰস্তুতি লওক
কোডিং সাক্ষাৎকাৰৰ উপৰিও, ছিষ্টেম ডিজাইন হৈছে প্ৰযুক্তিগত সাক্ষাৎকাৰ প্ৰক্ৰিয়াৰ এটা আৱশ্যকীয় অংশ বহু টেক কোম্পানীত।
সাধাৰণ ছিষ্টেম ডিজাইন সাক্ষাৎকাৰ প্ৰশ্ন অনুশীলন কৰক আৰু আপোনাৰ উত্তৰসমূহ নমুনা সমাধানৰ সৈতে তুলনা কৰক: আলোচনা, কোড, আৰু চিত্ৰ।
সাক্ষাৎকাৰ প্ৰস্তুতিৰ বাবে অতিৰিক্ত বিষয়সমূহ:
- অধ্যয়ন গাইড
- ছিষ্টেম ডিজাইন সাক্ষাৎকাৰ প্ৰশ্ন সমাধান কৰাৰ পদ্ধতি
- চিষ্টেম ডিজাইন ইন্টাৰভিউ প্ৰশ্নসমূহ, সমাধানৰ সৈতে
- অবজেক্ট-অৰিয়েন্টেড ডিজাইন ইন্টাৰভিউ প্ৰশ্নসমূহ, সমাধানৰ সৈতে
- অতিৰিক্ত চিষ্টেম ডিজাইন ইন্টাৰভিউ প্ৰশ্নসমূহ
Anki ফ্লেশকাৰ্ডছ
দান কৰা Anki ফ্লেশকাৰ্ড ডেকসমূহ-এ spaced repetition ব্যৱহাৰ কৰি মুখ্য চিষ্টেম ডিজাইন ধাৰণাসমূহ মনত ৰাখিবলৈ সহায় কৰে।
ভ্ৰমনকালত ব্যৱহাৰৰ বাবে উৎকৃষ্ট।কোডিং ৰিসৰ্চ: ইন্টাৰেক্টিভ কোডিং চেলেঞ্জসমূহ
কোডিং ইন্টাৰভিউ-ৰ বাবে প্রস্তুতিৰ বাবে ৰিসৰ্চ বিচাৰি আছেনে?
ভগ্নি ৰেপো ইন্টাৰেক্টিভ কোডিং চেলেঞ্জসমূহ চাওক, য'ত এটা অতিৰিক্ত Anki ডেক আছে:
অৱদান আগবঢ়োৱা
সমাজৰ পৰা শিকক।
সহায় কৰিবলৈ pull request জমা দিয়াৰ বাবে স্বতন্ত্ৰ অনুভৱ কৰক:
- ভুলসমূহ ঠিক কৰক
- বিভাগসমূহ উন্নত কৰক
- নতুন অংশবোৰ যোগ কৰক
- অনুবাদ কৰক
অংগ্ৰহণৰ নিয়মাৱলী পৰ্যালোচনা কৰক।
চিষ্টেম ডিজাইন বিষয়বস্তুৰ সূচী
বিভিন্ন চিষ্টেম ডিজাইন বিষয়বস্তুৰ সংক্ষিপ্তসাৰ, লাভ আৰু ক্ষতি সহ। প্ৰত্যেকটো এটা সমঝোতা।>
প্ৰত্যেক অংশত অধিক গভীৰ উৎসৰ লিংক থাকে।
- চিষ্টেম ডিজাইন বিষয়: ইয়াত আৰম্ভ কৰক
- পদক্ষেপ ১: স্কেলেবিলিটি ভিডিঅ' লেকচার পৰ্যালোচনা কৰক
- পদক্ষেপ ২: স্কেলেবিলিটি প্ৰবন্ধ পৰ্যালোচনা কৰক
- পৰবর্তী পদক্ষেপ
- পাৰফৰ্মেন্স বনাম স্কেলেবিলিটি
- লেটেন্সি বনাম থ্ৰু-পুট
- উপলব্ধতা বনাম একৰূপতা
- CAP তত্ত্ব
- CP - একৰূপতা আৰু বিভাজন সহনশীলতা
- AP - উপলব্ধতা আৰু বিভাজন সহনশীলতা
- একৰূপতা পেটাৰ্নসমূহ
- দুৰ্বল একৰূপতা
- অৱশেষ একৰূপতা
- শক্তিশালী একৰূপতা
- উপলব্ধতা পেটাৰ্নসমূহ
- ফেইল-ওভাৰ
- প্ৰতিলিপি
- সংখ্যাত উপলব্ধতা
- ড’মেইন নাম চিষ্টেম
- কণ্টেন্ট ডেলিভাৰী নেটৱৰ্ক
- পুশ CDN-সমূহ
- পুল CDN-সমূহ
- লোড বেলেন্সাৰ
- একটিভ-পেছিভ
- একটিভ-একটিভ
- লেয়াৰ ৪ লোড বেলেন্সিং
- লেয়াৰ ৭ লোড বেলেন্সিং
- অংশভাগত স্কেলিং
- ৰিভাৰ্ছ প্ৰক্সি (ৱেব ছাৰ্ভাৰ)
- লোড বেলেন্সাৰ বনাম ৰিভাৰ্ছ প্ৰক্সি
- এপ্লিকেচন স্তৰ
- মাইক্ৰ’চাৰ্ভিচ
- চাৰ্ভিচ ডিসকভাৰী
- ডাটাবেছ
- ৰিলেচনেল ডাটাবেছ মেনেজমেণ্ট ছিষ্টেম (RDBMS)
- মাষ্টাৰ-চ্লেভ ৰিপ্লিকেচন
- মাষ্টাৰ-মাষ্টাৰ ৰিপ্লিকেচন
- ফেডাৰেচন
- শাৰ্ডিং
- ডিনৰ্মেলাইজেচন
- SQL টিউনিং
- NoSQL
- কি-ভেলিউ ষ্ট’ৰ
- ডকুমেণ্ট ষ্ট’ৰ
- ৱাইড কলাম ষ্ট’ৰ
- গ্ৰাফ ডাটাবেছ
- SQL অথবা NoSQL
- কেছ
- ক্লায়েন্ট কেছিং
- CDN কেছিং
- ৱেব ছাৰ্ভাৰ কেছিং
- ডাটাবেছ কেছিং
- এপ্লিকেচন কেছিং
- ডাটাবেছ কুৱাৰী স্তৰত কেছিং
- অবজেক্ট স্তৰত কেছিং
- কেতিয়া কেছ আপডেট কৰিব
- কেছ-অ’ছাইড
- ৰাইট-থ্ৰু
- ৰাইট-বিহাইণ্ড (ৰাইট-বেক)
- ৰিফ্ৰেছ-অ’হেড
- অসিঙ্ক্ৰোনিজম
- মেছেজ কিউ
- Task queues
- Back pressure
- Communication
- Transmission control protocol (TCP)
- User datagram protocol (UDP)
- Remote procedure call (RPC)
- Representational state transfer (REST)
- Security
- Appendix
- Powers of two table
- Latency numbers every programmer should know
- Additional system design interview questions
- Real world architectures
- Company architectures
- Company engineering blogs
- Under development
- Credits
- Contact info
- License
অধ্যয়ন গাইড
আপোনাৰ সাক্ষাৎকাৰৰ সময়সূচী (সৰু, মধ্যম, দীঘল) অনুসৰি পৰ্যালোচনাৰ বাবে পৰামৰ্শিত বিষয়সমূহ।

প্ৰঃ: সাক্ষাৎকাৰৰ বাবে, মই ইয়াত সকলো জানিব লাগেনে?
উঃ: নহয়, সাক্ষাৎকাৰৰ বাবে প্ৰস্তুতিৰ বাবে আপোনাৰ ইয়াত সকলো জানিব নালাগে।
সাক্ষাৎকাৰত আপোনাক কি সোধা হ'ব তাৰ ওপৰত নিৰ্ভৰ কৰে এনেধৰণৰ পৰিৱৰ্তনশীলতাত:
- আপোনাৰ কিমান অভিজ্ঞতা আছে
- আপোনাৰ প্ৰযুক্তিগত পটভূমি কি
- কোন পজিশনৰ বাবে সাক্ষাৎকাৰ দিব
- কোন কোম্পানিত সাক্ষাৎকাৰ দিব
- ভাগ্য
ব্যাপকভাৱে আৰম্ভ কৰক আৰু কিছুমান ক্ষেত্ৰত গভীৰভাৱে যাওক। বিভিন্ন মুখ্য চিষ্টেম ডিজাইন বিষয়সমূহৰ বিষয়ে অলপ জানিবলৈ সহায় কৰে। তলত দিয়া গাইডটো আপোনাৰ সময়সীমা, অভিজ্ঞতা, যি পদৰ বাবে সাক্ষাৎকাৰ দিব, আৰু যি কোম্পানিত সাক্ষাৎকাৰ দিব, তাৰ ভিত্তিত সমন্বয় কৰক।
- চুটি সময়সীমা - চিষ্টেম ডিজাইন বিষয়সমূহত ব্যাপকতাৰ লক্ষ্য ৰাখক। কিছুমান সাক্ষাৎকাৰ প্ৰশ্নৰ সমাধান কৰি অনুশীলন কৰক।
- মধ্যম সময়সীমা - চিষ্টেম ডিজাইন বিষয়সমূহত ব্যাপকতা আৰু কিছু গভীৰতাৰ লক্ষ্য ৰাখক। বহুত সাক্ষাৎকাৰ প্ৰশ্নৰ সমাধান কৰি অনুশীলন কৰক।
- দীঘল সময়সীমা - চিষ্টেম ডিজাইন বিষয়সমূহত ব্যাপকতা আৰু অধিক গভীৰতাৰ লক্ষ্য ৰাখক। বেছিভাগ সাক্ষাৎকাৰ প্ৰশ্নৰ সমাধান কৰি অনুশীলন কৰক।
চিষ্টেম ডিজাইন সাক্ষাৎকাৰ প্ৰশ্নৰ প্ৰৱেশ কেনেকৈ কৰিব
চিষ্টেম ডিজাইন সাক্ষাৎকাৰ প্ৰশ্ন কেনেকৈ সমাধান কৰিব।
চিষ্টেম ডিজাইন সাক্ষাৎকাৰ হৈছে এটা উন্মুক্ত আলোচনা। আপোনাক ইয়াত নেতৃত্ব দিবলে আশা কৰা হয়।
আলোচনাটো পথ দেখুৱাবলৈ তলৰ পদক্ষেপবোৰ ব্যৱহাৰ কৰিব পাৰে। এই প্ৰক্ৰিয়া দৃঢ় কৰিবলৈ, সমাধানসহ চিষ্টেম ডিজাইন সাক্ষাৎকাৰ প্ৰশ্ন অংশটো তলৰ পদক্ষেপ ব্যৱহাৰ কৰি অনুশীলন কৰক।
পদক্ষেপ ১: ব্যৱহাৰ ক্ষেত্ৰ, সীমাবদ্ধতা, আৰু অনুমানৰ সংক্ষিপ্তসাৰ
দৰকাৰী বিষয়বস্তু সংগ্ৰহ কৰক আৰু সমস্যাৰ সীমা স্থিৰ কৰক। ব্যৱহাৰ ক্ষেত্ৰ আৰু সীমাবদ্ধতা স্পষ্ট কৰিবলৈ প্ৰশ্ন কৰক। অনুমানসমূহ আলোচনা কৰক।
- কোনে ইয়াক ব্যৱহাৰ কৰিব?
- কেনেকৈ ব্যৱহাৰ কৰিব?
- কিমান ব্যৱহাৰকাৰী আছে?
- চিষ্টেমে কি কৰে?
- চিষ্টেমৰ ইনপুট আৰু আউটপুট কি?
- কিমান ডাটা আশা কৰা হৈছে?
- প্ৰতি ছেকেণ্ডত কিমান অনুৰোধ আশা কৰা হৈছে?
- আশা কৰা পঢ়া আৰু লিখা অনুপাত কিমান?
পদক্ষেপ ২: উচ্চ স্তৰৰ ডিজাইন তৈয়াৰ কৰক
সমূহ গুৰুত্বপূর্ণ অংশসহ উচ্চ স্তৰৰ ডিজাইনৰ সংক্ষিপ্তসাৰ দিয়ক।
- মুখ্য উপাদানসমূহ আৰু সংযোগবোৰৰ স্কেচ আঁকা
- আপোনাৰ ধাৰণাসমূহৰ যুক্তি প্রদান কৰক
পদক্ষেপ ৩: মূল উপাদানসমূহ ডিজাইন কৰক
প্ৰত্যেকটা মূল উপাদানৰ বাবে বিস্তারিতভাৱে আলোচনা কৰক। উদাহৰণস্বৰূপে, যদি আপোনাক [এটা URL সংক্ষিপ্তকৰণ সেৱা ডিজাইন কৰিবলৈ] (https://raw.githubusercontent.com/donnemartin/system-design-primer/master/solutions/system_design/pastebin/README.md) অনুৰোধ কৰা হয়, তেন্তে আলোচনা কৰক:
- সম্পূর্ণ URL-ৰ হাশ সৃষ্টি আৰু সংৰক্ষণ কৰা
- MD5 আৰু Base62
- হাশ ক'লিজনসমূহ
- SQL অথবা NoSQL
- ডেটাবেছ স্কিমা
- হাশ কৰা URL-টো সম্পূর্ণ URL-লৈ অনুবাদ কৰা
- ডেটাবেছ সন্ধান
- API আৰু অবজেক্ট-অৰিয়েন্টেড ডিজাইন
পদক্ষেপ ৪: ডিজাইনটো স্কেল কৰক
বটলনেক চিনাক্ত কৰক আৰু সমাধান কৰক, দিয়া সীমাবদ্ধতাসমূহ অনুসৰি। উদাহৰণস্বৰূপে, scalability সমস্যা সমাধান কৰিবলৈ আপোনাৰ নিম্নলিখিতবোৰৰ প্ৰয়োজন আছে নেকি?
- লোড বেলেন্সাৰ
- হৰিজণ্টেল স্কেলিং
- কেচিং
- ডেটাবেছ শাৰ্ডিং
চটপট গণনা
আপোনাক হাতে-কলমে কিছুমান অনুমান কৰিব পৰা যায়। Appendixত নিম্নলিখিত উৎসসমূহত চাওক:
উৎস(সমূহ) আৰু অধিক পঢ়াৰ বাবে
তলত দিয়া লিংকসমূহ চাওক, কি আশা কৰিব পাৰি তাৰ ভাল ধাৰণা পাবলৈ:
- কেনেদৰে এটা ছিষ্টেম ডিজাইন ইণ্টাৰ্ভিউত উৎকৃষ্ট কৰিব পাৰি
- ছিষ্টেম ডিজাইন ইণ্টাৰ্ভিউ
- আৰ্কিটেকচাৰ আৰু ছিষ্টেম ডিজাইন ইণ্টাৰ্ভিউৰ পৰিচয়
- ছিষ্টেম ডিজাইন টেমপ্লেট
ছিষ্টেম ডিজাইন ইণ্টাৰ্ভিউ প্ৰশ্নসমূহ উত্তৰৰ সৈতে
সাধাৰণ ছিষ্টেম ডিজাইন ইণ্টাৰ্ভিউৰ প্ৰশ্নসমূহৰ উদাহৰণীয়া আলোচনা, ক’ড আৰু চিত্ৰ।>
উত্তৰসমূহ solutions/ ফোল্ডাৰৰ সমলত সংলগ্ন।| প্ৰশ্ন | | |---|---| | Pastebin.com (বা Bit.ly) ডিজাইন কৰক | উত্তৰ | | Twitter timeline আৰু search (বা Facebook feed আৰু search) ডিজাইন কৰক | উত্তৰ | | এটা web crawler ডিজাইন কৰক | উত্তৰ | | Mint.com ডিজাইন কৰক | উত্তৰ | | এজন সামাজিক জালৰ data structures ডিজাইন কৰক | উত্তৰ | | এটা search engine ৰ বাবে key-value store ডিজাইন কৰক | উত্তৰ | | Amazon ৰ sales ranking by category বৈশিষ্ট্য ডিজাইন কৰক | উত্তৰ | | AWS-ত মিলিয়ন সংখ্যক ব্যৱহাৰকাৰীৰ বাবে scalable ছিষ্টেম ডিজাইন কৰক | উত্তৰ | | এটা ছিষ্টেম ডিজাইন প্ৰশ্ন যোগ কৰক | অংদান কৰক |
Pastebin.com (বা Bit.ly) ডিজাইন কৰক

Twitter timeline আৰু search (বা Facebook feed আৰু search) ডিজাইন কৰক

এটা web crawler ডিজাইন কৰক

Design Mint.com

Design the data structures for a social network

Design a key-value store for a search engine

Design Amazon's sales ranking by category feature

Design a system that scales to millions of users on AWS

Object-oriented design interview questions with solutions
Common object-oriented design interview questions with sample discussions, code, and diagrams.>
Solutions linked to content in the solutions/ folder.>Note: This section is under development
| Question | | |---|---| | এটা হেশ্ মেপ ডিজাইন কৰক | সমাধান | | এটা লিষ্ট ৰিছেণ্টলি ইউজড কেছ ডিজাইন কৰক | সমাধান | | এটা কল চেন্টাৰ ডিজাইন কৰক | সমাধান | | এটা কাৰ্ডৰ ডেক ডিজাইন কৰক | সমাধান | | এটা পাৰ্কিং লট ডিজাইন কৰক | সমাধান | | এটা চেট ছাৰ্ভাৰ ডিজাইন কৰক | সমাধান | | এটা চাৰ্কুলাৰ এৰে ডিজাইন কৰক | অংশগ্ৰহণ কৰক | | এটা অবজেক্ট-অৰিয়েন্টেড ডিজাইন প্ৰশ্ন যোগ কৰক | অংশগ্ৰহণ কৰক |
ছিষ্টেম ডিজাইন বিষয়বস্তু: ইয়াৰে আৰম্ভ কৰক
ছিষ্টেম ডিজাইনত নতুন?
প্ৰথমে, সাধাৰণ নীতিসমূহৰ মূল কথা বুজিব লাগিব, কি সিহঁত, কেনেকৈ ব্যৱহাৰ কৰা হয়, আৰু সিহঁতৰ লাভ-অলাভ।
পদক্ষেপ ১: স্কেলেবিলিটি ভিডিঅ' লেকচাৰ পৰ্যালোচনা কৰক
হাৰ্ভাৰ্ডত স্কেলেবিলিটি লেকচাৰ
- আলোচনা কৰা বিষয়বস্তু:
- ভাৰ্টিকেল স্কেলিং
- হৰিজণ্টেল স্কেলিং
- কেছিং
- লোড বেলেন্সিং
- ডেটাবেচ ৰেপ্লিকেশন
- ডেটাবেচ পাৰ্টিশ্বনিং
পদক্ষেপ ২: স্কেলেবিলিটি প্ৰবন্ধ পৰ্যালোচনা কৰক
- আলোচনা কৰা বিষয়বস্তু:
- ক্লোন
- ডেটাবেচ
- কেছ
- অ্যাসিঙ্ক্ৰনিজম
পৰৱৰ্তী পদক্ষেপ
পিছত, আমি উচ্চ-স্তৰৰ বাণিজ্যিক সমঝোতা সমূহ চাওঁ:
- কাৰ্যক্ষমতা (Performance) বনাম বিস্তাৰযোগ্যতা (scalability)
- বিলম্ব (latency) বনাম থ্ৰুপুট (throughput)
- উপলব্ধতা (availability) বনাম সুসংগতিতা (consistency)
তেতিয়া আমি অধিক নিৰ্দিষ্ট বিষয়সমূহ যেনে DNS, CDN আৰু লোড বেলেন্সাৰ চাম।
কাৰ্যক্ষমতা বনাম বিস্তাৰযোগ্যতা
এটা সেৱা বিস্তাৰযোগ্য যদি ইয়াত সংযোজিত সম্পদৰ অনুপাতে কাৰ্যক্ষমতা বৃদ্ধি পায়। সাধাৰণতে, কার্যক্ষমতা বৃদ্ধি মানে অধিক কামৰ একক সেৱন কৰা, কিন্তু ই ডেটাসেট ডাঙৰ হ'লে ডাঙৰ কামৰ একক হেণ্ডেল কৰাটোও হ'ব পাৰে।1
কাৰ্যক্ষমতা বনাম বিস্তাৰযোগ্যতা বুজাৰ আন এটা উপায়:
- যদি আপোনাৰ কাৰ্যক্ষমতা সমস্যা আছে, তেন্তে আপোনাৰ প্ৰণালী এটা ব্যৱহাৰকাৰীৰ বাবে ধীৰ।
- যদি আপোনাৰ বিস্তাৰযোগ্যতা সমস্যা আছে, তেন্তে আপোনাৰ প্ৰণালী এটা ব্যৱহাৰকাৰীৰ বাবে দ্ৰুত, কিন্তু অধিক লোডত ধীৰ।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
বিলম্ব বনাম থ্ৰুপুট
বিলম্ব হৈছে কোনো কাৰ্য্য সম্পাদন কৰিবলৈ বা ফলাফল উত্পন্ন কৰিবলৈ সময়ৰ প্ৰয়োজন।
থ্ৰুপুট হৈছে এই ধৰণৰ কার্য্য বা ফলাফলৰ সংখ্যা একক সময়ত।
সাধাৰণতে, আপোনাই সৰ্বাধিক থ্ৰুপুট লক্ষ্য কৰা উচিত গ্ৰহণযোগ্য বিলম্বৰ সৈতে।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
উপলব্ধতা বনাম সুসংগতিতা
CAP তত্ত্ব
এখন বিতৰণ কৰা কম্পিউটাৰ প্ৰণালীত, আপুনি তলত দিয়া তিনিটা নিশ্চয়তাৰ ভিতৰত কেৱল দুটা মাত্ৰ সমৰ্থন কৰিব পাৰে:
- সঙ্গততা (Consistency) - প্ৰতিটো পঢ়াইয়ে আটাইতকৈ নতুন লিখন অথবা এটা ত্ৰুটি লাভ কৰে
- উপলব্ধতা (Availability) - প্ৰতিটো অনুৰোধে এটা প্ৰতিক্ৰিয়া লাভ কৰে, এতিয়া নিশ্চিত নহয় যে সেইটো আটাইতকৈ নতুন তথ্যৰ সংস্কৰণ
- বিভাজন সহনশীলতা (Partition Tolerance) - নেটৱৰ্ক বিফলতাৰ বাবে যিকোনো বিভাজন হোৱাৰ পিছতো প্ৰণালী চলি থাকে
#### CP - সঙ্গততা আৰু বিভাজন সহনশীলতা
বিভাজিত নোডৰ পৰা প্ৰতিক্ৰিয়া বিচাৰোতে সময় শেষৰ ত্ৰুটি দেখা দিব পাৰে। আপোনাৰ ব্যৱসায়িক দাবীত যদিহে এটমিক পঢ়া আৰু লিখা প্ৰয়োজন, CP এটা ভাল বিকল্প।
#### AP - উপলব্ধতা আৰু বিভাজন সহনশীলতা
প্ৰতিক্ৰিয়াবোৰ যিকোনো নোডত উপলব্ধ থকা আটাইতকৈ সহজ তথ্যৰ সংস্কৰণ প্ৰদান কৰে, যি আটাইতকৈ নতুন নাও হ’ব পাৰে। লিখাবোৰ বিভাজন সমাধান হোৱাৰ পিছত কিছু সময় লৈ প্ৰসাৰিত হ’ব পাৰে।
AP ভাল বিকল্প যদি ব্যৱসায়িক দাবীত অৱশেষত সঙ্গততা অনুমোদন কৰিব লাগে বা প্ৰণালীয়ে বাহ্যিক ত্ৰুটিতো চলি থাকিব লাগে।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
সঙ্গততাৰ পেটাৰ্নসমূহ
এটা তথ্যৰ একাধিক প্ৰতিলিপি থকা অৱস্থাত, আমাক সেইবোৰ কেনেকৈ সমন্বয় কৰিব লাগে যাতে গ্ৰাহকে তথ্যৰ সঙ্গত দৃশ্য পায়, সেই বাছনি কৰিব লাগে। CAP তত্ত্ব-ৰ পৰা সঙ্গততাৰ সংজ্ঞা মনত ৰাখিব - প্ৰতিটো পঢ়াইয়ে আটাইতকৈ নতুন লিখন অথবা এটা ত্ৰুটি লাভ কৰে।
দুর্বল সঙ্গততা
এটা লিখাৰ পিছত, পঢ়াবোৰে সেইটো দেখা পাব বা নাপাব পাৰে। এটা সৰ্বোত্তম চেষ্টা কৰা হয়।
এই পদ্ধতি memcached আদিত দেখা যায়। দুর্বল সঙ্গততা বাস্তৱ সময়ৰ ব্যৱহাৰৰ ক্ষেত্ৰত ভালদৰে কাম কৰে, যেনে VoIP, ভিডিঅ’ চেট, আৰু realtime multiplayer গেম। উদাহৰণস্বৰূপ, যদি আপুনি ফোনত কথাবতৰা কৰি আছে আৰু কিছু সময়ৰ বাবে সংযোগ হেৰাই পেলায়, সংযোগ পুনৰ লাভ কৰোঁতে সংযোগ হেৰোৱাৰ সময়ত কোৱা কথা আপুনি শুনা নাপায়।
অৱশেষত এক-ৰূপতা (Eventual consistency)
এখন লিখাৰ পিছত, পঢ়া-সমূহে শেষত সেইটো দেখিব (সাধাৰণতে মিলি ছেকেণ্ডৰ ভিতৰত)। ডাটা অসমান্তৰালভাৱে প্ৰতিৰূপিত হয়।
এই পদ্ধতি DNS আৰু ই-মেইল দৰে ব্যৱস্থাত দেখা যায়। অৱশেষত এক-ৰূপতা উচ্চ উপলভ্যতা থকা ব্যৱস্থাত ভালকৈ কাম কৰে।
শক্তিশালী এক-ৰূপতা (Strong consistency)
এখন লিখাৰ পিছত, পঢ়া-সমূহে সেইটো দেখিব। ডাটা সমান্তৰালভাৱে প্ৰতিৰূপিত হয়।
এই পদ্ধতি ফাইল চিস্টেম আৰু RDBMS-ত দেখা যায়। শক্তিশালী এক-ৰূপতা লেন-দেনৰ প্ৰয়োজন থকা ব্যৱস্থাত ভালকৈ কাম কৰে।
উৎস(সমূহ) আৰু অধিক পঢ়া
উপলভ্যতা পেটাৰ্ণসমূহ
উচ্চ উপলভ্যতা সহায় কৰিবলৈ দুটা সম্পূৰক পেটাৰ্ণ আছে: ফেইল-ওভাৰ আৰু প্ৰতিৰূপণ।
ফেইল-ওভাৰ
#### সক্ৰিয়-নিষ্ক্ৰিয় (Active-passive)
সক্ৰিয়-নিষ্ক্ৰিয় ফেইল-ওভাৰত, হৃদস্পন্দন (heartbeat) সক্ৰিয় আৰু ষ্টেন্ডবাই থকা নিষ্ক্ৰিয় ছাৰ্ভাৰৰ মাজত পঠোৱা হয়। যদি হৃদস্পন্দন বন্ধ হয়, নিষ্ক্ৰিয় ছাৰ্ভাৰ সক্ৰিয়ৰ IP ঠিকনা লৈ সেৱা আৰম্ভ কৰে।
ডাউনটাইমৰ দৈৰ্ঘ্য নিৰ্ধাৰণ কৰা হয় নিষ্ক্ৰিয় ছাৰ্ভাৰ 'হট' ষ্টেন্ডবাইত চলি আছে নে 'কোল্ড' ষ্টেন্ডবাইৰ পৰা আৰম্ভ কৰিব লাগিব। কেৱল সক্ৰিয় ছাৰ্ভাৰেই ট্ৰাফিক ব্যৱস্থাপনা কৰে।
সক্ৰিয়-নিষ্ক্ৰিয় ফেইল-ওভাৰক মাষ্টাৰ-চ্লেভ ফেইল-ওভাৰ বুলি কোৱা হয়।
#### সক্ৰিয়-সক্ৰিয় (Active-active)
সক্ৰিয়-সক্ৰিয়ত, দুয়োটা ছাৰ্ভাৰেই ট্ৰাফিক ব্যৱস্থাপনা কৰে, লোডৰ ভাগ-বতৰা কৰে।
যদি ছাৰ্ভাৰসমূহ পাব্লিক-মুখী হয়, DNS-এ দুয়োটা ছাৰ্ভাৰৰ পাব্লিক IP জানিব লাগিব। যদি ছাৰ্ভাৰসমূহ আন্তঃ-ৰূপে মুখী হয়, এপ্লিকেচন লজিক-এ দুয়োটা ছাৰ্ভাৰৰ বিষয়ে জানিব লাগিব।
সক্ৰিয়-সক্ৰিয় ফেইল-ওভাৰক মাষ্টাৰ-মাষ্টাৰ ফেইল-ওভাৰ বুলি কোৱা হয়।
অপৰিসীম(সমূহ): ফেইল-ওভাৰ
- ফেইল-ওভাৰ অধিক হাৰ্ডৱেৰ আৰু অতিৰিক্ত জটিলতা যোগ কৰে।
- যদি সক্ৰিয় ব্যৱস্থা বিফল হয় আৰু কোনো নতুন লিখা তথ্য নিষ্ক্ৰিয়লৈ প্ৰতিলিপি কৰাৰ আগতে, তেতিয়া তথ্য হেৰুৱা সম্ভাৱনা থাকে।
প্ৰতিলিপি
#### মাষ্টাৰ-চাকৰ আৰু মাষ্টাৰ-মাষ্টাৰ
এই বিষয়টো ডাটাবেছ অনুচ্ছেদত অধিক আলোচনা কৰা হৈছে:
সংখ্যাত উপলভ্যতা
উপলভ্যতা সাধাৰণতে আপটাইম (বা ডাউনটাইম) হিচাপে শতাংশৰ দ্বাৰা পৰিমাপ কৰা হয়, অৰ্থাৎ সেৱা উপলভ্য থকা সময়ৰ শতাংশ। উপলভ্যতা সাধাৰণতে 9 সংখ্যাৰ দ্বাৰা মাপা হয়--99.99% উপলভ্যতা থকা সেৱা চাৰিটা 9 আছে বুলি বৰ্ণনা কৰা হয়।
#### 99.9% উপলভ্যতা - তিনি 9
| সময়কাল | গ্ৰহণযোগ্য ডাউনটাইম| |----------------------|--------------------| | বছৰত ডাউনটাইম | 8ঘণ্টা 45মিনিট 57ছেকেণ্ড | | মাহত ডাউনটাইম | 43মিনিট 49.7ছেকেণ্ড | | সপ্তাহত ডাউনটাইম | 10মিনিট 4.8ছেকেণ্ড | | দিনত ডাউনটাইম | 1মিনিট 26.4ছেকেণ্ড |
#### 99.99% উপলভ্যতা - চাৰি 9
| সময়কাল | গ্ৰহণযোগ্য ডাউনটাইম| |----------------------|--------------------| | বছৰত ডাউনটাইম | 52মিনিট 35.7ছেকেণ্ড | | মাহত ডাউনটাইম | 4মিনিট 23ছেকেণ্ড | | সপ্তাহত ডাউনটাইম | 1মিনিট 5ছেকেণ্ড | | দিনত ডাউনটাইম | 8.6ছেকেণ্ড |
#### সমান্তৰালত আৰু ক্ৰমান্বয়ে উপলভ্যতা
যদি এটা সেৱা বহুতো উপাদানৰে গঠিত যি বিফল হোৱাৰ সম্ভাৱনা আছে, তেন্তে সেৱাটোৰ সামগ্ৰিক উপলভ্যতা নিৰ্ভৰ কৰে উপাদানসমূহ ক্ৰমান্বয়ে বা সমান্তৰালত আছে নে নাই।
###### ক্ৰমান্বয়ে যেতিয়া ১০০%তকৈ কম উপলব্ধতাৰ সৈতে দুটা উপাদান শৃংখলাবদ্ধভাৱে থাকে, তেতিয়া সামগ্ৰিক উপলব্ধতা হ্ৰাস হয়:
Availability (Total) = Availability (Foo) * Availability (Bar)যদি Foo আৰু Bar দুয়োটা ৯৯.৯% উপলব্ধতা থকা হয়, তেন্তে তেওঁলোকৰ ক্ৰমিক মুঠ উপলব্ধতা ৯৯.৮% হ’ব।
###### সমান্তৰালভাৱে
যেতিয়া উপলব্ধতা < ১০০% থকা দুইটা অংশ সমান্তৰালভাৱে থাকে, মুঠ উপলব্ধতা বৃদ্ধি পায়:
Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
যদি Foo আৰু Bar দুয়োটাৰ ৯৯.৯% উপলব্ধতা থাকে, তেন্তে তেওঁলোকৰ মুঠ উপলব্ধতা সমান্তৰালভাৱে ৯৯.৯৯৯৯% হ’ব।ড’মেইন নাম ছিষ্টেম
এটা ড’মেইন নাম ছিষ্টেম (DNS) এ www.example.com যেনে এটা ড’মেইন নামক এটা IP ঠিকনালৈ অনুবাদ কৰে।
DNS গঠনগতভাৱে হায়াৰাৰ্কিকেল, ওপৰৰ স্তৰত কিছুমান অথৰিটেটিভ ছাৰ্ভাৰ থাকে। আপোনাৰ ৰাউটাৰ বা ISP-এ DNS ছাৰ্ভাৰ(সমূহ)ৰ তথ্য দিয়ে lookup কৰাৰ সময়ত। তলৰ স্তৰৰ DNS ছাৰ্ভাৰসমূহে মেপিংসমূহ cache কৰে, যি DNS propagation বিলম্বৰ বাবে পুৰণি হ’ব পাৰে। DNS ফলাফলসমূহ আপোনাৰ ব্ৰাউজাৰ বা OS-এও এটা নিৰ্দিষ্ট সময়ৰ বাবে cache কৰিব পাৰে, যি time to live (TTL) দ্বাৰা নিৰ্ধাৰিত।
- NS ৰেকৰ্ড (name server) - আপোনাৰ ড’মেইন/সাবড’মেইনৰ বাবে DNS ছাৰ্ভাৰ নিৰ্দিষ্ট কৰে।
- MX ৰেকৰ্ড (mail exchange) - বাৰ্তা গ্ৰহণৰ বাবে মেইল ছাৰ্ভাৰ নিৰ্দিষ্ট কৰে।
- A ৰেকৰ্ড (address) - এটা নামক এটা IP ঠিকনালৈ নির্দেশ কৰে।
- CNAME (canonical) - এটা নামক আন এটা নাম বা
CNAME(example.com ৰ পৰা www.example.com) বাAৰেকৰ্ডলৈ নির্দেশ কৰে।
- Weighted round robin
- ৰক্ষণাবেক্ষণত থকা ছাৰ্ভাৰসমূহলৈ ট্ৰেফিক যোৱাৰ পৰা ৰক্ষা কৰে
- বিভিন্ন ক্লাষ্টাৰৰ আকাৰৰ মাজত বেলেন্স কৰে
- A/B পৰীক্ষা
- Latency-based
- Geolocation-based
অসুবিধা(সমূহ): DNS
- এটা DNS ছাৰ্ভাৰত প্ৰবেশ কৰোঁতে অলপ বিলম্ব হয়, যদিও ওপৰত বৰ্ণনা কৰা caching-এ এইটো হ্ৰাস কৰে।
- DNS ছাৰ্ভাৰ ব্যৱস্থাপনা জটিল হ’ব পাৰে আৰু সাধাৰণতে সরকাৰ, ISP আৰু ডাঙৰ কোম্পানীসমূহে ব্যৱস্থাপনা কৰে।
- DNS সেৱাসমূহে অলপতে DDoS আক্ৰমণৰ সন্মুখীন হৈছে, যাৰ ফলত ব্যৱহাৰকাৰীসকলে Twitterৰ IP ঠিকনাসমূহ নাজানিলে Twitter যেনে ৱেবছাইটসমূহত প্ৰৱেশ কৰিব নোৱাৰে।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
কন্টেন্ট ডেলিভাৰী নেটৱৰ্ক
এটা কন্টেন্ট ডেলিভাৰী নেটৱৰ্ক (CDN) হৈছে বিশ্বব্যাপী বিতৰিত প্ৰক্সি ছাৰ্ভাৰৰ এক নেটৱৰ্ক, যি ব্যৱহাৰকাৰীৰ ওচৰৰ স্থানসমূহৰ পৰা কন্টেন্ট প্ৰদান কৰে। সাধাৰণতে, HTML/CSS/JS, ফটো, আৰু ভিডিঅ'ৰ দৰে ষ্টেটিক ফাইল CDN ৰ পৰা প্ৰদান কৰা হয়, যদিও Amazon ৰ CloudFront ৰ দৰে কিছুমান CDN-এ ডাইনামিক কন্টেন্ট সমৰ্থন কৰে। চাইটৰ DNS ৰিজলিউচনে ক্লায়েন্টক কোন ছাৰ্ভাৰৰ সৈতে যোগাযোগ কৰিব সেইটো জনায়।
CDN ৰ পৰা কন্টেন্ট প্ৰদান কৰোঁতে দুটা উপায়ত কার্যক্ষমতা যথেষ্ট বৃদ্ধি কৰিব পাৰে:
- ব্যৱহাৰকাৰীয়ে তেওঁলোকৰ ওচৰৰ ডাটা চেন্টাৰৰ পৰা কন্টেন্ট লাভ কৰে
- আপোনাৰ ছাৰ্ভাৰে CDN-এ পূৰণ কৰা অনুৰোধসমূহ প্ৰদান কৰিব নালাগে
পুশ CDN
পুশ CDN-এ আপোনাৰ ছাৰ্ভাৰত পৰিৱৰ্তন ঘটিলে নতুন কন্টেন্ট লাভ কৰে। আপুনি সম্পূৰ্ণ দায়িত্ব লৈ কন্টেন্ট প্ৰদান কৰে, CDN ত সোজাকৈ আপলোড কৰে আৰু URL সমূহ CDN ত নির্দেশ কৰে। আপুনি কন্টেন্ট কেতিয়া মেয়াদ উত্তীর্ণ হ'ব আৰু কেতিয়া আপডেট হ'ব, সেইটো নিৰ্ধাৰণ কৰিব পাৰে। কন্টেন্ট কেৱল নতুন বা পৰিৱৰ্তিত হ'লে আপলোড কৰা হয়, ফলত ট্ৰাফিক কম হয়, কিন্তু ষ্ট'ৰেজ বৃদ্ধি পায়।
অল্প পৰিমাণৰ ট্ৰাফিক থকা চাইট অথবা যি চাইটত কন্টেন্ট প্ৰায়ে আপডেট নহয়, সেইবোৰ পুশ CDN ৰ সৈতে ভালকৈ কাম কৰে। কন্টেন্ট এটা বাৰ CDN ত ৰাখা হয়, নিয়মীয়াকৈ পুনৰ-পুল কৰা নহয়।
পুল CDN
পুল CDN-এ প্ৰথম ব্যৱহাৰকাৰীয়ে কন্টেন্ট অনুৰোধ কৰিলে আপোনাৰ ছাৰ্ভাৰৰ পৰা নতুন কন্টেন্ট গ্ৰহণ কৰে। আপুনি কন্টেন্ট আপোনাৰ ছাৰ্ভাৰত ৰাখে আৰু URL সমূহ CDN ত নির্দেশ কৰে। এইটোত CDN ত কেচ কৰা নোহোৱা পৰ্যন্ত অনুৰোধটো অলপ মন্থৰ হয়।
এটা time-to-live (TTL) নিৰ্ধাৰণ কৰে কিমান সময় কন্টেন্ট কেচ কৰা হ'ব। পুল CDN-এ CDN ত ষ্ট'ৰেজ স্পেচ কম কৰে, কিন্তু যদি ফাইলসমূহ মেয়াদ উত্তীর্ণ হয় আৰু পুনৰ পুল কৰা হয়, তেন্তে অপ্ৰয়োজনীয় ট্ৰাফিক সৃষ্টি কৰিব পাৰে।
বেছি ট্ৰাফিক থকা চাইটসমূহ পুল CDN ৰ সৈতে ভাল কাম কৰে, কাৰণ ট্ৰাফিক অধিক সমভাৱে বিতৰণ হয় আৰু কেৱল নতুন অনুৰোধ কৰা কন্টেন্ট CDN ত থাকে।
অসুবিধা(সমূহ): CDN
- CDN ৰ খৰচ ট্ৰাফিকৰ ওপৰত নিৰ্ভৰ কৰি উল্লেখযোগ্য হ’ব পাৰে, যদিও CDN ব্যৱহাৰ নকৰিলে হোৱা অতিৰিক্ত খৰচৰ সৈতে এইটো তুলনা কৰিব লাগে।
- TTL শেষ হোৱাৰ আগতে কন্টেন্ট আপডেট কৰিলে, CDN ত কন্টেন্ট পুৰণা হ’ব পাৰে।
- CDN ব্যৱহাৰ কৰিবলৈ ষ্টেটিক কন্টেন্টৰ URL CDN ত নির্দেশ কৰিব লগা হয়।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
লোড বেলেন্সাৰ
উৎস: স্কেলেবেল চিষ্টেম ডিজাইন প্যাটাৰ্ন
লোড বেলেন্সাৰসমূহে আহি থকা ক্লায়েন্ট অনুৰোধসমূহ কম্পিউটিং ৰিসোৰ্চ যেনে এপ্লিকেশ্বন ছাৰ্ভাৰ আৰু ডেটাবেছলৈ বিতৰণ কৰে। প্ৰতিটো ক্ষেত্ৰত, লোড বেলেন্সাৰে কম্পিউটিং ৰিসোৰ্চৰ পৰা উত্তৰ উপযুক্ত ক্লায়েন্টলৈ পঠিয়ায়। লোড বেলেন্সাৰসমূহ ইয়াত কাৰ্যকৰী:
- অসুস্থ ছাৰ্ভাৰলৈ অনুৰোধ যোৱাৰ পৰা প্ৰতিষেধ কৰা
- ৰিসোৰ্চ অধিক ভৰাই পৰাৰ পৰা প্ৰতিষেধ কৰা
- এটা একক বিফলতাৰ বিন্দু দূৰ কৰা
অতিৰিক্ত সুবিধাসমূহ অন্তর্ভুক্ত:
- SSL টাৰ্মিনেচন - আহি থকা অনুৰোধসমূহ ডিক্ৰিপ্ট কৰা আৰু ছাৰ্ভাৰৰ উত্তৰসমূহ এনক্ৰিপ্ট কৰা যাতে ব্যাকএণ্ড ছাৰ্ভাৰসমূহে এই সম্ভাৱ্য মূল্যবান অপাৰেশ্বনসমূহ কৰিব নালাগে
- প্ৰতিটো ছাৰ্ভাৰত X.509 চাৰ্টিফিকেট ইনষ্টল কৰাৰ প্ৰয়োজন আঁতৰাই
- চেছন স্থায়ীত্ব - কুকি ইস্যু কৰা আৰু যদি ৱেব এপ্লিকেশ্বনসমূহে চেছন সংৰক্ষণ নকৰে, তেন্তে নিৰ্দিষ্ট ক্লায়েন্টৰ অনুৰোধ একে ইনষ্টেন্সলৈ ৰাউট কৰা
লোড বেলেন্সাৰসমূহে বিভিন্ন মেট্ৰিকৰ আধাৰত ট্ৰাফিক ৰাউট কৰিব পাৰে, যেনে:
- ৰেণ্ডম
- আটাইতকৈ কম ভৰাই থকা
- চেছন/কুকি
- Round robin বা weighted round robin
- Layer 4
- Layer 7
Layer 4 লোড বেলেন্সিং
Layer 4 লোড বেলেন্সাৰসমূহে ট্ৰান্সপৰ্ট স্তৰ-ৰ তথ্য চাই অনুৰোধসমূহ কেনেদৰে বিতৰণ কৰিব সিদ্ধান্ত লয়। সাধাৰণতে, ইয়াত উৎস, গন্তব্য IP ঠিকনা, আৰু হেডাৰত থকা পোৰ্ট অন্তর্ভুক্ত, কিন্তু পেকেটৰ বিষয়বস্তু নহয়। Layer 4 লোড বেলেন্সাৰসমূহে নেটৱৰ্ক পেকেটসমূহ আপষ্ট্ৰিম ছাৰ্ভাৰলৈ আগবঢ়ায়, Network Address Translation (NAT) সম্পাদন কৰে।
Layer 7 লোড বেলেন্সিং
লেয়াৰ ৭ ল'ড বেলেন্সাৰসমূহে এপ্লিকেশ্যন স্তৰ চাই অনুৰোধসমূহ কেনেদৰে বিতৰণ কৰিব সেইটো সিদ্ধান্ত লয়। এইটোত হেডাৰ, মেছেজ, আৰু কুকীৰ বিষয়বস্তু অন্তর্ভুক্ত কৰিব পাৰে। লেয়াৰ ৭ ল'ড বেলেন্সাৰসমূহে নেটৱৰ্ক ট্ৰাফিক শেষ কৰে, মেছেজ পঢ়ে, ল'ড-বেলেন্সিং সিদ্ধান্ত লয়, তাৰপিছত নিৰ্বাচিত ছাৰ্ভাৰত সংযোগ খোল। উদাহৰণস্বৰূপে, এটা লেয়াৰ ৭ ল'ড বেলেন্সাৰে ভিডিঅ' ট্ৰাফিক ভিডিঅ' হোস্ট কৰা ছাৰ্ভাৰলৈ পঠিয়াব পাৰে আৰু অধিক সংবেদনশীল ইউজাৰ বিলিং ট্ৰাফিক সুৰক্ষিত ছাৰ্ভাৰলৈ পঠিয়াব পাৰে।
লচিলতাৰ মূল্যত, লেয়াৰ ৪ ল'ড বেলেন্সিংয়ে লেয়াৰ ৭তকৈ কম সময় আৰু কম কম্পিউটিং সম্পদৰ প্ৰয়োজন, যদিও আধুনিক কমোডিটি হার্ডৱেৰত প্ৰদৰ্শন প্ৰভাৱ ন্যূনতম হ’ব পাৰে।
অনুভূমিক স্কেলিং
ল'ড বেলেন্সাৰসমূহে অনুভূমিক স্কেলিঙতো সহায় কৰিব পাৰে, যাৰ ফলত প্ৰদৰ্শন আৰু উপলভ্যতা বৃদ্ধি পায়। কমোডিটি মেচিন ব্যৱহাৰ কৰি স্কেল আউট কৰাটো অধিক ব্যয়-সাশ্ৰয়ী আৰু অধিক উপলভ্যতা প্রদান কৰে, একেটা ছাৰ্ভাৰৰ মূল্যবান হার্ডৱেৰত স্কেল আপ কৰাতকৈ, যাক Vertical Scaling বুলি কোৱা হয়। লগতে, কমোডিটি হার্ডৱেৰত কাম কৰা প্ৰতিভা নিয়োগ কৰাটো বিশেষজ্ঞ এণ্টাৰপ্ৰাইজ চিস্টেমতকৈ সহজ।
#### অসুবিধা(সমূহ): অনুভূমিক স্কেলিং
- অনুভূমিকভাৱে স্কেল কৰাটো জটিলতা বৃদ্ধি কৰে আৰু ছাৰ্ভাৰ ক্লোনিং জড়িত থাকে
- ছাৰ্ভাৰসমূহে ষ্টেটলেছ হ’ব লাগে: ইয়াত ইউজাৰৰ সৈতে সম্পৰ্কিত তথ্য যেনে ছেছন বা প্ৰ'ফাইল ফটো থকা উচিত নহয়
- ছেছনসমূহ কেন্দ্রীভূত ডাটা ষ্ট'ৰ যেনে ডেটাবেইজ (SQL, NoSQL) বা স্থায়ী কেশ (Redis, Memcached)ত সংৰক্ষণ কৰিব পাৰি
- ডাউনষ্ট্ৰিম ছাৰ্ভাৰসমূহ যেনে কেশ আৰু ডেটাবেইজে অধিক একেলগে সংযোগ হেণ্ডল কৰিব লাগিব, যেতিয়া আপষ্ট্ৰিম ছাৰ্ভাৰসমূহ স্কেল আউট কৰে
অসুবিধা(সমূহ): ল'ড বেলেন্সাৰ
- ল'ড বেলেন্সাৰটোৱে যথেষ্ট সম্পদ নাথাকিলে বা ঠিকমতে কনফিগাৰ কৰা নহ’লে প্ৰদৰ্শন ৰুদ্ধতা হ’ব পাৰে।
- এটা ল'ড বেলেন্সাৰ সংযোজন কৰিলে একক ব্যর্থতাৰ বিন্দু আঁতৰাবলৈ জটিলতা বৃদ্ধি পায়।
- এটা একক ল'ড বেলেন্সাৰ হৈছে একক ব্যর্থতাৰ বিন্দু, একাধিক ল'ড বেলেন্সাৰ কনফিগাৰ কৰিলে জটিলতা আৰু বৃদ্ধি পায়।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
- NGINX স্থাপত্য
- HAProxy স্থাপত্য গাইড
- স্কেলেবিলিটি
- উইকিপিডিয়া)
- লেয়াৰ ৪ ল'ড বেলেন্সিং
- লেয়াৰ ৭ ল'ড বেলেন্সিং
- ELB listener config
ৰিভাৰ্ছ প্ৰক্সি (ৱেব ছাৰ্ভাৰ)
এখন ৰিভাৰ্ছ প্ৰক্সি হৈছে এটা ৱেব ছাৰ্ভাৰ যি আন্তঃৰ্ভুক্ত সেৱাসমূহ কেন্দ্রীকৃত কৰে আৰু জনসাধাৰণৰ বাবে একত্ৰিত ইণ্টাৰফেছ প্ৰদান কৰে। ক্লায়েন্টৰ পৰা অহা অনুৰোধসমূহ ছাৰ্ভাৰলৈ আগবঢ়োৱা হয় যি সেই অনুৰোধ পূৰণ কৰিব পাৰে, তাৰ পিছত ৰিভাৰ্ছ প্ৰক্সিয়ে ছাৰ্ভাৰৰ প্ৰতিক্ৰিয়া ক্লায়েন্টলৈ ঘূৰাই দিয়ে।
অতিৰিক্ত লাভসমূহৰ ভিতৰত আছে:
- নিৰাপত্তা বৃদ্ধি - বেকএণ্ড ছাৰ্ভাৰৰ বিষয়ে তথ্য লুকুৱায়, IP ব্লেকলিষ্ট কৰে, প্ৰতিটো ক্লায়েন্টৰ বাবে সংযোগৰ সংখ্যা সীমিত কৰে
- স্কেলেবিলিটি আৰু নমনীয়তা বৃদ্ধি - ক্লায়েন্টসকলে কেৱল ৰিভাৰ্ছ প্ৰক্সিৰ IP দেখিব, আপোনাৰ ছাৰ্ভাৰসমূহ স্কেল বা কনফিগাৰেশ্যন সলনি কৰিবলৈ সুবিধা দিব
- SSL টাৰ্মিনেচন - আহি থকা অনুৰোধসমূহ ডিক্ৰিপ্ট কৰে আৰু ছাৰ্ভাৰৰ প্ৰতিক্ৰিয়াসমূহ এনক্ৰিপ্ট কৰে যাতে বেকএণ্ড ছাৰ্ভাৰসমূহে এই ব্যয়বহুল প্ৰক্ৰিয়াসমূহ কৰিব নালাগে
- প্ৰতিটো ছাৰ্ভাৰত X.509 চাৰ্টিফিকেট ইনষ্টল কৰাৰ প্ৰয়োজন নোহোৱা হয়
- কম্প্ৰেছন - ছাৰ্ভাৰৰ প্ৰতিক্ৰিয়া কম্প্ৰেছ কৰে
- কেছিং - কেছ কৰা অনুৰোধৰ বাবে প্ৰতিক্ৰিয়া ঘূৰাই দিয়ে
- ষ্টেটিক কনটেন্ট - ষ্টেটিক কনটেন্ট ডাইৰেক্টলি পৰিসেৱন কৰে
- HTML/CSS/JS
- ফটো
- ভিডিঅ’
- আদি
ল’ড বেলেন্সাৰ বনাম ৰিভাৰ্ছ প্ৰক্সি
- একাধিক ছাৰ্ভাৰ থকা অৱস্থাত ল’ড বেলেন্সাৰ স্থাপন কৰা লাভজনক। সাধাৰণতে, ল’ড বেলেন্সাৰসমূহে একেটা ফাংচন কৰা ছাৰ্ভাৰবোৰলৈ ট্ৰাফিক ৰাউট কৰে।
- কেৱল এটা ৱেব ছাৰ্ভাৰ বা এপ্লিকেশ্যন ছাৰ্ভাৰ থকা অৱস্থাতো ৰিভাৰ্ছ প্ৰক্সি উপযোগী, আগৰ অনুচ্ছেদত বৰ্ণনা কৰা লাভসমূহ উপলভ্য কৰে।
- NGINX আৰু HAProxy যেনে সমাধানসমূহে Layer 7 ৰিভাৰ্ছ প্ৰক্সি আৰু ল’ড বেলেন্সিং উভয়কে সমৰ্থন কৰে।
অসুবিধা(সমূহ): ৰিভাৰ্ছ প্ৰক্সি
- ৰিভাৰ্ছ প্ৰক্সি ব্যৱহাৰ কৰাত জটিলতা বৃদ্ধি হয়।
- এটা ৰিভাৰ্ছ প্ৰক্সি একেটা ফেইলিয়ৰৰ পইণ্ট, একাধিক ৰিভাৰ্ছ প্ৰক্সি (অর্থাৎ ফেইলোভাৰ) কনফিগাৰ কৰাত অধিক জটিলতা বৃদ্ধি হয়।
উৎস(সমূহ) আৰু অধিক পঢ়া
এপ্লিকেশ্যন স্তৰ
উৎস: স্কেলৰ বাবে ছিষ্টেম আৰ্হি কৰোতে পৰিচয়
ৱেব স্তৰটো এপ্লিকেশ্বন স্তৰৰ পৰা (যাক প্লেটফৰ্ম স্তৰো বুলি জনা যায়) পৃথক কৰা হ’লে আপুনি দুয়োটা স্তৰক স্বাধীনভাৱে স্কেল আৰু কনফিগাৰ কৰিব পাৰে। নতুন API যোগ কৰিলে, প্ৰয়োজনত নতুন ৱেব ছাৰ্ভাৰ যোগ নকৰাকৈ এপ্লিকেশ্বন ছাৰ্ভাৰ যোগ হয়। একক দায়িত্ব নীতি সৰু আৰু স্বায়ত্ত্বশাসিত সেৱাসমূহৰ বাবেই উৎসাহিত কৰে যি একেলগে কাম কৰে। সৰু দলে সৰু সেৱাসমূহৰ সৈতে দ্ৰুত বৃদ্ধি পোৱাৰ বাবে অধিক আগ্ৰাসীভাৱে পৰিকল্পনা কৰিব পাৰে।
এপ্লিকেশ্বন স্তৰৰ কৰ্মচাৰীয়ে অসিঙ্ক্ৰনতা সক্ষম কৰাত সহায় কৰে।
মাইক্ৰ’চাৰ্ভিচ
এই আলোচনা সংক্রান্ত মাইক্ৰ’চাৰ্ভিচ, যাক স্বাধীনভাৱে ডিপ্লয় কৰিব পৰা, সৰু, মডুলাৰ সেৱাসমূহৰ এক ছুট হিচাপে বৰ্ণনা কৰিব পাৰি। প্ৰতিটো সেৱাই এটা অনন্য প্ৰক্ৰিয়া চলায় আৰু এটা সু-সংজ্ঞায়িত, হালকা-ওজনৰ ব্যৱস্থাৰে যোগাযোগ কৰে যাতে ব্যৱসায়িক লক্ষ্য পূৰণ হয়। 1
Pinterest-ৰ উদাহৰণত, তলত দিয়া মাইক্ৰ’চাৰ্ভিচসমূহ থাকিব পাৰে: ব্যৱহাৰকাৰী প্ৰ’ফাইল, ফলোৱৰ, ফিড, সন্ধান, ফটো আপলোড, আদি।
সেৱা সন্ধান
Consul, Etcd, আৰু Zookeeper যেনে ছিষ্টেমসমূহে নাম, ঠিকনা, আৰু পোৰ্টৰ ৰেজিষ্ট্ৰেশ্বন ৰখা কাৰ্যদ্বাৰা সেৱাসমূহে একে-অন্যক বিচাৰি পোৱাৰ সহায় কৰে। Health checks-এ সেৱা অখণ্ডতা যাচাই কৰাত সহায় কৰে আৰু সাধাৰণতে এটা HTTP এণ্ডপইণ্ট ব্যৱহাৰ কৰে। Consul আৰু Etcd-এ key-value store অন্তর্নিহিত আছে যি কনফিগ মান আৰু অন্যান্য ভাগ-বতৰা ডাটা সংৰক্ষণত সহায়ক।
অসুবিধাসমূহ: এপ্লিকেশ্বন স্তৰ
- সৰু-সৰু সংযুক্ত সেৱাসমূহৰ সৈতে এপ্লিকেশ্বন স্তৰ যোগ কৰিলে আৰ্হি, অপাৰেশ্বন আৰু প্ৰক্ৰিয়া দৃষ্টিকোণৰ পৰা (একত্ৰিত ছিষ্টেমৰ বিপৰীতে) এক ভিন্ন পদ্ধতিৰ প্ৰয়োজন।
- মাইক্ৰ’চাৰ্ভিচসমূহে ডিপ্লয়মেণ্ট আৰু অপাৰেশ্বনৰ ক্ষেত্ৰত জটিলতা বৃদ্ধি কৰিব পাৰে।
উৎস আৰু অধিক পঢ়া
- স্কেলৰ বাবে ছিষ্টেম আৰ্হি কৰোতে পৰিচয়
- ছিষ্টেম ডিজাইন সাক্ষাৎকাৰ ভাঙি উলিওৱা
- চাৰ্ভিচ-অৰিয়েণ্টেড আৰ্কিটেকচাৰ
- Zookeeper-ৰ পৰিচয়
- মাইক্ৰ’চাৰ্ভিচ গঢ়ি তুলিবলৈ কি জানিব লাগিব
ডাটাবেছ
উৎস: আপোনাৰ প্ৰথম ১০ নিযুত ব্যৱহাৰকাৰীৰ বাবে স্কেলিং
ৰিলেচনেল ডাটাবেছ মেনেজমেণ্ট ছিষ্টেম (RDBMS)
এখন রিলেচনেল ডেটাবেছ যেনে SQL হৈছে টেবুলত সংগঠিত ডেটা আইটেমৰ এটা সংগ্ৰহ।
ACID হৈছে ৰিলেচনেল ডেটাবেছৰ ট্ৰানজেকচনৰ এটা গুণাবলী।
- এটমিকতা - প্ৰতিটো ট্ৰানজেকচন সম্পূৰ্ণ বা একো নহয়
- কনছিষ্টেঞ্চি - যিকোনো ট্ৰানজেকচনে ডেটাবেছক এটা বৈধ অৱস্থাৰ পৰা আন এটা বৈধ অৱস্থালৈ লৈ যায়
- আইচলেচন - একেলগে ট্ৰানজেকচন চলালে ফলাফল একে থাকে যেনে ট্ৰানজেকচনবোৰ একে একে চলোৱা হৈছিল
- ডিউৰেবিলিটি - এটা ট্ৰানজেকচন কমিট হোৱা পৰাহে, সেইটো স্থায়ী হৈ থাকে
#### মাষ্টাৰ-চ্লেভ ৰেপ্লিকেচন
মাষ্টাৰে ৰিড আৰু ৰাইট কৰে, আৰু ৰাইটবোৰ চ্লেভলৈ ৰেপ্লিকেট কৰে, যিয়ে কেৱল ৰিড কৰে। চ্লেভে আৰু অধিক চ্লেভলৈ ৰেপ্লিকেট কৰিব পাৰে গছৰ দৰে। যদি মাষ্টাৰ অফলাইন হয়, চিস্টেমে কেৱল ৰিড মুডত চলি থাকে যেতিয়ালৈকে চ্লেভক মাষ্টাৰত উন্নীত কৰা নহয় বা নতুন মাষ্টাৰ দিয়াৰ ব্যৱস্থা কৰা নহয়।
উৎস: Scalability, availability, stability, patterns
##### অসুবিধা(সমূহ): মাষ্টাৰ-চ্লেভ ৰেপ্লিকেচন
- চ্লেভক মাষ্টাৰত উন্নীত কৰিবলৈ অতিৰিক্ত যুক্তি লাগে।
- অসুবিধা(সমূহ): ৰেপ্লিকেচনত উল্লেখিত পইণ্টবোৰ উভয় মাষ্টাৰ-চ্লেভ আৰু মাষ্টাৰ-মাষ্টাৰৰ ক্ষেত্ৰত প্ৰযোজ্য।
উভয় মাষ্টাৰে ৰিড আৰু ৰাইট কৰে আৰু ৰাইটবোৰত পৰস্পৰে সমন্বয় কৰে। যদি যিকোনো মাষ্টাৰ ডাউন হয়, চিস্টেমে ৰিড আৰু ৰাইট দুয়ো চলাই ৰাখিব পাৰে।
উৎস: Scalability, availability, stability, patterns
##### অসুবিধা(সমূহ): মাষ্টাৰ-মাষ্টাৰ ৰেপ্লিকেচন
- আপোনাৰ এটা লোড বেলেন্সাৰৰ প্ৰয়োজন হব বা আপোনাৰ এপ্লিকেচন যুক্তিত পৰিবর্তন আনিব লাগিব ক'ত ৰাইট কৰিব সেইটো নির্ধাৰণ কৰিবলৈ।
- বেছি ভাগ মাষ্টাৰ-মাষ্টাৰ চিস্টেম বা তলতকৈ কম কনছিষ্টেন্ট (ACID ভংগ কৰে) বা ছিঙ্ক্ৰনাইজেশ্যনৰ বাবে ৰাইট লেটেন্সি বৃদ্ধি হয়।
- অধিকসংখ্যক write node যোগ হোৱাৰ লগে লগে আৰু latency বাঢ়ি যোৱাৰ লগে লগে conflict resolution অধিক প্ৰাসংগিক হৈ পৰে।
- Master-slave আৰু master-master উভয়ৰ ক্ষেত্ৰত প্ৰযোজ্য point-সমূহৰ বাবে অসুবিধা(সমূহ): প্ৰতিলিপি চাওক।
- যদি master-এ ব্যৰ্থ হয় আৰু কোনো নতুন লিখা data অন্য node-সমূহলৈ প্ৰতিলিপি হোৱাৰ আগতে, data হেৰাই যাবৰ সম্ভাৱনা থাকে।
- লেখাসমূহ read replica-সমূহলৈ পুনৰ বাজোৱা হয়। যদি বহুত write থাকে, তেন্তে read replica-সমূহ write-সমূহ পুনৰ বাজোৱাত ব্যস্ত হৈ পৰে আৰু যথেষ্ট সংখ্যক read কৰিব নোৱাৰে।
- অধিকসংখ্যক read slave থাকিলে, অধিক প্ৰতিলিপি কৰিব লাগিব, যাৰ ফলত প্ৰতিলিপি lag বাঢ়ে।
- কিছুমান ব্যৱস্থাত, master-লৈ লিখাৰ সময়ত একাধিক thread-এ সমান্তৰালভাৱে লিখাৰ কাজ আৰম্ভ কৰিব পাৰে, কিন্তু read replica-সমূহ কেৱল single thread-এ sequential লিখা সমৰ্থন কৰে।
- প্ৰতিলিপি কৰাত অধিক hardware আৰু অতিৰিক্ত জটিলতা যোগ হয়।
উৎস: Scaling up to your first 10 million users
ফেডাৰেচন (অথবা functional partitioning) ডাটাবেইজসমূহক function অনুসৰি বিভাজিত কৰে। উদাহৰণস্বৰূপ, এটা single, monolithic ডাটাবেইজৰ পৰিৱর্তে, আপুনি তিনিটা ডাটাবেইজ ৰাখিব পাৰে: forums, users, আৰু products, যাৰ ফলত প্ৰতিটো ডাটাবেইজত read আৰু write traffic কম হয় আৰু সেই অনুসৰি প্ৰতিলিপি lag কম হয়। সৰু ডাটাবেইজৰ বাবে অধিক data memory-ত সংৰক্ষণ কৰিব পাৰি, যাৰ ফলত cache locality উন্নত হোৱাৰ বাবে অধিক cache hit হয়। কোনো এটা কেন্দ্ৰীয় master-এ write serialise নকৰাত আপুনি সমান্তৰালভাৱে লিখিব পাৰে, যাৰ ফলত throughput বাঢ়ে।
##### অসুবিধা(সমূহ): ফেডাৰেচন
- যদি আপোনাৰ schema-ত বৃহৎ function বা tableৰ প্ৰয়োজন হয়, তেন্তে ফেডাৰেচন প্ৰভাৱশালী নহয়।
- ক'ত read আৰু write কৰিব লাগিব, সেইটো নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ application logic আপডেট কৰিব লাগিব।
- দুটা ডাটাবেইজৰ data join কৰাটো server link-ৰ সহায়ত অধিক জটিল।
- ফেডাৰেচন-এ অধিক hardware আৰু অতিৰিক্ত জটিলতা যোগ কৰে।
উৎস: Scalability, availability, stability, patterns
Sharding-এ তথ্য বিৱিধ ডাটাবেছত বিতৰণ কৰা হয়, যাতে প্ৰতিটো ডাটাবেছ কেৱল তথ্যৰ এটা অংশহে পৰিচালনা কৰিব পাৰে। উদাহৰণস্বৰূপে, যদি এটা users database লৈ ধৰা হয়, ব্যৱহাৰকাৰীৰ সংখ্যা বৃদ্ধি হোৱা অনুসৰি, ক্লাষ্টাৰত অধিক shard যোগ কৰা হয়।
federation-ৰ সুবিধাসমূহৰ দৰে, sharding-এ কম পঢ়া আৰু লিখা traffic, কম replication, আৰু অধিক cache hit ফলাফল কৰে। Index-ৰ আকাৰো কম হয়, যাৰ ফলত সাধাৰণতে query অধিক দ্ৰুত হয়। যদি এটা shard ডাউন হয়, আন shardবোৰ চলি থাকে, যদিও data loss ৰোধ কৰিবলৈ replication ব্যৱহাৰ কৰিব লাগিব। Federation-ৰ দৰে, ইয়াতো লিখা serialization কৰা এটা কেন্দ্ৰীয় master নাই, ফলত সমান্তৰালভাৱে লিখা সম্ভব আৰু throughput বৃদ্ধি হয়।
ব্যৱহাৰকাৰীৰ table shard কৰাৰ সাধাৰণ পদ্ধতি হৈছে ব্যৱহাৰকাৰীৰ নামৰ আৰম্ভণি অক্ষৰ বা ভূগোলিক স্থান অনুসৰি।
##### অসুবিধা(সমূহ): sharding
- Shard-ৰ সৈতে কাম কৰিবলৈ আপোনাৰ application logic আপডেট কৰিব লাগিব, যাৰ বাবে জটিল SQL query হ’ব পাৰে।
- Shard-ত তথ্যৰ বিতৰণ অসমতল হ’ব পাৰে। উদাহৰণস্বৰূপে, কোনো shard-ত অধিক শক্তিশালী ব্যৱহাৰকাৰী থাকিলে, সেই shard-ত অধিক লোড হব পাৰে।
- Rebalancing-এ অধিক জটিলতা যোগায়। consistent hashing-ত আধাৰিত sharding function-এ স্থানান্তৰিত তথ্যৰ পৰিমাণ কমাব পাৰে।
- একাধিক shard-ৰ পৰা তথ্য যুক্ত কৰা অধিক জটিল।
- Sharding-এ অধিক hardware আৰু বৃদ্ধি হোৱা জটিলতা যোগায়।
Denormalization-এ কিছু লিখা performance-ৰ বিনিময়ত পঢ়াৰ performance উন্নত কৰিবলৈ চেষ্টা কৰে। তথ্যৰ অতিৰিক্ত প্ৰতিলিপি বহুবিধ table-ত লিখা হয়, যাতে ব্যয়বহুল join এড়াই যায়। PostgreSQL আৰু Oracle-ৰ দৰে কিছু RDBMS-এ materialized views সমৰ্থন কৰে, যিয়ে অতিৰিক্ত তথ্য সংৰক্ষণ আৰু প্ৰতিলিপি একে ৰাখিবলৈ কাম কৰে।
federation আৰু sharding-ৰ দৰে পদ্ধতিত তথ্য বিতৰণ হোৱাৰ পাছত, data center-ত join পৰিচালনা অধিক জটিল হয়। Denormalization-এ এনে জটিল join-ৰ প্ৰয়োজনীয়তা এড়াই যাব পাৰে।
বেশিভাগ ব্যৱস্থাত, পঢ়া লিখাৰ তুলনাত ১০০:১ বা ১০০০:১ হ’ব পাৰে। জটিল database join-ৰ ফলত পঢ়া খুব ব্যয়বহুল হ’ব পাৰে, আৰু disk operation-ত অধিক সময় ব্যয় হয়।
##### অসুবিধা(সমূহ): denormalization
- Data-ৰ প্ৰতিলিপি হয়।
- Constraint-এ অতিৰিক্ত প্ৰতিলিপি sync ৰখাত সহায় কৰে, যাৰ বাবে database design-ৰ জটিলতা বৃদ্ধি পায়।
- Heavy write load-ত denormalized database-এ normalized counterpart-তকৈ বেয়া performance দিব পাৰে।
SQL টিউনিং এটা বিস্তৃত বিষয় আৰু বহু কিতাপ ৰেফাৰেঞ্চ হিচাপে লিখা হৈছে।
বেঞ্চমাৰ্ক আৰু প্ৰ’ফাইল কৰা গুৰুত্বপূর্ণ যাতে বটলনেক চিহ্নিত আৰু অনুকৰণ কৰিব পাৰি।
- বেঞ্চমাৰ্ক - ab যেনে টুল ব্যৱহাৰ কৰি উচ্চ-লোড পৰিস্থিতি অনুকৰণ কৰক।
- প্ৰ’ফাইল - slow query log যেনে টুল সক্ৰিয় কৰক যাতে কার্যক্ষমতা সমস্যাসমূহ শনাক্ত কৰিব পাৰি।
##### স্কিমা আঁট কৰি লওক
- MySQL এ ডিস্কত সংলগ্ন ব্লকত ডাম্প কৰে যাতে দ্ৰুত এক্সেছ হয়।
- স্থায়ী দৈৰ্ঘ্যৰ ক্ষেত্ৰৰ বাবে
CHARব্যৱহাৰ কৰকVARCHARৰ পৰিৱৰ্তে। CHARএ কার্যকৰীভাৱে দ্ৰুত, ৰেণ্ডম এক্সেছৰ সুবিধা দিয়ে, যেতিয়াVARCHARত, পাছত চাবলৈ আগতে ষ্ট্ৰিংৰ শেষটো বিচাৰি উলিয়াব লাগে।- ব্লগ পোষ্টৰ দৰে ডাঙৰ টেক্সট ব্লকৰ বাবে
TEXTব্যৱহাৰ কৰক।TEXTএ বুলিয়ান অনুসন্ধানৰ সুবিধা দিয়ে।TEXTক্ষেত্ৰ ব্যৱহাৰ কৰিলে ডিস্কত এটা পইণ্টাৰ সংৰক্ষণ হয় যি টেক্সট ব্লক লোকেট কৰিবলৈ ব্যৱহৃত হয়। - ডাঙৰ সংখ্যাৰ বাবে
INTব্যৱহাৰ কৰক, 2^32 বা 4 বিলিয়ন পৰ্যন্ত। - মুদ্ৰাৰ বাবে
DECIMALব্যৱহাৰ কৰক যাতে ফ্লোটিং পইণ্ট প্ৰতিনিধিত্বৰ ভুল এড়ানো যায়। - ডাঙৰ
BLOBসংৰক্ষণ এড়াওক, তাৰ অৱস্থান সংৰক্ষণ কৰক। VARCHAR(255)হৈছে আটাইতকৈ ডাঙৰ সংখ্যক অক্ষৰ যি 8 বিট সংখ্যাত গণনা কৰিব পাৰি, বহু RDBMS-ত এটা বাইটৰ সদ্ব্যৱহাৰ সাধাৰণতে।- প্ৰযোজ্য ক্ষেত্ৰত
NOT NULLconstraint সেট কৰক যাতে search performance উন্নত হয়।
- যি কলামত আপুনি query কৰিছে (
SELECT,GROUP BY,ORDER BY,JOIN) সেইবোৰত ইনডেক্স থাকিলে অধিক দ্ৰুত হ’ব পাৰে। - ইনডেক্স সাধাৰণতে আত্ম-সাম্যাবস্থাসম্পন্ন B-tree হিচাপে প্ৰতিনিধিত্ব কৰা হয়, যি ডাটা sorted ৰাখে আৰু অনুসন্ধান, ক্রমিক এক্সেছ, insertion, আৰু deletion লগাৰিদমিক সময়ত কৰে।
- ইনডেক্স স্থাপন কৰিলে ডাটা মেম’ৰীত ৰাখিব পাৰে, অধিক স্থানৰ প্ৰয়োজন হয়।
- Write সমূহো মন্থৰ হ’ব পাৰে কাৰণ ইনডেক্সো আপডেট কৰিব লাগে।
- ডাঙৰ পৰিমাণৰ ডাটা লোড কৰাৰ সময়ত, ইনডেক্স নিষ্ক্ৰিয় কৰি, ডাটা লোড কৰি, তাৰ পিছত ইনডেক্স পুনঃনির্মাণ কৰাটো অধিক দ্ৰুত হ’ব পাৰে।
- ডিনৰ্মেলাইজ কৰক যেতিয়া কার্যক্ষমতাৰ দাবী থাকে।
- এটা টেবুল ভাঙি দিয়া, হট স্পটবোৰ পৃথক টেবুলত ৰাখক যাতে ইয়াক মেমৰীত ৰখা সহজ হয়।
- কেতবোৰ ক্ষেত্ৰত, কুৱাৰী কেচ এ পাৰফৰ্মেন্স সমস্যাৰ সৃষ্টি কৰিব পাৰে।
- MySQL কুৱাৰী অপ্টিমাইজ কৰাৰ টিপছ
- VARCHAR(255) কেনে বহু পৰিমাণে ব্যৱহাৰ কৰা হয় তাৰ ভাল কাৰণ আছে নেকি?
- NULL মানবোৰে পাৰফৰ্মেন্সত কেনেকৈ প্ৰভাৱ পেলায়?
- Slow query log
NoSQL
NoSQL হৈছে তথ্যবস্তুৰ এক সংগ্ৰহ, যি key-value store, document store, wide column store, অথবা graph databaseৰ ৰূপত প্ৰতিনিধিত্ব কৰা হয়। তথ্য ডিনৰ্মেলাইজ কৰা হয়, আৰু সাধাৰণতে যোগ (join)বোৰ এপ্লিকেচন ক’ডত কৰা হয়। বেছিভাগ NoSQL ষ্টোৰত সত্যিকাৰ ACID লেন-দেন নাথাকে আৰু eventual consistencyক প্ৰাধান্য দিয়ে।
BASE সাধাৰণতে NoSQL ডাটাবেছৰ গুণাবলী বৰ্ণনা কৰিবলৈ ব্যৱহাৰ হয়। CAP Theoremৰ লগত তুলনা কৰিলে, BASE-এ consistencyৰ তুলনাত availabilityক বেছি প্ৰাধান্য দিয়ে।
- Basically available - ব্যৱস্থাই উপলব্ধতা গেৰাণ্টি দিয়ে।
- Soft state - ব্যৱস্থাৰ অৱস্থা সময়ৰ লগত, ইনপুট নোহোৱাকৈয়ো, সলনি হ’ব পাৰে।
- Eventual consistency - ব্যৱস্থাই সময়ৰ লগত consistent হৈ যাব, যদি সেই সময়ছোৱাত ব্যৱস্থাই ইনপুট নাপায়।
#### Key-value store
Abstraction: hash table
Key-value store সাধাৰণতে O(1) পঢ়া আৰু লিখাৰ অনুমতি দিয়ে আৰু সাধাৰণতে মেমৰি বা SSDত সংৰক্ষিত থাকে। Data stores-এ lexicographic orderত key সংৰক্ষণ কৰিব পাৰে, যাতে key ৰেঞ্জ সহজে উদ্ধাৰ কৰিব পৰা যায়। Key-value store-এ মানৰ সৈতে metadata সংৰক্ষণৰ সুবিধা দিয়ে।
Key-value store-এ উচ্চ পাৰফৰ্মেন্স দিয়ে আৰু সাধাৰণ ডাটা মডেল বা দ্রুত পৰিবৰ্তন হোৱা তথ্য, যেনে in-memory cache layerৰ বাবে ব্যৱহাৰ কৰা হয়। কাৰণ এইবোৰে কেৱল সীমিত অপাৰেশ্যন দিয়া, অতিরিক্ত অপাৰেশ্যনৰ প্ৰয়োজন হলে জটিলতা এপ্লিকেচন স্তৰত সৰিয়াই যায়।
Key-value store হৈছে অধিক জটিল ব্যৱস্থাৰ আধাৰ, যেনে document store, আৰু কেতবোৰ ক্ষেত্ৰত graph database।
##### উৎস(সমূহ) আৰু অধিক পঢ়া: key-value store
#### ডকুমেন্ট সংৰক্ষণাগাৰবিমূর্ততা: কীৰ্তি-মূল্য সংৰক্ষণাগাৰ য'ত ডকুমেন্টসমূহ মূল্য হিচাপে সংৰক্ষিত
এটা ডকুমেন্ট সংৰক্ষণাগাৰ ডকুমেন্টক কেন্দ্ৰ কৰি গঠিত (XML, JSON, বাইনেৰী, আদি), য'ত এটা ডকুমেন্টে কোনো এটা অবজেক্টৰ সকলো তথ্য সংৰক্ষণ কৰে। ডকুমেন্ট সংৰক্ষণাগাৰে API অথবা প্ৰশ্ন ভাষা প্ৰদান কৰে যাৰ সহায়ত ডকুমেন্টৰ আন্তঃ গঠন অনুসৰি সন্ধান কৰিব পৰা যায়। মন কৰিব, বহু কেইটি কীৰ্তি-মূল্য সংৰক্ষণাগাৰে মূল্যৰ মেটাডেটা ব্যৱহাৰৰ সুবিধা থাকে, যাৰ ফলত এই দুটা সংৰক্ষণ ধৰণৰ সীমা অস্পষ্ট হৈ পৰে।
মৌলিক ৰূপত, ডকুমেন্টসমূহ সংগ্ৰহ, টেগ, মেটাডেটা, অথবা ডাইৰেক্টৰীৰ দ্বাৰা সজোৱা হয়। যদিও ডকুমেন্টসমূহ সংগঠিত বা গোট কৰা যায়, ডকুমেন্টসমূহৰ ক্ষেত্ৰসমূহ সম্পূৰ্ণ ভিন্ন হ'ব পাৰে।
কিছু ডকুমেন্ট সংৰক্ষণাগাৰ যেনে MongoDB আৰু CouchDB SQL সদৃশ ভাষা প্ৰদান কৰে জটিল সন্ধান কৰিবলৈ। DynamoDB কীৰ্তি-মূল্য আৰু ডকুমেন্ট দুয়োটা সমৰ্থন কৰে।
ডকুমেন্ট সংৰক্ষণাগাৰে উচ্চ নমনীয়তা প্ৰদান কৰে আৰু সাধাৰণতে কেতিয়াবা পৰিবৰ্তন হোৱা তথ্যৰ সৈতে কাম কৰিবলৈ ব্যৱহৃত হয়।
##### উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ: ডকুমেন্ট সংৰক্ষণাগাৰ
#### Wide column সংৰক্ষণাগাৰ
উৎস: SQL & NoSQL, এখন সংক্ষেপ ইতিহাস
বিমূর্ততা: nested map ColumnFamily> Wide column সংৰক্ষণাগাৰৰ মূখ্য তথ্য একক হৈছে এটা কলাম (নাম/মূল্য জোৰ)। এটা কলাম কলাম পৰিয়ালত গোট কৰিব পৰা যায় (SQL টেবুলৰ সদৃশ)। Super column পৰিয়ালে আৰু অধিক কলাম পৰিয়াল গোট কৰে। আপুনি প্ৰত্যেক কলামক ৰ' কীৰ্তিৰে স্বাধীনভাৱে লাভ কৰিব পাৰে, আৰু একে ৰ' কীৰ্তিৰ কলামসমূহে ৰ' গঠন কৰে। প্ৰতিটো মূল্যত সংস্কৰণৰ বাবে আৰু দ্বন্দ্ব সমাধানৰ বাবে টাইমষ্টেম্প থাকে।
Google-এ Bigtable Wide column সংৰক্ষণাগাৰৰ প্ৰথম সংস্কৰণ হিচাপে উন্মোচন কৰিছিল, যিয়ে ওপেন-চ'র্স HBaseক প্ৰভাৱিত কৰিছে, যি সাধাৰণতে Hadoop ecosystem-ত ব্যৱহৃত হয়, আৰু Cassandra Facebook-ৰ পৰা। BigTable, HBase, আৰু Cassandra-ৰ দৰে সংৰক্ষণাগাৰে কীৰ্তিসমূহ লেক্সিকোগ্ৰাফিক অনুক্ৰমত ৰাখে, যাৰ সহায়ত নিৰ্বাচিত কীৰ্তিৰ পৰিসৰ সহজে উদ্ধাৰ কৰিব পৰা যায়।
Wide column সংৰক্ষণাগাৰে উচ্চ উপলব্ধতা আৰু উচ্চ স্কেলেবিলিটি প্ৰদান কৰে। ই সাধাৰণতে অতি বৃহৎ তথ্য সংগ্ৰহৰ বাবে ব্যৱহৃত হয়।
##### উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ: wide column সংৰক্ষণাগাৰ
#### গ্ৰাফ ডাটাবেচবিমূর্তকৰণ: গ্ৰাফ
এটা গ্ৰাফ ডাটাবেচত, প্ৰতিটো নোড এটা ৰেকৰ্ড আৰু প্ৰতিটো আৰ্ক দুটা নোডৰ মাজত এখন সম্পৰ্ক। গ্ৰাফ ডাটাবেচসমূহ জটিল সম্পৰ্ক, বহু বিদেশী চাবি অথবা বহু-ত-many সম্পৰ্ক দেখুওৱাত অপ্টিমাইজ কৰা।
গ্ৰাফ ডাটাবেচসমূহ জটিল সম্পৰ্ক থকা ডাটা মডেলত, যেনে এটা ছচিয়েল নেটৱৰ্কত, উচ্চ কাৰ্যক্ষমতা প্ৰদান কৰে। এইবোৰ তুলনামূলকভাৱে নতুন আৰু এতিয়াও ব্যাপকভাৱে ব্যৱহৃত নহয়; বিকাশৰ সঁজুলি আৰু উৎস পোৱা কঠিন হ’ব পাৰে। বহু গ্ৰাফ কেৱল REST API ৰ জৰিয়তে এক্সেছ কৰিব পাৰি।
##### উৎস(সমূহ) আৰু অধিক পঢ়িবৰ বাবে: গ্ৰাফ
#### উৎস(সমূহ) আৰু অধিক পঢ়িবৰ বাবে: NoSQL- বেইচ শব্দৰ ব্যাখ্যা
- NoSQL ডাটাবেচসমূহ: এটা সমীক্ষা আৰু সিদ্ধান্ত গাইডেন্স
- স্কেলেবিলিটি
- NoSQL ৰ পৰিচয়
- NoSQL পেটাৰ্ন
SQL না NoSQL
উৎস: RDBMS ৰ পৰা NoSQL লৈ সলনি
SQL-ৰ কাৰণসমূহ:
- গঠনযুক্ত ডাটা
- কঠোৰ স্কিমা
- সম্পৰ্কিত ডাটা
- জটিল জইন্ৰ আৱশ্যকতা
- লেনদেন
- স্কেলিংৰ বাবে স্পষ্ট পেটাৰ্ন
- অধিক প্ৰতিষ্ঠিত: ডেভেলপাৰ, কমিউনিটি, ক'ড, টুল আদি
- ইণ্ডেক্স দ্বাৰা লুকআপ অত্যন্ত দ্ৰুত
- আধা-গঠনযুক্ত ডাটা
- ডাইনামিক বা নমনীয় স্কিমা
- অসম্পৰ্কিত ডাটা
- জটিল জইন্ৰ আৱশ্যকতা নাই
- বহু TB (বা PB) ডাটা সংৰক্ষণ
- অত্যন্ত ডাটা-ইনটেন্সিভ ৱৰ্কলোড
- IOPS-ৰ বাবে অত্যাধিক উচ্চ থ্ৰুপুট
- ক্লিকষ্ট্ৰীম আৰু লগ ডাটাৰ দ্ৰুত ইনজেষ্ট
- লিডাৰব'ৰ্ড বা স্ক'ৰিং ডাটা
- অস্থায়ী ডাটা, যেনে শ্বপিং কাৰ্ট
- প্ৰায়েই ব্যৱহৃত ('হট') টেবুলসমূহ
- মেটাডাটা/লুকআপ টেবুলসমূহ
কেশ
উৎস: স্কেলেবল চিষ্টেম ডিজাইন পেটাৰ্ন
কেচিংয়ে পৃষ্ঠা লোড সময় উন্নত কৰে আৰু আপোনাৰ ছাৰ্ভাৰ আৰু ডেটাবেইচসমূহৰ ওপৰত লোড কমাই। এই মডেলত, ডিসপেচাৰে প্ৰথমে অনুৰোধ আগতে কৰা হৈছিল নে নাই চাব আৰু আগৰ ফলাফল উভতাই দিবলৈ চেষ্টা কৰিব, যাতে আসল এক্সিকিউশ্বন বচোৱা যায়।
ডেটাবেইচসমূহে প্ৰায়ে তাৰ পাৰ্টিশনসমূহত পঢ়া আৰু লিখাৰ একসাৰ সম্প্ৰচাৰিত হোৱাৰ পৰা লাভ কৰে। জনপ্ৰিয় আইটেমসমূহে সম্প্ৰচাৰিতত বিকৃতি ঘটাব পাৰে, যাৰ ফলত বটলনেক সৃষ্টি হয়। এখন ডেটাবেইচৰ আগত কেচ থৈ দিলে অসামান্য লোড আৰু ট্ৰাফিকৰ স্পাইকসমূহ শোষণ কৰাত সহায় কৰে।
ক্লায়েন্ট কেচিং
কেচসমূহ ক্লায়েন্ট পাশত (অ' এছ বা ব্ৰাউজাৰ), ছাৰ্ভাৰ পাশত, অথবা পৃথক কেচ স্তৰত অৱস্থিত হ’ব পাৰে।
CDN কেচিং
CDN সমূহ কেচৰ এটা প্ৰকাৰ বুলি গণ্য কৰা হয়।
ৱেব ছাৰ্ভাৰ কেচিং
Reverse proxies আৰু Varnish যেনে কেচসমূহে স্থায়ী আৰু গতিশীল বিষয়বস্তু সিধাসলাই দাঙি দিব পাৰে। ৱেব ছাৰ্ভাৰসমূহেও অনুৰোধসমূহ কেচ কৰিব পাৰে, যাতে অ্যাপ্লিকেশ্যন ছাৰ্ভাৰসমূহক যোগাযোগ নকৰাকৈ প্ৰতিক্ৰিয়া উভতাই দিব পাৰে।
ডেটাবেইচ কেচিং
আপোনাৰ ডেটাবেইচত সাধাৰণ ব্যৱহাৰৰ বাবে অপ্টিমাইজ কৰা ডিফল্ট কনফিগাৰেশ্যনত কিছু পৰিমাণৰ কেচিং থাকে। এই ছেটিংসমূহ বিশেষ ব্যৱহাৰ পেটাৰ্নৰ বাবে সলনি কৰিলে আরও অধিক পারফৰ্মেন্স বৃদ্ধি কৰিব পাৰে।
অ্যাপ্লিকেশ্যন কেচিং
Memcached আৰু Redis যেনে ইন-মেম'ৰী কেচসমূহ হৈছে আপোনাৰ অ্যাপ্লিকেশ্যন আৰু ডেটা সংৰক্ষণৰ মাজত কী-ভেল্যু ষ্ট'ৰ। ডেটা RAM-ত সংৰক্ষণ কৰা হোৱাৰ বাবে, ই সাধাৰণ ডেটাবেইচতকৈ বহুত বেছি দ্ৰুত, য’ত ডেটা ডিস্কত সংৰক্ষণ কৰা হয়। RAM-ৰ স্থান সীমিত, সেয়ে কেচ ইনভেলিডেশ্যন এলগৰিদম যেনে least recently used (LRU)) 'ঠাণ্ডা' এণ্ট্ৰিসমূহ ইনভেলিডেট কৰি 'গৰম' ডেটা RAM-ত ৰাখিবলৈ সহায় কৰে।
Redis-ত তলত দিয়া অতিৰিক্ত বৈশিষ্ট্যসমূহ আছে:
- স্থায়ীত্বৰ বিকল্প
- সাজি থকা ছেট আৰু তালিকা যেনে বিল্ট-ইন ডেটা ষ্ট্ৰাকচাৰ
- ৰো স্তৰ
- কুয়েরি-স্তৰ
- সম্পূৰ্ণ গঠিত ছিৰিয়েলাইজযোগ্য অবজেক্টসমূহ
- সম্পূৰ্ণ-ৰেণ্ডাৰ কৰা HTML
ডাটাবেছ কুৱেৰীৰ স্তৰত কেছিং
যেতিয়া আপুনি ডাটাবেছ কুৱেৰী কৰে, কুৱেৰীক এটা কী হিচাপে হেছ কৰি ফলাফলটো কেছত সংৰক্ষণ কৰক। এই পদ্ধতিটো মেয়াদ উত্তীৰ্ণ হোৱাৰ সমস্যাত ভুগে:
- জটিল কুৱেৰীৰ সৈতে কেছ কৰা ফলাফল ডিলিট কৰা কঠিন
- যদি এটা টেবুল চেলৰ দৰে এটা অংশৰ ডাটা সলনি হয়, তেন্তে সেই চেলটো সন্নিৱিষ্ট থকা সকলো কেছ কৰা কুৱেৰী ডিলিট কৰিব লাগিব
অবজেক্ট স্তৰত কেছিং
আপোনাৰ ডাটাটো অবজেক্ট হিচাপে চাওক, আপোনাৰ এপ্লিকেচন ক’ডৰ দৰে। আপোনাৰ এপ্লিকেচনে ডাটাবেছৰ পৰা ডাটাসেটটো ক্লাছ ইনষ্টেন্স বা ডাটা ষ্ট্ৰাকচাৰ(সমূহ)ত সংহত কৰক:
- যদি অবজেক্টটোৰ অন্তর্নিহিত ডাটা সলনি হয়, তেতিয়া কেছৰ পৰা অবজেক্টটো আঁতৰাওক
- অসমান্তৰাল প্ৰসেছিঙৰ সুবিধা: কৰ্মীৰে শেহতীয়া কেছ কৰা অবজেক্ট খাই অবজেক্ট সংহত কৰিব পাৰে
- ব্যৱহাৰকাৰীৰ চেছন
- সম্পূৰ্ণ ৰূপে ৰেণ্ডাৰ কৰা ৱেব পৃষ্ঠা
- কাৰ্যকলাপ ষ্ট্ৰীম
- ব্যৱহাৰকাৰীৰ গ্ৰাফ ডাটা
কেতিয়া কেছ আপডেট কৰিব
কেছত সীমিত পৰিমাণৰ ডাটা সংৰক্ষণ কৰিব পাৰি, সেইবাবে আপোনাৰ ব্যৱহাৰ ক্ষেত্ৰত কোনটো কেছ আপডেট কৌশল উত্তম সেইটো নিৰ্ধাৰণ কৰিব লাগিব।
#### কেছ-এছাইড
Source: From cache to in-memory data grid
এপ্লিকেচনটোৱে ষ্ট’ৰেজৰ পৰা পঢ়া আৰু লিখাৰ দায়িত্ব লয়। কেছটোৱে সোজাকৈ ষ্ট’ৰেজৰ সৈতে সম্পৰ্ক নেথাকে। এপ্লিকেচনটোৱে তলত উল্লেখ কৰা কামবোৰ কৰে:
- কেছত প্ৰৱিষ্টিৰ সন্ধান কৰে, ফলত কেছ মিছ হয়
- ডাটাবেছৰ পৰা প্ৰৱিষ্টি লোড কৰে
- প্ৰৱিষ্টিটো কেছত যোগ কৰে
- প্ৰৱিষ্টিটো উভতি দিয়ে
def get_user(self, user_id):
user = cache.get("user.{0}", user_id)
if user is None:
user = db.query("SELECT * FROM users WHERE user_id = {0}", user_id)
if user is not None:
key = "user.{0}".format(user_id)
cache.set(key, json.dumps(user))
return user
Memcached সাধাৰণতে এইদৰে ব্যৱহাৰ কৰা হয়।কেশত যোগ কৰা ডেটা পুনৰ পঢ়া তীব্ৰ গতিত হয়। কেশ-এছাইডক অলস লোডিং বুলি জনা যায়। কেৱল অনুৰোধ কৰা ডেটাহে কেশত সংৰক্ষণ কৰা হয়, যাৰ ফলত অনুৰোধ নকৰা ডেটাৰে কেশ ভৰি নাযায়।
##### অসুবিধা(সমূহ): কেশ-এছাইড
- প্ৰতিটো কেশ মিছত তিনি বাৰ যাত্ৰা লাগে, যাৰ ফলত উল্লেখযোগ্য বিলম্ব হ’ব পাৰে।
- ডেটাবেছত আপডেট কৰিলে ডেটা পুৰণি হৈ পৰিব পাৰে। এই সমস্যাটো সমাধান কৰিবলৈ টাইম-টু-লাইভ (TTL) নিৰ্ধাৰণ কৰা হয়, যিয়ে কেশ এণ্ট্ৰিটোৰ আপডেট বাধ্যতামূলক কৰে, অথবা ৰাইট-থ্ৰু ব্যৱহাৰ কৰা হয়।
- এটা নোড বিফল হ’লে, নতুন, খালী নোডে প্ৰতিস্থাপন হয়, যাৰ ফলত লেটেঞ্চি বৃদ্ধি পায়।
উৎস: Scalability, availability, stability, patterns
এপ্লিকেচনে কেশক মুখ্য ডেটা ষ্ট’ৰ হিচাপে ব্যৱহাৰ কৰে, ইয়াত ডেটা পঢ়া আৰু লিখাৰ কাম কৰে, আৰু কেশে ডেটাবেছত পঢ়া আৰু লিখাৰ দায়িত্ব লয়:
- এপ্লিকেচনে কেশত এণ্ট্রি যোগ/আপডেট কৰে
- কেশে ছিঁচ্ৰণভাৱে এণ্ট্রি ডেটা ষ্ট’ৰত লিখে
- উভতি আহে
set_user(12345, {"foo":"bar"})কেশ ক'ড:
def set_user(user_id, values):
user = db.query("UPDATE Users WHERE id = {0}", user_id, values)
cache.set(user_id, user)Write-through এটা ধীৰ গতিৰ সামগ্ৰিক কাৰ্যপদ্ধতি, লিখা কাৰ্যপদ্ধতিৰ বাবে, কিন্তু মাত্ৰ লিখা হোৱা ডেটা পঢ়াৰ পিছৰ কাৰ্যপদ্ধতি তীব্ৰ। ব্যৱহাৰকাৰীসকলে সাধাৰণতে ডেটা আপডেট কৰাৰ সময়ত অধিক বিঢ়তিৰ সহনশীল, ডেটা পঢ়াৰ সময়তকৈ। ক্যাশত থকা ডেটা পুৰণি নহয়।
##### অপৰিসীম(s): write through
- কোনো নতুন নোড সৃষ্টি হ'লে, বিপৰ্যয় বা স্কেলিংৰ বাবে, নতুন নোডে ক্যাশত এণ্ট্রি সংৰক্ষণ নকৰে যতক্ষণ না সেই এণ্ট্রি ডেটাবেইচত আপডেট হয়। Cache-aside write-throughৰ সৈতে একত্ৰিত কৰি এই সমস্যাটো কম কৰিব পাৰি।
- অধিকাংশ লিখা ডেটা হয়তো কেতিয়াও পঢ়া নহয়, যাক TTL ব্যৱহাৰ কৰি কম কৰিব পাৰি।
উৎস: Scalability, availability, stability, patterns
Write-behindত, এপ্লিকেশনে তলত দিয়া কামবোৰ কৰে:
- ক্যাশত এণ্ট্রি যোগ/আপডেট কৰা
- এণ্ট্রি ডেটা ষ্ট'ৰলৈ asynchronous ৰূপে লিখা, লিখা কর্মক্ষমতা উন্নত কৰা
- যদি ক্যাশ ডাউন হয় ডেটা ষ্ট'ৰলৈ সংৰক্ষণ কৰাৰ আগতে, তেন্তে ডেটা হেৰুৱা সম্ভৱ।
- Write-behind বাস্তৱায়ন কৰা cache-aside বা write-throughতকৈ অধিক জটিল।
উৎস: From cache to in-memory data grid
আপুনি ক্যাশটো কনফিগাৰ কৰিব পাৰে যাতে যিকোনো নতুনকৈ এক্সেছ কৰা ক্যাশ এণ্ট্রি তাৰ মেয়াদ শেষ হোৱাৰ আগতে স্বয়ংক্ৰিয়ভাৱে ৰিফ্ৰেশ হয়।
Refresh-aheadত latency কম হ’ব পাৰে read-throughতকৈ, যদি ক্যাশে ঠিককৈ অনুমান কৰিব পাৰে যে কোন বস্তু আগলৈ প্ৰয়োজন হ’ব।
##### অপৰিসীম(s): refresh-ahead
- ভবিষ্যতে কোন বস্তুসমূহৰ প্ৰয়োজন হ’ব পাৰে, তাৰ সঠিকভাৱে পূৰ্বাভাস নকৰিলে refresh-ahead নথকা অৱস্থাতকৈ কম কাৰ্যক্ষমতা দেখা দিব পাৰে।
অসুবিধা(সমূহ): কেশ
- কেশ আৰু মূল তথ্য উৎস যেনে ডেটাবেইচৰ মাজত সঙ্গতি বজাই ৰাখিব লাগিব কেশ invalidationৰ জৰিয়তে।
- কেশ invalidation এটা কঠিন সমস্যা, কেশ কেতিয়া আপডেট কৰিব লাগে, সেই বিষয়ত অতিৰিক্ত জটিলতা থাকে।
- Redis বা memcached যোগ কৰাৰ দৰে এপ্লিকেশ্যন পৰিবৰ্তন কৰিব লাগিব।
উৎস(সমূহ) আৰু অধিক পঢ়া
- কেশৰ পৰা ইন-মেমৰি ডাটা গ্ৰিডলৈ
- স্কেলেবল ছিষ্টেম ডিজাইন পেটাৰ্ন
- স্কেলৰ বাবে ছিষ্টেম আৰ্কিটেক্টিংৰ পৰিচয়
- স্কেলেবিলিটি, উপলব্ধতা, স্থিতিশীলতা, পেটাৰ্ন
- স্কেলেবিলিটি
- AWS ElastiCache কৌশল
- উইকিপিডিয়া)
অসময়তাবাদ
উৎস: স্কেলৰ বাবে ছিষ্টেম আৰ্কিটেক্টিংৰ পৰিচয়
অসময়তাবাদী workflow-এ মূল্যবান অপাৰেশ্যনসমূহৰ অনুৰোধ সময় কমাবলৈ সহায় কৰে, যিবোৰ সাধাৰণতে ইন-লাইনত কৰা হ’লেহেঁতেন। এইবোৰে আগতীয়াকৈ সময়-খৰচী কাম আদায় কৰাৰ দ্বাৰাও সহায় কৰিব পাৰে, যেনে সময় সময়ত ডেটা aggregat কৰা।
মেছেজ কিউসমূহ
মেছেজ কিউসমূহে মেছেজ গ্ৰহণ, সংৰক্ষণ আৰু বিতৰণ কৰে। যদি এটা অপাৰেশ্যন ইন-লাইনত কৰা বাবে ধীৰ হয়, তেন্তে নিম্নলিখিত workflow-ৰ সৈতে মেছেজ কিউ ব্যৱহাৰ কৰিব পাৰে:
- এটা এপ্লিকেশ্যনে কিউত এটা চাকৰি প্ৰকাশ কৰে, তাৰ পিছত ব্যৱহাৰকাৰীক চাকৰি স্থিতি জানিবলৈ দিয়ে
- এটা worker-এ কিউৰ পৰা চাকৰি লৈ, প্ৰক্ৰিয়া কৰে, তাৰ পিছত চাকৰি সম্পূৰ্ণ হোৱাৰ সংকেত দিয়ে
Redis এটা সহজ মেছেজ broker হিচাপে উপযোগী, কিন্তু মেছেজ হেৰাই যাব পাৰে।
RabbitMQ জনপ্ৰিয়, কিন্তু 'AMQP' প্ৰ’টোকল অনুসৰণ কৰিব আৰু নিজৰ node-সমূহ পৰিচালনা কৰিব লাগিব। Amazon SQS হোষ্ট কৰা হৈছে কিন্তু ইয়াত উচ্চ বিলম্বতা থাকিব পাৰে আৰু বাৰ্তা দুবাৰ প্ৰেৰণ হোৱাৰ সম্ভাৱনা আছে।
Task queues
Task queues-এ কাৰ্য আৰু তাৰ লগত সংযুক্ত তথ্য গ্ৰহণ কৰে, সেইবোৰ চলায়, আৰু তাৰ ফলাফল প্ৰেৰণ কৰে। এইবোৰে সময় নিৰ্ধাৰণৰ সমৰ্থন কৰে আৰু পটভূমিত পৰিসংখ্যা-ভিত্তিক কাম চলাবলৈ ব্যৱহাৰ কৰিব পৰা যায়।
Celery-এ সময় নিৰ্ধাৰণৰ সমৰ্থন আছে আৰু প্ৰাথমিকভাৱে Python-ৰ সমৰ্থন আছে।
Back pressure
যদি queues-ৰ আকাৰ উল্লেখযোগ্যভাৱে বৃদ্ধি পায়, তেন্তে queue-ৰ আকাৰ মেম'ৰিৰ তুলনাত বেছি হ'ব পাৰে, যাৰ ফলত cache misses, disk reads, আৰু অধিক ধীৰ গতিৰ কাৰ্যক্ষমতা দেখা যায়। Back pressure-এ queue-ৰ আকাৰ সীমিত কৰি উচ্চ throughput ৰেট আৰু ইতিমধ্যে queue-ত থকা কামৰ বাবে ভাল প্ৰতিক্ৰিয়া সময় বজাই ৰাখিবলৈ সহায় কৰে। Queue পূৰ্ণ হৈ গ'লে, ক্লায়েন্টে server busy বা HTTP 503 status code পায় আৰু পাছত পুনৰ চেষ্টা কৰিবলৈ অনুৰোধ কৰা হয়। ক্লায়েন্টে পিছত অনুৰোধ পুনৰ চেষ্টা কৰিব পাৰে, সম্ভৱত exponential backoff-ৰ সৈতে।
Disadvantage(s): asynchronism
- সস্তা গণনা আৰু realtime workflow-ৰ দৰে ব্যৱহাৰ ক্ষেত্ৰসমূহ synchronous কাৰ্যৰ বাবে অধিক উপযুক্ত হ'ব পাৰে, কিয়নো queue যোগ কৰাৰ ফলত বিলম্ব আৰু জটিলতা বৃদ্ধি পায়।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
- It's all a numbers game
- Applying back pressure when overloaded
- Little's law
- What is the difference between a message queue and a task queue?
যোগাযোগ
Hypertext transfer protocol (HTTP)
HTTP হৈছে ক্লায়েন্ট আৰু ছাৰ্ভাৰৰ মাজত তথ্য সংহতি আৰু প্ৰেৰণৰ এটা পদ্ধতি। এইটো এটা অনুৰোধ/প্ৰতিক্ৰিয়া প্ৰ'ট'কল: ক্লায়েন্টে অনুৰোধ পাঠায় আৰু ছাৰ্ভাৰে সংশ্লিষ্ট বিষয়বস্তু আৰু অনুৰোধৰ সম্পূৰ্ণতাৰ অৱস্থাৰ তথ্যৰ সৈতে প্ৰতিক্ৰিয়া প্ৰেৰণ কৰে। HTTP স্ব-নিয়ন্ত্ৰিত, অনুৰোধ আৰু প্ৰতিক্ৰিয়া বহু মধ্যস্থ ৰাউটাৰ আৰু ছাৰ্ভাৰৰ মাজেৰে যাব পাৰে, যিবোৰে load balancing, caching, encryption, আৰু compression কৰে।
এটা সাধাৰণ HTTP অনুৰোধত এটা verb (method) আৰু এটা resource (endpoint) থাকে। তলত সাধাৰণ HTTP verb-সমূহ দিয়া হৈছে:
| Verb | বিৱৰণ | Idempotent* | Safe | Cacheable |
| GET | এটা ৰিছৰ্চ পঢ়ে | হয় | হয় | হয় | | POST | এটা ৰিছৰ্চ সৃষ্টি কৰে অথবা ডাটা ব্যৱহাৰ কৰি প্ৰক্ৰিয়া আৰম্ভ কৰে | নহয় | নহয় | হয় যদি প্ৰতিক্ৰিয়াত সতেজতাৰ তথ্য থাকে | | PUT | এটা ৰিছৰ্চ সৃষ্টি কৰে বা প্ৰতিস্থাপন কৰে | হয় | নহয় | নহয় | | PATCH | এটা ৰিছৰ্চ আংশিকভাৱে আপডেট কৰে | নহয় | নহয় | হয় যদি প্ৰতিক্ৰিয়াত সতেজতাৰ তথ্য থাকে | | DELETE | এটা ৰিছৰ্চ ডিলিট কৰে | হয় | নহয় | নহয় |
বহুবাৰ কল কৰিব পাৰি, ফলাফলত কোনো পাৰ্থক্য নহয়।
HTTP এটা এপ্লিকেশ্বন লেয়াৰ প্ৰ'ট'কল, যি নিম্ন-স্তৰৰ প্ৰ'ট'কল যেনে TCP আৰু UDP-ৰ ওপৰত নিৰ্ভৰ কৰে।
#### উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ: HTTP
Transmission control protocol (TCP)
উৎস: কিদৰে মাল্টিপ্লেয়াৰ গেম বনাব
TCP হৈছে এটা সংযোগ-ভিত্তিক প্ৰ'ট'কল IP নেটৱৰ্ক-ৰ ওপৰত। সংযোগ স্থাপন আৰু সমাপ্তি handshake-ৰ দ্বাৰা হয়। সকলো পেকেট মূল অনুক্ৰম আৰু বিনা বিকৃতিৰ সৈতে গন্তব্যলৈ যাবলৈ নিশ্চিত কৰা হয়:
- প্ৰতিটো পেকেটৰ বাবে অনুক্ৰম সংখ্যা আৰু checksum fields
- Acknowledgement) পেকেট আৰু স্বয়ংক্ৰিয় পুনঃপ্ৰেৰণ
উচ্চ throughput নিশ্চিত কৰিবলৈ, ৱেব ছাৰ্ভাৰে বহুল TCP সংযোগ খোলা ৰাখিব পাৰে, যাৰ ফলত উচ্চ মেম'ৰি ব্যৱহাৰ হয়। ৱেব ছাৰ্ভাৰ থ্ৰেড আৰু উদাহৰণস্বৰূপে memcached ছাৰ্ভাৰৰ মাজত বহু সংযোগ খোলা ৰাখা ব্যয়বহুল হব পাৰে। Connection pooling সহায় কৰিব পাৰে, লগতে UDP-লৈ switch কৰাৰ চিন্তা কৰিব পাৰি।
TCP উপযোগী যেতিয়া উচ্চ reliability প্ৰয়োজন, কিন্তু সময় সংবেদনশীলতা কম। কিছুমান উদাহৰণ হৈছে ৱেব ছাৰ্ভাৰ, ডাটাবেছ তথ্য, SMTP, FTP, আৰু SSH।
UDP-ৰ পৰিৱৰ্তে TCP ব্যৱহাৰ কৰক, যেতিয়া:
- আপোনাক সকলো ডাটা অক্ষতভাৱে আহি পোৱাৰ প্ৰয়োজন
- আপুনি নেটৱৰ্ক throughputৰ সৰ্বাধিক ব্যৱহাৰৰ স্বয়ংক্ৰিয় অনুমান কৰিব বিচাৰে
ইউজাৰ ডাটাগ্ৰাম প্ৰ'ট'কল (UDP)
উৎস: মাল্টি-প্লেয়াৰ গেম কেনেকৈ বনাব
UDP সংযোগহীন। ডাটাগ্ৰাম (পেকেটৰ সদৃশ) কেৱল ডাটাগ্ৰাম স্তৰত গ্যারাণ্টি কৰা হয়। ডাটাগ্ৰামসমূহ গন্তব্যস্থানত অশৃঙ্খলভাৱে বা একেবাৰে নাও পোৱাৰ সম্ভাৱনা থাকে। UDP-ত সংকুলন নিয়ন্ত্ৰণৰ সুবিধা নাই। TCP-ৰ গ্যারাণ্টি নথকা বাবে, UDP সাধাৰণতে অধিক কাৰ্যকৰী।
UDP-এ সম্প্রচাৰ কৰিব পাৰে, অৰ্থাৎ ডাটাগ্ৰামসমূহ উপ-নেটৰ সকলো ডিভাইচলৈ পঠিয়াব পাৰে। ই DHCP-ৰ ক্ষেত্ৰত সহায়ক, কাৰণ ক্লায়েন্টে এতিয়াও IP ঠিকনা লাভ কৰা নাই, ফলত IP ঠিকনা নোহোৱাকৈ TCP-এ ষ্ট্ৰীম কৰিব নোৱাৰে।
UDP কম বিশ্বাসযোগ্য, কিন্তু VoIP, ভিডিঅ' চেট, ষ্ট্ৰীমিং, আৰু ৰিয়েলটাইম মাল্টিপ্লেয়াৰ গেমবোৰত ভাল কাম কৰে।
TCP-ৰ ওপৰত UDP ব্যৱহাৰ কৰক যেতিয়া:
- আপোনাৰ আটাইতকৈ কম বিলম্ব প্ৰয়োজন
- দেৰিতে অহা তথ্য হেৰুৱা তথ্যতকৈ বেয়া
- আপোনায়ে নিজৰ ত্ৰুটি সংশোধন ব্যৱস্থা কৰিব বিচাৰে
- গেম প্ৰগ্ৰামিংৰ বাবে নেটৱৰ্কিং
- TCP আৰু UDP প্ৰ'ট'কলৰ মুখ্য পাৰ্থক্য
- TCP আৰু UDP-ৰ পাৰ্থক্য
- ট্ৰান্সমিশন কণ্ট্ৰ'ল প্ৰ'ট'কল
- ইউজাৰ ডাটাগ্ৰাম প্ৰ'ট'কল
- Facebook-ত Memcache স্কেলিং
ৰিম'ট প্ৰ'চিজাৰ কল (RPC)
উৎস: Crack the system design interview
RPC-ত, ক্লায়েন্টে এটা প্ৰ'চিজাৰ এটা বেলেগ ঠিকনা স্থানত, সাধাৰণতে এটা ৰিম'ট চাৰ্ভাৰত চলায়। প্ৰ'চিজাৰটো এনে ধৰণে কোড কৰা হয় যেন ই এটা স্থানীয় প্ৰ'চিজাৰ কল, আৰু ক্লায়েন্ট প্ৰগ্ৰামৰ পৰা চাৰ্ভাৰৰ সৈতে যোগাযোগৰ বিৱৰণবোৰ গোপন থাকে। ৰিম'ট কলবোৰ সাধাৰণতে স্থানীয় কলতকৈ ধীৰ আৰু কম বিশ্বাসযোগ্য, সেয়ে RPC কলবোৰ স্থানীয় কলৰ পৰা পৃথক কৰি চিনাক্ত কৰা সহায়ক। জনপ্ৰিয় RPC ফ্ৰেমৱাৰ্কত আছে Protobuf, Thrift, আৰু Avro।
RPC এটা অনুৰোধ-প্ৰতিক্ৰিয়া প্ৰ'ট'কল:
- ক্লায়েন্ট প্ৰগ্ৰাম - ক্লায়েন্ট ষ্টাব প্ৰক্ৰিয়া কল কৰে। পেৰামিটাৰসমূহ স্থানীয় প্ৰক্ৰিয়া কলৰ দৰে ষ্টেকত পুশ কৰা হয়।
- ক্লায়েন্ট ষ্টাব প্ৰক্ৰিয়া - প্ৰক্ৰিয়া আইডি আৰু আৰ্গুমেন্টসমূহ অনুৰোধ বাৰ্তাত মাৰ্শেল (পেক) কৰে।
- ক্লায়েন্ট কমিউনিকেশ্যন মডিউল - OS-এ ক্লায়েন্টৰ পৰা ছাৰ্ভাৰলৈ বাৰ্তা পঠিয়ায়।
- ছাৰ্ভাৰ কমিউনিকেশ্যন মডিউল - OS-এ আহি থকা পেকেটসমূহ ছাৰ্ভাৰ ষ্টাব প্ৰক্ৰিয়ালৈ প্ৰেৰণ কৰে।
- ছাৰ্ভাৰ ষ্টাব প্ৰক্ৰিয়া - ফলাফলসমূহ আনমাৰ্শেল কৰে, প্ৰক্ৰিয়া আইডি মিলোৱা ছাৰ্ভাৰ প্ৰক্ৰিয়া কল কৰে আৰু দিয়া আৰ্গুমেন্টসমূহ প্ৰেৰণ কৰে।
- ছাৰ্ভাৰৰ প্ৰতিক্ৰিয়া ওপৰৰ পদক্ষেপসমূহ বিপৰীত ৰূপত পুনৰাবৃত্তি কৰে।
GET /someoperation?data=anIdPOST /anotheroperation
{
"data":"anId";
"anotherdata": "another value"
}
RPC ব্যৱহাৰ আচৰণবোৰ উন্মোচন কৰাত কেন্দ্ৰিত। RPC সাধাৰণতে কাৰ্যক্ষমতাৰ কাৰণে ভিতৰুৱা যোগাযোগত ব্যৱহাৰ কৰা হয়, কিয়নো আপুনি নিজৰ ব্যৱহাৰ ক্ষেত্ৰবোৰত ভালকৈ মিলাব পৰা দেশীয় কলবোৰ হাতৰে তৈয়াৰ কৰিব পাৰে।
দেশীয় গ্ৰন্থাগাৰ (অর্থাৎ SDK) বাছনি কৰক যেতিয়া:
- আপুনি নিজৰ লক্ষ্য প্লেটফৰ্ম জানে।
- আপুনি নিয়ন্ত্ৰণ কৰিব বিচাৰে কেনেকৈ আপোনাৰ "যুক্তি" প্রবেশযোগ্য হব।
- আপুনি নিয়ন্ত্ৰণ কৰিব বিচাৰে কেনেকৈ ত্ৰুটি নিয়ন্ত্ৰণ আপোনাৰ গ্ৰন্থাগাৰৰ বাহিৰত হব।
- কাৰ্যক্ষমতা আৰু শেষ ব্যৱহাৰকাৰীৰ অভিজ্ঞতা আপোনাৰ মুখ্য চিন্তা।
#### অসুবিধা(সমূহ): RPC
- RPC ক্লায়েন্টবোৰ সেৱা বাস্তবায়নৰ সৈতে শক্তকৈ সংযুক্ত হৈ পৰে।
- প্ৰতিটো নতুন অপাৰেচন অথবা ব্যৱহাৰক্ষেত্ৰৰ বাবে এটা নতুন API সংজ্ঞায়িত কৰিব লগা হয়।
- RPC ডিবাগ কৰাটো কঠিন হ’ব পাৰে।
- আপুনি হয়তো বিদ্যমান প্ৰযুক্তিবোৰ সোজাকৈ ব্যৱহাৰ কৰিব নোৱাৰে। উদাহৰণস্বৰূপ, RPC কলবোৰ সঠিকভাৱে কেছ কৰা হৈছে নিশ্চিত কৰিবলৈ, Squid যেনে কেছিং ছাৰ্ভাৰত অৰ্থপূৰ্ণ অতিৰিক্ত প্ৰচেষ্টা কৰিব লাগিব পাৰে।
প্ৰতিনিধিত্বমূলক অৱস্থা স্থানান্তৰ (REST)
REST হৈছে এটা স্থাপত্যিক শৈলী যিয়ে ক্লায়েন্ট/চাৰ্ভাৰ মডেলক বলবৎ কৰে, য’ত ক্লায়েন্টে চাৰ্ভাৰৰ দ্বাৰা পৰিচালিত একেটা সম্পদৰ ওপৰত কাৰ্য কৰে। চাৰ্ভাৰে সম্পদৰ প্ৰতিনিধিত্ব আৰু সেইবোৰক পৰিবৰ্তন অথবা নতুন প্ৰতিনিধিত্ব লাভ কৰিবলৈ ব্যৱস্থা প্ৰদান কৰে। সকলো যোগাযোগ অবস্থা-হীন আৰু কেছযোগ্য হ’ব লাগিব।
RESTful ইণ্টাৰফেছৰ চাৰিটা গুণ আছে:
- সম্পদ চিনাক্ত কৰক (HTTP-ত URI) - যিকোনো অপাৰেচনৰ বাবে একে URI ব্যৱহাৰ কৰক।
- প্ৰতিনিধিত্বৰ সৈতে পৰিবৰ্তন কৰক (HTTP-ত Verb) - verb, header আৰু body ব্যৱহাৰ কৰক।
- স্ব-বৰ্ণনাত্মক ত্ৰুটি বার্তা (HTTP-ত status response) - status code ব্যৱহাৰ কৰক, নতুনকৈ সৃষ্টি নকৰিব।
- HATEOAS (HTTP-ৰ বাবে HTML ইণ্টাৰফেছ) - আপোনাৰ ৱেব সেৱা সম্পূৰ্ণৰূপে ব্ৰাউজাৰত প্ৰৱেশযোগ্য হ’ব লাগিব।
GET /someresources/anIdPUT /someresources/anId
{"anotherdata": "another value"}
REST ডাটা উন্মোচন কৰিবলৈ কেন্দ্ৰিত। ই ক্লায়েন্ট/চাৰ্ভাৰৰ মাজত সংযোগ কমাই দিয়ে আৰু সাধাৰণতে জনসাধাৰণ HTTP API-সমূহৰ বাবে ব্যৱহাৰ কৰা হয়। REST অধিক সাধাৰণ আৰু এক ৰূপত সম্পদসমূহ URIsৰ জৰিয়তে উন্মোচন কৰে, হেডাৰৰ জৰিয়তে প্ৰতিনিধিত্ব, আৰু GET, POST, PUT, DELETE, আৰু PATCH যেনে verb-সমূহৰ জৰিয়তে actionসমূহ কৰে। Stateless হোৱাৰ বাবে, REST horizontal scaling আৰু partitioning-ৰ বাবে অতি উত্তম।#### অসুবিধা(সমূহ): REST
- REST ডাটা উন্মোচনলৈ কেন্দ্ৰিত হোৱাৰ বাবে, যদি সম্পদসমূহ স্বাভাৱিকভাৱে সহজ হায়াৰাৰ্কিত সংগঠিত বা প্ৰৱেশযোগ্য নহয়, তেন্তে ই ভাল বাছনি নহব পাৰে। উদাহৰণস্বৰূপ, বিগত এক ঘণ্টাত নিৰ্দিষ্ট ইভেন্টসমূহৰ সৈতে মিল থকা সকলো আপডেট কৰা ৰেকৰ্ডসমূহ উভতি দিয়াটো সহজে path হিচাপে প্ৰকাশ কৰিব নোৱাৰি। REST-ৰ সৈতে, ই URI path, query parameter, আৰু সম্ভৱপৰ অনুৰোধ বডিৰ সংমিশ্ৰণৰ জৰিয়তে বাস্তবায়িত হ’ব পাৰে।
- REST সাধাৰণতে কেইটামান verb (GET, POST, PUT, DELETE, আৰু PATCH)ত নিৰ্ভৰ কৰে যি কেতিয়াবা আপোনাৰ ব্যৱহাৰক্ষেত্ৰত ফিট নকৰে। উদাহৰণস্বৰূপ, মেয়াদ উত্তীর্ণ হোৱা নথিপত্ৰ archive folder-লৈ স্থানান্তৰ কৰা এই verb-সমূহৰ ভিতৰত নিখুঁতভাৱে ফিট নকৰে।
- Nested হায়াৰাৰ্কিত জটিল সম্পদসমূহ উদ্ধাৰ কৰিবলৈ ক্লায়েন্ট আৰু চাৰ্ভাৰৰ মাজত একাধিক round tripৰ প্ৰয়োজন হয় যাতে একেলগে ভিউসমূহ ৰেণ্ডাৰ কৰিব পাৰি, যেনে ব্লগ এণ্ট্ৰীৰ বিষয়বস্তু আৰু সেই এণ্ট্ৰীৰ কমেণ্টসমূহ উদ্ধাৰ কৰা। ভিন্ন নেটৱৰ্ক পৰিস্থিতিত চলা ম’বাইল এপ্লিকেশ্যনসমূহৰ বাবে এই একাধিক roundtrip অত্যন্ত অনাকাংক্ষিত।
- সময়ৰ সৈতে, API response-ত অধিক fields যোগ হ’ব পাৰে আৰু পুৰণি ক্লায়েন্টসমূহে সকলো নতুন data field লাভ কৰে, যিবোৰ তেওঁলোকে প্ৰয়োজন নকৰে, ফলস্বৰূপ payload size বৃদ্ধি পায় আৰু latencyও বেছি হয়।
RPC আৰু REST কলৰ তুলনা
| কাৰ্য | RPC | REST |
|---|---|---|
| Signup | POST /signup | POST /persons |
| Resign | POST /resign
{
"personid": "1234"
} | DELETE /persons/1234 |
| এজন ব্যক্তিক পঢ়া | GET /readPerson?personid=1234 | GET /persons/1234 |
| এজন ব্যক্তিৰ items list পঢ়া | GET /readUsersItemsList?personid=1234 | GET /persons/1234/items |
| এজন ব্যক্তিৰ itemsত item যোগ কৰা | POST /addItemToUsersItemsList
{
"personid": "1234";
"itemid": "456"
} | POST /persons/1234/items
{
"itemid": "456"
} |
| এটা item আপডেট কৰা | POST /modifyItem
{
"itemid": "456";
"key": "value"
} | PUT /items/456
{
"key": "value"
} |
| এটা item ডিলিট কৰা | POST /removeItem
{
"itemid": "456"
} | DELETE /items/456 |
উৎস: Do you really know why you prefer REST over RPC
#### উৎস(সমূহ) আৰু অধিক পঢ়া: REST আৰু RPC
- Do you really know why you prefer REST over RPC
- When are RPC-ish approaches more appropriate than REST?
- REST vs JSON-RPC
- Debunking the myths of RPC and REST
- What are the drawbacks of using REST
- Crack the system design interview
- Thrift
- Why REST for internal use and not RPC
নিৰাপত্তা
এই অংশটো কিছু আপডেটৰ প্ৰয়োজন। অংদান কৰক বিবেচনা কৰক!
সুৰক্ষা এটা বিস্তৃত বিষয়। আপোনাৰ যথেষ্ট অভিজ্ঞতা, সুৰক্ষা ক্ষেত্ৰৰ পটভূমি, অথবা সুৰক্ষাৰ জ্ঞান আৱশ্যক হোৱা পদৰ বাবে আবেদন নকৰিলে, সম্ভৱতঃ আপোনাৰ আধাৰভূত জ্ঞানৰ বাহিৰে অধিক জানিব লাগিব নালাগে:
- পৰিবহণত আৰু বিশ্ৰামত সংকেত কৰক।
- XSS আৰু SQL injection ৰোধ কৰিবলৈ সকলো ব্যৱহাৰকাৰীৰ ইনপুট অথবা ব্যৱহাৰকাৰীৰ বাবে উন্মুক্ত কৰা যিকোনো ইনপুট পেৰামিটাৰ পৰিষ্কাৰ কৰক।
- SQL injection ৰোধ কৰিবলৈ পাৰামেট্ৰাইজড কুৱেৰী ব্যৱহাৰ কৰক।
- সৰ্বনিম্ন অধিকাৰৰ মূলনীতি ব্যৱহাৰ কৰক।
উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
সংযোজন
কেতিয়াবা আপোনাক 'ব্যাক-অফ-দি-এনভেল' অনুমান কৰিবলৈ কৈছ। উদাহৰণস্বৰূপে, আপোনাক ঠিক কৰিব লাগিব যে ১০০টা ছবি থাম্বনেইল ডিস্কৰ পৰা সৃষ্টি কৰিবলৈ কিমান সময় লাগিব বা এটা ডাটা গঠনত কিমান মেমৰী লাগিব। দুই শক্তিৰ তালিকা আৰু প্ৰত্যেক প্ৰগ্ৰামাৰে জানিবলগীয়া বিলম্বতা সংখ্যা সহায়ক সংজ্ঞা।
দুই শক্তিৰ তালিকা
Power Exact Value Approx Value Bytes
---------------------------------------------------------------
7 128
8 256
10 1024 1 thousand 1 KB
16 65,536 64 KB
20 1,048,576 1 million 1 MB
30 1,073,741,824 1 billion 1 GB
32 4,294,967,296 4 GB
40 1,099,511,627,776 1 trillion 1 TB#### উৎস(সমূহ) আৰু অধিক পঢ়িবলৈ
প্ৰতিটো প্ৰগ্ৰামাৰে জানিবলগীয়া লেটেন্সি সংখ্যা
Latency Comparison Numbers
--------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 10,000 ns 10 us
Send 1 KB bytes over 1 Gbps network 10,000 ns 10 us
Read 4 KB randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
Read 1 MB sequentially from memory 250,000 ns 250 us
Round trip within same datacenter 500,000 ns 500 us
Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory
HDD seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip
Read 1 MB sequentially from 1 Gbps 10,000,000 ns 10,000 us 10 ms 40x memory, 10X SSD
Read 1 MB sequentially from HDD 30,000,000 ns 30,000 us 30 ms 120x memory, 30X SSD
Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 msNotes
-----
1 ns = 10^-9 seconds
1 us = 10^-6 seconds = 1,000 ns
1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns
উপৰোক্ত সংখ্যাৰ আধাৰত কিছু সহায়ক মেট্ৰিক্স:- HDD পৰা ক্রমিকভাৱে পঢ়ক ৩০ MB/s ত
- ১ Gbps ইথাৰনেটৰ পৰা ক্রমিকভাৱে পঢ়ক ১০০ MB/s ত
- SSD পৰা ক্রমিকভাৱে পঢ়ক ১ GB/s ত
- মুখ্য মেমৰীৰ পৰা ক্রমিকভাৱে পঢ়ক ৪ GB/s ত
- প্ৰতি ছেকেণ্ডত ৬-৭ গৰাকী বিশ্বব্যাপী ৰাউণ্ড-ট্ৰিপ
- এটা ডাটা চেন্টাৰৰ ভিতৰত প্ৰতি ছেকেণ্ডত ২,০০০ ৰাউণ্ড-ট্ৰিপ
#### উৎস(সমূহ) আৰু অধিক পঢ়ক
- Latency numbers every programmer should know - 1
- Latency numbers every programmer should know - 2
- Designs, lessons, and advice from building large distributed systems
- Software Engineering Advice from Building Large-Scale Distributed Systems
অতিৰিক্ত ছিষ্টেম ডিজাইন ইণ্টাৰভিউ প্ৰশ্ন
সাধাৰণ ছিষ্টেম ডিজাইন ইণ্টাৰভিউ প্ৰশ্নসমূহ, প্রতিটো সমাধান কৰিবলৈ সংস্থানৰ সংযোগৰ সৈতে।
| প্ৰশ্ন | সংস্থান(সমূহ) |
|---|---|
| Dropbox দৰে ফাইল ছিঙ্ক সেৱা ডিজাইন কৰক | youtube.com |
| Google দৰে এখন চাৰ্চ ইঞ্জিন ডিজাইন কৰক | queue.acm.org
stackexchange.com
ardendertat.com
stanford.edu |
| Google দৰে স্কেলেবল ৱেব ক্ৰ’লাৰ ডিজাইন কৰক | quora.com |
| Google docs ডিজাইন কৰক | code.google.com
neil.fraser.name |
| Redis দৰে কী-ভেলু ষ্ট’ৰ ডিজাইন কৰক | slideshare.net |
| Memcached দৰে কেছ ছিষ্টেম ডিজাইন কৰক | slideshare.net |
| Amazon ৰ দৰে ৰেকমেণ্ডেচন ছিষ্টেম ডিজাইন কৰক | hulu.com
ijcai13.org |
| Bitly ৰ দৰে tinyurl ছিষ্টেম ডিজাইন কৰক | n00tc0d3r.blogspot.com |
| WhatsApp দৰে চেট এপ ডিজাইন কৰক | highscalability.com
| Instagram ৰ দৰে ছবি শ্বেয়াৰিং ছিষ্টেম ডিজাইন কৰক | highscalability.com
highscalability.com |
| Facebook news feed ফাংশন ডিজাইন কৰক | quora.com
quora.com
slideshare.net |
| Facebook timeline ফাংশন ডিজাইন কৰক | facebook.com
highscalability.com |
| Facebook chat ফাংশন ডিজাইন কৰক | erlang-factory.com
facebook.com |
| ফেচবুকৰ দৰে এটা গ্ৰাফ সন্ধান ফাংশন ডিজাইন কৰক | facebook.com
facebook.com
facebook.com |
| CloudFlareৰ দৰে এটা কন্টেন্ট ডেলিভাৰী নেটৱৰ্ক ডিজাইন কৰক | figshare.com |
| টুইটাৰৰ দৰে এটা ট্রেণ্ডিং টপিক ব্যৱস্থা ডিজাইন কৰক | michael-noll.com
snikolov .wordpress.com |
| এটা ৰেণ্ডম ID উৎপাদন ব্যৱস্থা ডিজাইন কৰক | blog.twitter.com
github.com |
| এটা সময়সীমাৰ ভিতৰত শীৰ্ষ k অনুৰোধসমূহ উভতাই দিয়ক | cs.ucsb.edu
wpi.edu |
| বহু ডাটা চেন্টাৰৰ পৰা ডাটা পৰিসেৱা কৰা ব্যৱস্থা ডিজাইন কৰক | highscalability.com |
| অনলাইন মাল্টিপ্লেয়াৰ কাৰ্ড গেম ডিজাইন কৰক | indieflashblog.com
buildnewgames.com |
| গাৰ্বেজ কালেকশ্বন ব্যৱস্থা ডিজাইন কৰক | stuffwithstuff.com
washington.edu |
| এটা API ৰেট লিমিটাৰ ডিজাইন কৰক | https://stripe.com/blog/ |
| স্টক এক্সচেঞ্জ (NASDAQ বা Binanceৰ দৰে) ডিজাইন কৰক | Jane Street
Golang Implementation
Go Implementation |
| এটা ছিষ্টেম ডিজাইন প্ৰশ্ন যোগ কৰক | Contribute |
বাস্তৱিক বিশ্বৰ স্থাপত্যসমূহ
বাস্তৱিক বিশ্বৰ ছিষ্টেম কিদৰে ডিজাইন কৰা হয় তাৰ বিষয়ে প্ৰবন্ধসমূহ।
উৎস: Twitter timelines at scale
তলত থকা প্ৰবন্ধসমূহৰ বাবে সূক্ষ্ম বিষয়ত মন নিদিয়ক, তাৰ সলনি:
- এই প্ৰবন্ধসমূহত ভাগ পোৱা সাধাৰণ মূলনীতি, প্ৰযুক্তি আৰু ধৰণসমূহ চিনাক্ত কৰক
- প্ৰতিটো উপাদান দ্বাৰা কি সমস্যাৰ সমাধান হয়, ক'ত কাম কৰে, ক'ত নকৰে, সেইবোৰ অধ্যয়ন কৰক
- শিকিব পৰা পাঠবোৰ পৰ্যালোচনা কৰক
কোম্পানী স্থাপত্যসমূহ
| কোম্পানী | উল্লেখ(সমূহ) |
|---|---|
| Amazon | Amazon স্থাপত্য |
| Cinchcast | প্ৰতি দিনত ১,৫০০ ঘণ্টা অডিঅ' উৎপাদন |
| DataSift | প্ৰতি ছেকেণ্ডত ১২০,০০০ টুইট ৰিয়েলটাইম ডাটা মাইনিং |
| Dropbox | Dropbox কিদৰে স্কেল কৰা হৈছে |
| ESPN | প্ৰতি ছেকেণ্ডত ১,০০,০০০ duh nuh nuhs চলোৱা |
| Google | Google স্থাপত্য |
| Instagram | ১৪ নিযুত ব্যৱহাৰকাৰী, টেৰাবাইট ফটো
Instagram কিদৰে চলি থাকে |
| Justin.tv | Justin.tv ৰ লাইভ ভিডিঅ' সম্প্রচাৰ স্থাপত্য |
| Facebook | Facebook ত memcached স্কেলিং
TAO: Facebook ৰ বিতৰিত ডাটা ষ্ট'ৰ সামাজিক গ্ৰাফৰ বাবে
Facebook ৰ ফটো সংৰক্ষণ
Facebook Live কিদৰে ৮০০,০০০ একেলগে দর্শকলৈ Streams কৰে |
| Flickr | Flickr স্থাপত্য |
| Mailbox | ৬ সপ্তাহত ০ ৰ পৰা ১ নিযুত ব্যৱহাৰকাৰীলৈ স্কেলিং |
| Netflix | Netflix ষ্টেকৰ ৩৬০ ডিগ্ৰী দৃশ্য
Netflix: Play টিপিলে কি হয়? |
| Pinterest | ০ ৰ পৰা প্ৰতি মাহত ১০ বিলিয়ন পৃষ্ঠাৰ দৰ্শনলৈ
১৮ নিযুত দর্শক, ১০x বৃদ্ধি, ১২ কৰ্মচাৰী |
| Playfish | প্ৰতি মাহত ৫০ নিযুত ব্যৱহাৰকাৰী আৰু বৃদ্ধি পাইছে |
| PlentyOfFish | PlentyOfFish স্থাপত্য |
| Salesforce | তেওঁলোকে দিনে ১.৩ বিলিয়ন লেনদেন কেনেকৈ সজা কৰে |
| Stack Overflow | Stack Overflow স্থাপত্য |
| TripAdvisor | ৪০M দর্শক, ২০০M ডায়নামিক পৃষ্ঠা দৰ্শন, ৩০TB ডাটা |
| Tumblr | প্ৰতি মাহত ১৫ বিলিয়ন পৃষ্ঠা দৰ্শন |
| Twitter | Twitter ১০০০০ শতাংশ তীব্ৰ কৰা
Twitter কিদৰে প্ৰতি দিন ২৫০ নিযুত টুইট MySQL ৰে সংৰক্ষণ কৰে
১৫০M সক্ৰিয় ব্যৱহাৰকাৰী, ৩০০K QPS, ২২ MB/S firehose
স্কেলত টাইমলাইন
Twitter ত ডাঙৰ আৰু সৰু ডাটা
Twitter ত অপাৰেশ্যন: ১০০ নিযুত ব্যৱহাৰকাৰীৰ উৰ্ধে স্কেলিং
Twitter কিদৰে প্ৰতি ছেকেণ্ডত ৩,০০০ ছবি সজা কৰে |
| Uber | Uber ৰ ৰিয়েলটাইম মাৰ্কেট প্লেটফৰ্ম কিদৰে স্কেল কৰা হয়
Uber ক ২০০০ ইঞ্জিনিয়াৰ, ১০০০ সেৱা, আৰু ৮০০০ Git ৰেপ'জিটৰি লৈ স্কেলিংৰ পাঠ |
| WhatsApp | WhatsApp স্থাপত্য, Facebook এ $১৯ বিলিয়নত ক্ৰয় কৰিছিল |
| YouTube | YouTube scalability
YouTube স্থাপত্য |
কোম্পানী ইঞ্জিনিয়াৰিং ব্লগসমূহ
আপোনি যিসকল কোম্পানীত সাক্ষাৎকাৰ দিব, তাত ব্যৱহৃত স্থাপত্যসমূহ।>
আপোনি সন্মুখীন হোৱা প্ৰশ্নবোৰ একে ক্ষেত্ৰৰ পৰা আহিব পাৰে।
- এয়াৰবিএনবিএ ইঞ্জিনিয়াৰিং
- এট্লাছিয়ান ডেভেলপাৰ্চ
- এ.ডব্লিউ.এছ. ব্লগ
- বিটলি ইঞ্জিনিয়াৰিং ব্লগ
- বক্স ব্লগসমূহ
- ক্লাউডেৰ ডেভেলপাৰ ব্লগ
- ড্ৰপবক্স টেক ব্লগ
- কোয়ৰাত ইঞ্জিনিয়াৰিং
- ইবে টেক ব্লগ
- এভাৰনোট টেক ব্লগ
- এটচি কোড এজ ক্রাফট
- ফেচবুক ইঞ্জিনিয়াৰিং
- ফ্লিকাৰ কোড
- ফোৰস্কুৱাৰ ইঞ্জিনিয়াৰিং ব্লগ
- গিটহাব ইঞ্জিনিয়াৰিং ব্লগ
- গুগল ৰিসাৰ্চ ব্লগ
- গ্ৰুপন ইঞ্জিনিয়াৰিং ব্লগ
- হেৰোকু ইঞ্জিনিয়াৰিং ব্লগ
- হাবস্পট ইঞ্জিনিয়াৰিং ব্লগ
- হাই স্কেলেবিলিটি
- ইনষ্টাগ্ৰাম ইঞ্জিনিয়াৰিং
- ইনটেল ছফ্টৱেৰ ব্লগ
- জেন ষ্ট্ৰিট টেক ব্লগ
- লিঙ্কডইন ইঞ্জিনিয়াৰিং
- মাইক্র’চফ্ট ইঞ্জিনিয়াৰিং
- মাইক্র’চফ্ট পাইথন ইঞ্জিনিয়াৰিং
- নেটফ্লিক্স টেক ব্লগ
- পেপাল ডেভেলপাৰ ব্লগ
- পিন্টাৰেষ্ট ইঞ্জিনিয়াৰিং ব্লগ
- ৰেডিট ব্লগ
- চেলছফোৰ্স ইঞ্জিনিয়াৰিং ব্লগ
- শ্লাক ইঞ্জিনিয়াৰিং ব্লগ
- স্পটিফাই লেবছ
- ষ্ট্ৰাইপ ইঞ্জিনিয়াৰিং ব্লগ
- Twilio ইঞ্জিনিয়াৰিং ব্লগ
- Twitter ইঞ্জিনিয়াৰিং
- Uber ইঞ্জিনিয়াৰিং ব্লগ
- Yahoo ইঞ্জিনিয়াৰিং ব্লগ
- Yelp ইঞ্জিনিয়াৰিং ব্লগ
- Zynga ইঞ্জিনিয়াৰিং ব্লগ
এটা ব্লগ যোগ কৰিবলৈ বিচাৰিছে নেকি? পুনৰাবৃত্তি হোৱা কাম এৰাই, আপোনাৰ কোম্পানীৰ ব্লগ তলত দিয়া ৰেপ'ত যোগ কৰাৰ কথা ভাবিব পাৰে:
উন্নয়নৰ অধীন
এটা বিভাগ যোগ কৰিবলৈ অথবা চলি থকা এটা সম্পূৰ্ণ কৰিবলৈ আগ্ৰহী নেকি? অংশগ্ৰহণ কৰক!
- MapReduce সৈতে বিতৰিত কম্পিউটিং
- কনছিষ্টেণ্ট হেশিং
- স্কেটাৰ গেদাৰ
- অংশগ্ৰহণ কৰক
ক্ৰেডিট
এই ৰেপ'ত ক্ৰেডিট আৰু উৎসসমূহ দিয়া হৈছে।
বিশেষ ধন্যবাদ:
- Hired in tech
- Cracking the coding interview
- High scalability
- checkcheckzz/system-design-interview
- shashank88/system_design
- mmcgrana/services-engineering
- System design cheat sheet
- A distributed systems reading list
- Cracking the system design interview
যোগাযোগৰ তথ্য
যিকোনো সমস্যা, প্ৰশ্ন, বা মন্তব্য আলোচনা কৰিবলৈ মোক যোগাযোগ কৰিবলৈ স্বাধীন অনুভৱ কৰক।
মোৰ যোগাযোগ তথ্য মোৰ GitHub পৃষ্ঠাত পাব।
লাইচেঞ্চ
মই এই ৰেপ'জিট'ৰীত থকা ক'ড আৰু উৎসসমূহ আপোনালোকলৈ এখন মুক্ত উৎস লাইচেঞ্চৰ অধীনত প্ৰদান কৰিছোঁ। এইটো মোৰ ব্যক্তিগত ৰেপ'জিট'ৰি হোৱাৰ বাবে, আপোনালোকক মোৰ ক'ড আৰু উৎসসমূহৰ লাইচেঞ্চ মোৰ পৰা, মোৰ নিয়োগকর্তা (Facebook)ৰ পৰা নহয়।
Copyright 2017 Donne Martin
Creative Commons Attribution 4.0 International License (CC BY 4.0)
http://creativecommons.org/licenses/by/4.0/
--- Tranlated By Open Ai Tx | Last indexed: 2025-08-09 ---