Как обработать изменение схемы данных в базах данных, отличных от SQL? - PullRequest
1 голос
/ 13 февраля 2011

По опыту работы с базами данных, отличными от SQL, одной из самых больших проблем было изменение схемы. Добавление или удаление столбцов в базе данных SQL - это простая операция, и сервер гарантирует стабильность данных при изменении схемы. Таким образом, он может обрабатывать изменения схемы данных во время продвижения сервиса. Но как базы данных, отличные от SQL (особенно системы объективных стилей), справляются с этими изменениями схемы? Есть ли надежный метод?

1 Ответ

2 голосов
/ 15 февраля 2011

Я согласен со Скаффманом, базы данных, отличные от SQL, охватывают широкий спектр продуктов.Каждый имеет тенденцию обеспечивать различные уровни управления схемой.

Например, базы данных пары ключ / значение, такие как Oracle Berkeley DB , не содержат схемы.То, что помещено в пару ключ / значение, является непрозрачной структурой, которая известна приложениям, которые обращаются к ней.В этом случае я часто видел, как приложения реализуют поле в структуре данных пары ключ / значение, чтобы указать версию схемы.Приложение при чтении или записи записи предпримет соответствующее действие в зависимости от найденной версии схемы.Это может быть выгодно для некоторых приложений, так как изменения схемы могут применяться в соответствии с требованиями для данной операции чтения / записи, а не для группового использования.

Другой пример, базы данных XML, такие как Oracle Berkeley DB XML , хранят данные в формате XML, который описывает себя.Хотя большинство XML-документов в коллекции обычно имеют одну и ту же схему, безусловно, возможно и даже желательно, чтобы схема имела дополнительные или меньшие атрибуты для данного документа (-ов).Эти базы данных, отличные от SQL, используют языки запросов, такие как XQuery, которые позволяют запрашивать структуру (атрибуты) данных, а также содержимое.

В еще одном примере хранилища данных на основе объектов, такие как API уровня устойчивости данных , предоставляемые с Berkeley DB, могут поддерживать эволюцию схемы, ориентированной на приложения, как часть базового API, как описано здесь .

Однако даже с базами данных SQL изменить схему только на поверхности очень просто.Приложение обычно должно быть осведомлено о любых изменениях схемы для правильной работы.Добавление столбца в базу данных SQL может отрицательно повлиять на приложения, которые обычно выполняют команду «SELECT *», а переименование или удаление столбца может отрицательно сказаться на приложениях, которые предполагали существование этого столбца.Базы данных SQL делают изменение схемы «простым» в том смысле, что есть команда SQL, которая позволяет добавлять, удалять и переименовывать столбцы.Требования к управлению схемой в стеке все еще должны быть продуманы и реализованы должным образом.

В итоге, как правило, эволюция схемы управляется ядром базы данных, приложением или промежуточным уровнем API.Что касается того, насколько это «легко», во многом зависит от прикладных уровней над ним и от того, как на них влияет изменение схемы.

Если вы можете более конкретно рассказать о проблеме, которую вы пытаетесь решить, мы могли бы предоставить более конкретные предложения.В частности, какую базу данных вы используете и как вы видите, как развивается ваша схема?

С уважением,

Дейв

...