Я ищу способ автоматизации миграции схемы для таких баз данных, как MongoDB или CouchDB.
Предпочтительно, чтобы этот инстант был написан на питоне, но любой другой язык в порядке.
Я ищу способ автоматизации миграции схемы для таких баз данных, как MongoDB или CouchDB.
Предпочтительно, чтобы этот инстант был написан на питоне, но любой другой язык в порядке.
Так как база данных nosql может содержать огромное количество данных, вы не можете ее перенести в регулярное значение rdbms. На самом деле вы не можете сделать это для rdbms, как только ваши данные пройдут порог определенного размера. Нецелесообразно приводить ваш сайт в течение дня, чтобы добавить поле в существующую таблицу, и поэтому с помощью rdbms вы в конечном итоге делаете уродливые исправления, такие как добавление новых таблиц только для поля и выполнение объединений для доступа к данным. В мире nosql вы можете сделать несколько вещей.
Одно из предполагаемых преимуществ этих баз данных состоит в том, что они являются схематичными и, следовательно, не нуждаются в средствах миграции схемы. Вместо этого вы пишете свой код обработки данных для обработки разнообразных данных, хранящихся в db.
Если ваши данные достаточно велики, вы, вероятно, обнаружите, что не можете ПЕРЕДАТЬ миграцию данных или что это не выгодно. Это означает, что при изменении схемы код должен продолжать быть обратно совместимым со старыми форматами навсегда.
Конечно, если ваши данные "возраст" и, в конечном счете, истекли, это может сделать миграцию схемы для вас - просто измените формат для новых добавленных данных, а затем дождитесь истечения всех данных в старом формате - вы можете удалить код обратной совместимости.
Когда проект нуждается в миграции схемы в отношении базы данных NoSQL, мне кажется, что вы все еще думаете о реляционной базе данных, но используете базу данных NoSQL.
Если кто-то начнет работать с базами данных NoSQL, вам нужно понять, что большинство "правил" для РСУБД (т.е. MySQL) необходимо выходить из окна. Такие вещи, как строгие схемы, нормализация, использование многих взаимосвязей между объектами. NoSQL существует для решения проблем, которым не нужны все дополнительные функции, предоставляемые СУРБД.
Я бы настоятельно рекомендовал вам написать свой код таким образом, который не ожидал бы или не нуждался бы в жесткой схеме для вашей базы данных NoSQL, - вы должны поддерживать старую схему и конвертировать запись документа на лету, когда вы обращаетесь, если вы действительно хотите больше полей схемы в этой записи.
Пожалуйста, имейте в виду, что хранилище NoSQL работает лучше всего, когда вы думаете и разрабатываете по-другому по сравнению с использованием RDBMS