1. Databases are typically used to store persistent data that needs to exist approximately forever. Programs typically only store data temporarily, until it is restarted.
2. Hash tables provide constant time O(1) access for single values, while trees provide logarithmic time O(log n) access.