private function getCacheTablesSchema(): Schema
    {
        $schema = new Schema();
        $cacheTable = $schema->createTable($this->cacheTableName);

        $cacheTable->addColumn('identifier', Type::STRING, ['length' => 250]);
        $cacheTable->addColumn('cache', Type::STRING, ['length' => 250]);
        $cacheTable->addColumn('context', Type::STRING, ['length' => 150]);
        $cacheTable->addColumn('created', Type::INTEGER, ['unsigned' => true, 'default' => 0]);
        $cacheTable->addColumn('lifetime', Type::INTEGER, ['unsigned' => true, 'default' => 0]);
        $cacheTable->addColumn('content', Type::TEXT);

        $cacheTable->setPrimaryKey(['identifier', 'cache', 'context']);

        $tagsTable = $schema->createTable($this->tagsTableName);

        $tagsTable->addColumn('identifier', Type::STRING, ['length' => 255]);
        $tagsTable->addColumn('cache', Type::STRING, ['length' => 250]);
        $tagsTable->addColumn('context', Type::STRING, ['length' => 150]);
        $tagsTable->addColumn('tag', Type::STRING, ['length' => 255]);

        $tagsTable->addIndex(['identifier', 'cache', 'context'], 'identifier');
        $tagsTable->addIndex(['tag'], 'tag');

        return $schema;
    }