Я оцениваю бэкэнд для приложения для определения местоположения, похожего на Tinder.
- Функция приложения показывает близлежащих пользователей онлайн (с сексом и возрастным фильтром).
- В некоторых системах баз данных есть Redis, Cassandra, MySQL Cluster
- Приложение должно масштабироваться горизонтально, добавляя node при высоком трафике
После исследования я очень смущен, есть ли общая модель данных "наилучшей практики", алгоритм для этого. Мой подход использует Redis Cluster:
// Store all online users in same location (city) to a Set. In this case, store user:1 to New York set
SADD location:NewYork 1
// Store all users age to Sorted Set. In this case, user:1 has age 30
ZADD age 30 "1"
// Retrieve users in NewYork age from 20 to 40
ZINTERSTORE tmpkey 2 location:NewYork age AGGREGATE MAX
ZRANGEBYSCORE tmpkey 20 40
Я неопытен и не могу предвидеть потенциальную проблему, если масштабирование произойдет для миллионов одновременных пользователей.
Надеюсь, что любой ветеран может пролить некоторый свет.