- Реализовать шардированное хранилище geojson базы данных
- Данные шардировать по geo квадратам
- Реализовать
map/reduce
запрос по координатом
Несколько Storage
объединённых вместе являются одним шардом.
Несколько шардов являются масштабированным хранилищем.
Каждый шард хранит свой набор данных.
Реализовать структуру сервис Router
c методами:
NewRouter(addr string, shards [] )
Структура Router
должна хранить таблицу маршрутизации.
Таблица маршрутизации это rtree индекс: где карта разбита на секторы и для каждого сектора существует своя структура шарда.
struct Shard {
leaderAddr string,
replicase string,
}
Сервис Router
должен реализовывать все методы как Storage
.
Сервис Router
должен маршрутизировать запросы в соответветствии с таблицей маршрутизации.