Add mark/sweep behavior

Instead of dropping and creating all DB objects, this method stays transaction-safe, at the cost of a new DB column `keep`. Thoughts?