Согласно ТЗ:
Принимает два user_id
и выдаёт ответ - являются ли они дублем или нет. Дублем считается пара user_id
, у которых хотя бы два раза совпадает ip-адрес
в логе соединений.
Лог соединений будет хранится в тестовой БД duples
СУБД ClickHouse
ОП Yandex Cloud
, столбцовой СУБД
для онлайн обработки аналитических запросов OLAP
.
Создается таблица, в нее загружаются тестовые данные. Структура таблицы:
`CREATE TABLE conn_log
(
user_id UInt32,
ip_addr IPv4,
timestamp DateTime,
)
ENGINE = ReplacingMergeTree
PRIMARY KEY (user_id)`
go run insertlog.go
Ключ 1000000
, это число итераций основного цикла.
Общее количество строк, определяется простым подбором ключа:
go build gendtables.go
gendtables 1000000
clickhouse-client -q "INSERT INTO conn_log FORMAT CSV" < conn_log.csv
docker build -t restduples -f Dockerfile
sudo docker build . -t cr.yandex/${REGISTRY_ID}/debian:restduples -f Dockerfile
go test -v client_test.go
go test -v selectlog_test.go
sudo docker run --name restduples -p 12345:12345 -d cr.yandex/${REGISTRY_ID}/debian:restduples
go test -v client_test.go
go run restduples.go
go run client.go
Status = 200 OK 2023/10/17 10:49:28
This is duples:
{"true"} or {"false"}