ScyllaDB dan foydalanish ishlab chiqaruvchidan oldin antipattern hisoblanadi. Deduplikatsiyani to'g'ri tashkil qilish qanday?
Golang
Farz qilaylik, biz katta reklama tarmog'imiz. Biz butun dunyo bo'ylab hamkor saytlarida bannerlar joylashtiramiz. Bizga real vaqt rejimida voqealarni yig'ish va ishlov berish tizimini loyihalash kerak. Bu ma'lumotlar ikki maqsad uchun juda muhim: Hisoblash: Kliklar uchun reklama beruvchilardan pul olish. Tahlil: Kampaniyalarning hozirgi samaradorligini (CTR, ko'rsatmalar) shaxsiy panelda ko'rsatish. Kiritma ma'lumotlar (yuklamani hisoblash uchun) Siz o'zingiz talab qilinadigan quvvatlarni baholashingiz kerak (RPS, trafik, saqlash), quyidagi metriklarga asoslanib: Hamkor tarmoq: 500,000 faol sayt. Trafik: Har bir sayt o'rtacha 2 sahifa ko'rinishiga ega sekundiga. Reklama bloklari: Har bir sahifada 3 ta banner bir vaqtning o'zida ko'rsatiladi. Konversiya: O'rtacha CTR (Click-Through Rate) 1%. Noto'g'ri: Pikoviy yuk (kechqurun soatlari) o'rtacha bilan solishtirganda 4 baravar yuqori. Voqealar hajmi: Voqea obyekti (Banner ID, Sayt ID, UserID, Timestamp, voqea turi) taxminan 500 bayt. Texnik talablar Near Real-Time: Analitik interfeysda ma'lumotlar 10 sekunddan ortiq bo'lmagan kechikish bilan paydo bo'lishi kerak. Ishonchlilik: Kliklar yo'qotilishi mumkin emas (bu to'g'ridan-to'g'ri pul yo'qotish). Ko'rsatmalar yo'qotilishi 0.01% gacha qabul qilinadi. O'sish imkoniyati: Tizim platformalar soni ortishi bilan osongina kengaytirilishi kerak.
Nima uchun biz S3 saqlashda xom ma'lumotlarni saqlashimiz kerak? Redisda TTL ni 5 daqiqa qilish to'g'ri yoki ma'lumotlarni uzoqroq, masalan, 24 soat, saqlash va ScyllaDB ni ma'lumotlarni tekshirish manbai sifatida ishlatish yaxshiroqmi?