Я хочу, чтобы вы с нами решили задачу, которая описана в этом посте в нашем блоге. Нам нужна база данных для того, чтобы хранить треки водителей. При этом нужно хранить несколько треков по каждому водителю
type (
Location struct {
Latitude float64 `json:"lat"`
Longitude float64 `json:"lon"`
}
Payload struct {
Timestamp int64 `json:"timestamp"`
DriverID int `json:"driver_id"`
Location Location `json:"location"`
}
)
- Данные должны добавляться без дублирования.
- По каждому водителю нужно хранить N последних точек
Добавления данных будет через HTTP API
- Добавить данные в хралищие
- Получить информацию по водителю
- Получить ближайших водителей по местоположению
Решать задачу будем эволюционно. В процессе реализации мы начнем с простых и примитивных решений, которые не всегда эффективны по скорости, но в ходе решения задачи будем вводить те или иные примитивы, объясняя их. Процесс будет примерно такой:
- Решаем задачу простым и тупым методом
- Думаем как это можно оптимизировать
- Изучаем новую структуру данных и понимаем ее
- Проектируем решение с новой структурой
- Делаем ее
- Пишем тесты
Проект нужно склонировать себе.
cd $GOPATH
mkdir -p src/github.com/maddevsio
cd src/github.com/maddevsio
git clone [email protected]:maddevsio/gocodelabru.git
cd gocodelab
Кодлаба раздлена на несколько шагов. Каждый последующий шаг может содержать себе пример того, что должно у вас получится после выполнения предыдущего. Это своеобразные чекпоинты, чтобы проверять все ли правильно ли вы делаете или нет.
Мы узнали какую задачу будем решать и как ее решать. Приступим к реализации задачи в следующем шаге