Two points:
1. Encrypt all database data, decrypt in application.
2. If you only do perimeter defense, you're doing it wrong.
1. Encrypt all database data, decrypt in application.
2. If you only do perimeter defense, you're doing it wrong.
2. You can use key distribution schemes to the app servers.
3. If you need to 'live' search in personal data you're doing it wrong. You can move search to a fulltext engine for the stuff you really need, which is more difficult to dump and reassemble. E.g. if you search for city, you only have primary keys and cities in one system.
4. You should also not keep profiles, personal data and other data on one server. Compromising one of the access paths will compromise all your data.