ScyllaDB-ны өндірушіден бұрын пайдалану антипаттерн. Дубликаттарды дұрыс ұйымдастыру қалай?
Golang
Айтайық, біз ірі жарнама желісіміз. Біз серіктес сайттарда баннерлер орналастырамыз бүкіл әлем бойынша. Бізге оқиғаларды жинау және өңдеу жүйесін жобалау қажет. Бұл деректер екі мақсат үшін өте маңызды: Шоттан алу: Кликтер үшін жарнама берушілерден ақша алу. Аналитика: Науқанның ағымдағы тиімділігін көрсету (CTR, көрсетілімдер) жеке кабинетте. Бастапқы деректер (жүктемені бағалау үшін) Сіз өзіңіз бағалау керек қажетті қуаттылықты (RPS, трафик, сақтау орны), келесі метрикаларға негізделген: Серіктестік желі: 500,000 белсенді сайт. Трафик: Әр сайтта орта есеппен 2 бет қарау секундына. Рекламалық блоктар: Әр бетте бір уақытта 3 баннер көрсетіледі. Конверсия: Орташа CTR (Click-Through Rate) 1% құрайды. Әрекетсіздік: Шамамен 4 есе жоғары пиковая жүктеме (кешкі уақытта). Оқиға көлемі: Оқиға объектісі (баннер ID, сайт ID, UserID, Timestamp, оқиға түрі) шамамен 500 байт. Техникалық талаптар Жақын уақыттық нақты уақыт: Аналитикалық интерфейсте деректер 10 секундтан аспайтын кешігуімен пайда болуы керек. Сенімділік: Кликтердің жоғалуы қабылданбайды (бұл тікелей ақша жоғалту). Көрсетілімдердің жоғалуы (impressions) 0.01% шегінде рұқсат етілген. Кеңейтілімділік: Жүйе платформалардың саны өскен сайын оңай кеңейтілуі керек.
Неге бізге шикі деректерді S3 сақтау қоймасына сақтау керек? Redis-те TTL-ді 5 минут ету дұрыс па, әлде ұзақ — 24 сағат сақтау және деректерді тексеру үшін ScyllaDB-ны пайдалану жақсы ма?