Мимо Проходящий
одну глоб. переменная с конекшеном к бд - меньше кода чем нежели создавать db в main-е и передавать в каждую функцию, обращающуюся к бд. Соответственно в данном случае это лучше. Вроде всё просто
Dependency injection container в помощь. И без глобальных переменных и все в одном экземпляре (ну или как реализуем инстанцирование той или иной зависимости), куча бонусов сверху, такие как вызов любого кода с каждым инстансом при завершении программы, итерирование зависимостей.