سلام دوستان همینجا باید بگم قصد من از ایجاد این موضوع بحث کاملا فنی است، پس لطفا از ارسالهایی که صرفا دارای اطلاعات عمومی یا نامربوط است خودداری کنید.
هر برنامهنویسی بعد از یک مدت که یادگرفت چطور به وسیله اینترنت و شبکه ارتباط برقرار کند، حتی برای تمرین یا تفریح هم شده یک چتروم یا شبکهاجتماعی ساده درست کرده، بعدا ممکن در مقیاس بزرگتر هم آن را پیادهسازی بکند و کار را گسترش بدهد.
خوب قطعا برای ساخت برنامهای مثل تلگرام در حد امکانات بیسیک هیچ مشکلی وجود ندارد، روند ساده است، یه ارتباط Real Time داریم که به لطف کتابخانههای زیادی که موجود است برای زبانهای متفاوت مشکلی در این زمینه نیست و همچنین با ذخیرهسازی اطلاعات روبرو هستیم که از انواع دیتابیسها میتوانیم استفاده کنیم.
کار جایی سخت میشود که مقیاس این برنامه را در حد جهانی یا حتی همان کشوری گسترش دهیم، برنامههایی مثل واتساپ زیاد در زمینه ذخیرهسازی اطلاعات و واکشی آن مشکلی ندارن، چون چتهای کاربر روی گوشی خودش است و سرور فقط وظیفه بافرینگ اطلاعات دارد. حالا تلگرامی با این تعداد کاربر، این حجم از اطلاعات چطور با این سرعت باورنکردنی دارد چتها و فایلهای حتی ۴ سال پیش من را در اختیارم قرار میدهد...
یک لحظه دقت کنیم یک کانالی که چندین سال است دارد فعالیت میکند را شما تا اولین پست اون میتوانید اسکرول کنید و تلگرام بدون هیچ مشکلی این اطلاعات را از سرورهای خودش واکشی میکند و نمایش میدهد و تازه هر کدام از این پستها شامل فایلهای حجیم چند گیگی هم هستند!
سوالهای اصلی که مطرح میشود: ۱. تلگرام از چه دیتابیسهایی برای ذخیره اطلاعات خود استفاده میکند؟ رابطهای؟ NoSQL؟ یا حتی گرافی و...
۲. از چه سیستم توزیعهایی برای توزیع این دیتا در سرورهای مختلف بهره میبرد؟
۳. تکنیکهای دیگری که در سطوح بالاتری از ذخیرهسازی برای سرعت بخشیدن به این پروسه صورت میگیرد چه چیزهایی هستند؟
ببینید میدونم اینها بحثهای سنگین و تخصصی در زمینه بیگدیتا هستند ولی خوب شاید توضیحهای سادهتری برای این تکنیکها موجود باشد که حداقل درک سطحی از این سازوکار به ما بدهد...
۴. این سوال یکم جنبه راهنمایی دارد از دوستان با تجربه... ببینید من تجربه پیادهسازی یه برنامه تقریبا پیشرفته با امکان چت و تماس صوتی-تصویری با هندل کردن چند هزار کاربر را داشتم، ولی خوب مجبور شدم به قول خودمون کلی کلک رشتی بزنم تا بار سرور کمتر بشه و مشکلی به وجود نیاد. به همین خاطر همیشه از پیادهسازی سیستمهای بزرگتر ترسیدم و این کمبود دانش در این زمینه را حس کردم، متاسفانه مقاله و کتاب بهدردبخوری پیدا نکردم، نمیخوام الان برم وارد تخصص بیگدیتا بشم، خیر، ولی خوب میخوام یه دانش هر چند سطحی در این زمینه داشته باشم. به عنوان مثال مقاله زیر که در همین زمینه توسط برنامهنویس ارشد کوویزآفکینگز نوشته شده برام خیلی جالب بود:
https://vrgl.ir/21mXYممنون میشم اطلاعات خودتان را در این زمینه به اشتراک بگذارید...