ระบบแจ้งเตือนเครือข่ายสังคม
พื้นหลัง ฉันกำลังทำงานกับแอพสำหรับลูกค้าที่มีคุณสมบัติเครือข่ายสังคมบางอย่าง ตอนแรกฉันพัฒนามือถือส่วนหน้า แต่สถานการณ์ก็ทำให้ฉันต้องรับผิดชอบด้านการพัฒนาด้านหลังเช่นกัน ในฐานะที่เป็นพื้นหลังทั่วไประบบของเราอนุญาตให้ผู้ใช้ติดตามผู้ใช้รายอื่นและรับการแจ้งเตือนเกี่ยวกับสิ่งที่พวกเขากำลังติดตามดังที่คุณคาดหวังจากเครือข่ายสังคมออนไลน์ ข้อแม้คือว่าจะมีเพียงผู้ใช้ชุดย่อยขนาดเล็ก (อย่างน้อยไม่กี่ร้อย) โดยมีความคาดหวังว่าฐานผู้ใช้ส่วนใหญ่จะติดตามบุคคลเหล่านี้อย่างน้อยหนึ่งคน ทางด้าน UI เราจะมีปุ่มแจ้งเตือนพร้อมตัวเลขและการคลิกปุ่มจะนำคุณไปยังหน้าจอการแจ้งเตือน ปัญหา ฉันค้นคว้ากลยุทธ์ในการใช้งานการแจ้งเตือนและทรัพยากรส่วนใหญ่ที่ฉันพบพบว่าสร้างตารางการแจ้งเตือนหนึ่งตารางขึ้นไปในฐานข้อมูล (ตัวอย่างที่ฉันชอบคือคำตอบที่ยอมรับได้ที่นี่: /programming/9735578/building-a-notification-system ) สิ่งที่ทิ้งฉันไปคือกลยุทธ์การขับเคลื่อนฐานข้อมูลส่วนใหญ่สำหรับการแจ้งเตือนจำเป็นต้องแทรกแถวสำหรับการแจ้งเตือนแต่ละรายการสำหรับผู้ติดตามแต่ละคน ดังนั้นหากคนนับพันติดตามแซลลี่เราจะแทรกหนึ่งพันแถวลงในตารางที่เกี่ยวข้อง ปรับขนาดได้หรือไม่ จะเกิดอะไรขึ้นถ้าเราไปถึงจุดที่ผู้ใช้หลายสิบหรือหลายแสนคนติดตาม Sally และเธอกำลังโพสต์ไม่กี่โหลต่อวัน แนวคิดดั้งเดิมของฉันคือการจัดการทุกอย่างด้วยข้อความค้นหา: หมายเลขบนปุ่มแจ้งเตือนจะได้รับโดยขอจำนวนแถวของเนื้อหาที่โพสต์เร็วกว่าครั้งล่าสุดที่คุณเยี่ยมชมหน้าจอการแจ้งเตือนในขณะที่การแจ้งเตือนแต่ละรายการจะถูกสร้างขึ้น เมื่อคุณเยี่ยมชมหน้าจอการแจ้งเตือน วิธีนี้จะไม่ต้องมีการเขียนหรือการเก็บข้อมูลเพิ่มเติม แต่ยืดหยุ่นและอาจค้อนเซิร์ฟเวอร์ค่อนข้างยาก ติดตั้ง แบ็กเอนด์ (ตามที่กำหนดโดยผู้พัฒนาก่อนหน้านี้) ใช้CodeIgniterและฐานข้อมูลMySQL ขณะนี้กำลังทำงานบนบัญชีโฮสติ้งที่ใช้ร่วมกันแบบเส็งเคร็ง GoDaddy แต่ฉันคิดว่า (หวังว่า) สิ่งนี้จะได้รับการอัปเกรดก่อนที่เราจะเข้าสู่การผลิตและแพ็คเกจโฮสติ้งจะถูกปรับสัดส่วนตามการเติบโตของผู้ใช้ ปัจจุบันส่วนหน้าของเราคือแอพมือถือ แต่เราวางแผนที่จะสร้างเว็บไซต์ในภายหลัง ฉันไม่ได้กังวลเกี่ยวกับการได้รับการอัพเดตแบบพุชแบบเรียลไทม์จากเซิร์ฟเวอร์เกี่ยวกับการแจ้งเตือน ภาคผนวก ฉันไม่เชี่ยวชาญในแบ็กเอนด์และฉันอยู่ในหัวของฉันในแผนกนั้น ลูกค้ารู้และฉันพยายามอย่างเต็มที่ที่จะอธิบายขอบเขตของโครงการในลักษณะนี้ แต่พวกเขาทำให้มันชัดเจนว่า ณ จุดนี้พวกเขาจะไม่ไว้ใจคนอื่นให้ทำงานในโครงการ เราอาจมีงานอีกเดือนที่ต้องทำก่อนที่จะเริ่มเพิ่มผู้ทดสอบและฉันจะได้รับการวัดประสิทธิภาพใด ๆ ฉันไม่สามารถประมาณจำนวนผู้ใช้ที่เราอาจมีหรือฮาร์ดแวร์ที่เราอาจจะเปิดตัวในอีก 5 ปีข้างหน้า …