Я согласен со Скаффманом, базы данных, отличные от SQL, охватывают широкий спектр продуктов.Каждый имеет тенденцию обеспечивать различные уровни управления схемой.
Например, базы данных пары ключ / значение, такие как Oracle Berkeley DB , не содержат схемы.То, что помещено в пару ключ / значение, является непрозрачной структурой, которая известна приложениям, которые обращаются к ней.В этом случае я часто видел, как приложения реализуют поле в структуре данных пары ключ / значение, чтобы указать версию схемы.Приложение при чтении или записи записи предпримет соответствующее действие в зависимости от найденной версии схемы.Это может быть выгодно для некоторых приложений, так как изменения схемы могут применяться в соответствии с требованиями для данной операции чтения / записи, а не для группового использования.
Другой пример, базы данных XML, такие как Oracle Berkeley DB XML , хранят данные в формате XML, который описывает себя.Хотя большинство XML-документов в коллекции обычно имеют одну и ту же схему, безусловно, возможно и даже желательно, чтобы схема имела дополнительные или меньшие атрибуты для данного документа (-ов).Эти базы данных, отличные от SQL, используют языки запросов, такие как XQuery, которые позволяют запрашивать структуру (атрибуты) данных, а также содержимое.
В еще одном примере хранилища данных на основе объектов, такие как API уровня устойчивости данных , предоставляемые с Berkeley DB, могут поддерживать эволюцию схемы, ориентированной на приложения, как часть базового API, как описано здесь .
Однако даже с базами данных SQL изменить схему только на поверхности очень просто.Приложение обычно должно быть осведомлено о любых изменениях схемы для правильной работы.Добавление столбца в базу данных SQL может отрицательно повлиять на приложения, которые обычно выполняют команду «SELECT *», а переименование или удаление столбца может отрицательно сказаться на приложениях, которые предполагали существование этого столбца.Базы данных SQL делают изменение схемы «простым» в том смысле, что есть команда SQL, которая позволяет добавлять, удалять и переименовывать столбцы.Требования к управлению схемой в стеке все еще должны быть продуманы и реализованы должным образом.
В итоге, как правило, эволюция схемы управляется ядром базы данных, приложением или промежуточным уровнем API.Что касается того, насколько это «легко», во многом зависит от прикладных уровней над ним и от того, как на них влияет изменение схемы.
Если вы можете более конкретно рассказать о проблеме, которую вы пытаетесь решить, мы могли бы предоставить более конкретные предложения.В частности, какую базу данных вы используете и как вы видите, как развивается ваша схема?
С уважением,
Дейв