В настоящее время я занимаюсь разработкой приложения, которое должно получать доступ к нескольким устройствам и собирать различные данные. Данные хранятся в базах данных (одна база данных на устройство), которые полностью идентичны (таблицы, представления, функции, хранимые процедуры и т. д.), несмотря на сами данные. ;) Может быть до 10 устройств, которые могут быть подключены или отключены во время работы.
Теперь вопрос в том, как спроектировать уровень доступа к данным? На данный момент я думаю о двух подходах:
- Один DAO на устройство, что приводит к 1..10 экземплярам, каждый из которых содержит информацию о соединении (с сохранением состояния).
- A single DAO which accesses all devices by receiving the connection information per method call (stateless).
Приложение должно быть многопоточным (параллельный доступ к базе данных), при этом производительность не критична, а это означает, что некоторые блокировки внутри кода были допустимы. Доступ к устройствам осуществляется только по требованию пользователя. Поскольку я исхожу из жизни RESTful Webservices, в настоящее время я предпочитаю вариант 2, потому что он не имеет состояния.