মেসেজ ভিউ কেন বেশিরভাগ ওয়েব সাইটে পিছিয়ে থাকে?


10

দেখুন কীভাবে ইউটিউব ভিডিওর পরিসংখ্যান সবসময় অলস থাকে? উদাহরণস্বরূপ, একটি ভিডিওতে 1000 টি মত মন্তব্য রয়েছে এবং এখনও 500 টি হিট রয়েছে এবং তার পরে 10000 হিট থাকবে।

ইউটিউব এতে একা নয়। বেশিরভাগ বার্তা বোর্ডগুলি সেভাবে বাস্তবায়ন করা হয় এবং প্রতি 10 মিনিট বা তার মতো সময় অনুসারে ভিউ গণনাগুলি আপডেট হয়।

এর পেছনের কারণ কি কেউ জানেন?

ধন্যবাদ।

উত্তর:


20

রেকর্ডিং ভিউগুলি খুব সহজ, কেবল কোনও টেবিলে একটি সারি যুক্ত করুন যা "দর্শন" ক্রিয়াকে উপস্থাপন করে। এটি দ্রুত কারণ ডেটাবেসে কোনও লকিংয়ের প্রয়োজন নেই, আপনি কেবল একটি স্তূপের শেষে সারি যুক্ত করছেন।

মোট সংখ্যার সংখ্যায় একত্রিত হওয়ার জন্য এমন কিছু করার দরকার রয়েছে SELECT COUNT(*) FROM ...যার অর্থ হিসাবের অগ্রগতি চলাকালীন আপনাকে টেবিলটি লক করতে হবে। বৈকল্পিকভাবে, UPDATE ... SET num_views = num_views + 1প্রত্যেক বার যখন কেউ এটি দেখার জন্য আপনি সেই নির্দিষ্ট সারিটি লক করা দরকার।

সুতরাং একটি স্কেলিবিলিটি দৃষ্টিকোণ থেকে, প্রতিবার কেউ ভিডিও দেখলে একটি সারি যুক্ত করা এবং তারপরে SELECT COUNT(*) FROM ...প্রতি দশ মিনিট বা তার পরে আরও বেশি দক্ষ ।

দ্রষ্টব্য আমি আসলে ইউটিউবের আর্কিটেকচারটি জানি না, বা তারা এমনকি তাদের ডেটা সংরক্ষণের জন্য কোনও সম্পর্কিত ডেটাবেস ব্যবহার করে কিনা, তবে তারা যা ব্যবহার করে না কেন , নীতিটি সম্ভবত একই রকম: তথ্য সন্নিবেশ করা সস্তা, সমষ্টিগত মানগুলি (তুলনামূলকভাবে) ব্যয়বহুল ।


4
এটি কি গুগলের বাকি অংশগুলির সাথে বিগ টেবিল ব্যবহার করে না?
TheLQ

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

এটি আমি প্রথম শুনি না। আসলেই আমার ধাঁধাটি কী, কোনও তালিকার সাথে যুক্ত হওয়ার চেয়ে থ্রেডসেফ পদ্ধতিতে কাউন্টার বাড়ানো আরও শক্ত বা ব্যয়বহুল। আপনি যদি উত্তরোত্তর সমাধান করতে পারেন তবে প্রাক্তনটির সত্যই সহজ হওয়া উচিত।
back2dos

2
@ টম টাকার: হ্যাঁ, তবে আমরা এখানে গুগলের কথা বলছি, মনে রাখবেন :-) একটি উপায় যে আমি ছোট স্কেলে এই সমস্যাটি সমাধান করেছি তা হ'ল একবার সমষ্টিটি শেষ করার পরে আমি সংযুক্ত টেবিলটি কেটে ফেলব ডেটা থেকে গণনা করা হয়েছিল। সুতরাং আপনি কখনই "কাঁচা" ডেটার এক ঘণ্টার (বা আপনি অন্তর যা আপডেট করেন তা) বেশি পান না।
ডিন হার্ডিং

4
এছাড়াও মনে রাখবেন যে আপনার "ক্রিয়াকলাপ" টেবিলের ডেটা কেবল "ভিউয়ের সংখ্যা" গণনা করার চেয়ে বেশি ব্যবহার করা যেতে পারে। আপনি এটি আইপি ব্লকগুলি প্রয়োগ করতে (যেমন "একই আইপি থেকে প্রতি 10 সেকেন্ডে 1 টির বেশি নয়" ইত্যাদি) ব্যবহার করতে পারেন। আপনি সময়ের সাথে সাথে সংখ্যার ভিউ সংখ্যা এবং অন্যান্য ধরণের জিনিসগুলি num_views = num_views + 1দেখায় যা সাধারণ কোনও মঞ্জুরি দেয় না এমন গ্রাফও তৈরি করতে পারে।
ডিন হার্ডিং

8

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


4

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

পৃষ্ঠা দর্শনগুলি পরিমাপ করার বিভিন্ন উপায় রয়েছে:

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

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


শেষ সমাধানটি কখনও ভাবেননি - খুব চালাক! একা এটির মূল্য +1।
টম টাকার 18

1
দিন / সপ্তাহ / মাসের জন্য রোলিং "সর্বাধিক জনপ্রিয়" পৃষ্ঠা তালিকাগুলি পরিচালনা করতে আমরা সেই পদ্ধতির ব্যবহার করেছি। আমরা দিন, সপ্তাহ এবং মাসের জন্য একটি সাধারণ বৈশিষ্ট্য ফাইল পর্যন্ত গণনাগুলি রোল করেছি। বর্তমান দিনটি প্রতি ঘণ্টায় পুনরায় প্রসেস করা হবে এবং বাকি সংক্ষিপ্ত ফাইলগুলি দাদা / পিতা / পুত্র ব্যাকআপ টেপের মতো আচরণ করা হয়েছিল। মূলত আমাদের 8 টিরও বেশি সংক্ষিপ্ত ফাইলের প্রয়োজন নেই (সাপ্তাহিক সংক্ষিপ্তসারগুলি এবং বর্তমান সপ্তাহের প্রতিটি দিনের জন্য একটি সংক্ষিপ্ত ফাইল)।
বেরিন লরিটস

এটি আরআরডিটুল কীভাবে কাজ করে তার অনুরূপ , যদিও আরআরডিটুল এটির মার্জিত সরলতার সাথে আপনার সমাধানের চেয়ে অনেক জটিল।
জার্গ ডব্লু মিট্টাগ

0

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

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