Ordinary database engine is deprecated but there is no simple mean to change database engine to Atomic for existing databases.

Possible options:
- ALTER DATABASE MODIFY ENGINE query.
- Flag that triggers migration at ClickHouse startup.

The latter should be easier to implement. 

const StoragePtr & table() const override { return it->second; }
};
using DatabaseTablesIteratorPtr = std::unique_ptr<IDatabaseTablesIterator>;
/** Database engine.
  * It is responsible for:
  * - initialization of set of known tables and dictionaries;
  * - checking existence of a table and getting a table object;
  * - retrieving a list of all tables;
  * - creating and dropping tables;
  * - renaming tables and moving between databases with same engine.
  */
class IDatabase : public std::enable_shared_from_this<IDatabase>
{
public:
    IDatabase() = delete;
    explicit IDatabase(String database_name_) : database_name(std::move(database_name_)) {}
    
    virtual String getEngineName() const = 0;
    virtual bool canContainMergeTreeTables() const { return true; }
    virtual bool canContainDistributedTables() const { return true; }
    
    
    virtual void loadStoredObjects( 
        ContextMutablePtr ,
        LoadingStrictnessLevel ,
        bool )
    {
    }
    virtual bool supportsLoadingInTopologicalOrder() const { return false; }
    virtual void beforeLoadingMetadata(