Мне нравится использовать Poco , который имеет удобный класс ServerApplication, который можно использовать в приложении, которое можно запускать либо как обычное приложение командной строки, либо как службу Windows, либо как * nix daemon без необходимости касаться кода.
Если вы используете «настоящую» базу данных (MySQL, PostgreSQL, SQL Server), то запрос к базе данных из приложения с графическим интерфейсом, вероятно, подойдет и проще. Если вы используете базу данных другого типа, которая не обязательно является многопользовательской, вам следует взаимодействовать со службой, используя петлевые сокеты или каналы.
Что касается использования процессора, вы можете просто использовать несколько «спящих» вызовов в вашем коде, который ищет файлы, чтобы убедиться, что он не перегружает порты процессора и ввода-вывода. Или используйте какое-то интервальное уведомление, чтобы периодически выполнять поиск по частям.