Skip to content

alersrt/timestamp-saver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Timestamp saver

Task

Написать консольное java приложение со следующими функциями:

  1. При запуске без параметров приложение начинает раз в секунду писать текущее время(timestamp) в базу.
  2. При запуске с параметром -p приложение выводит содержимое базы на экран и завершает работу.

Description

Требуется обеспечить возможность корректной работы приложения привременной недоступности сервера базы данных - приложение должно выводить в лог или на экран информацию о том, что соединения нет, и предпринимать попытку установить соединение заново, а после восстановления соединения записать все данные, которые не попали в ДБ во время отсутствия связи. Таким образом, требуется временный буфер для хранения не сохраненных данных. Интервал восстановления соединения - 5 секунд.

Все данные должны записываться в ДБ строго в хронологическом порядке, т.е. при выводе данных на экран timestamp должен быть в Ascending Order без применения сортировки.

Нужно также учесть и соответственно «ответить» на вопрос (посредством кода): что будет происходить, если соединение с БД медленное или БД настолько загружена, что запись в нее будет забирать достаточно много времени.

Hint

Это двухпоточное консольное java приложение, в котором возможно применить следующий подход:

  1. Основной поток - раз в секунду генерирует timestamp и сохраняет его в буфер. Поток не должен прерывать свое выполнение при отсутствии соединения с базой данных.

  2. Дополнительный поток предназначен для работы с базой данных (сохранение данных и слежение за соединением к БД).

Database

База данных на выбор: MySQL, MongoDB. Способ хранения данных в базе: на усмотрение автора.

Contributing

Для запуска MySQL можно использовать Docker:

docker run --rm -it --name mysql \
       -e MYSQL_ROOT_PASSWORD=root \
       -e MYSQL_DATABASE=testdb \
       -v $PWD/database:/var/lib/mysql \
       -p 3306:3306
       mysql:latest

Для создания таблицы необходимо запустить initTable.sql.

Releases

No releases published

Packages

No packages published

Languages