In Delta Lake, managing datasets with frequently changing schemas while preserving historical data integrity is essential for analytics. What is the best approach to handle schema evolution for adding new columns and changing data types without affecting existing queries?