Инструменты и советы по переключению CMS - PullRequest
5 голосов
/ 07 января 2011

Я работаю в университете, и в прошлом году мы наконец оторвались от нашего статического HTML-сайта в несколько тысяч страниц и перешли на сайт Drupal. Это, очевидно, влечет за собой огромные объемы ввода данных.

Что, если вы уже используете CMS и переключаетесь на другую, которая лучше соответствует вашим потребностям? Как минимизировать объем ввода данных во время таких огромных изменений? Существуют ли инструменты, разработанные для этого, или какие-то лучшие практики, которым нужно следовать?

Ответы [ 4 ]

7 голосов
/ 07 января 2011

Модуль Migrate для Drupal окажет большую помощь.Миграция данных Economist.com на Drupal даст вам общее представление о процессе.

Видео из Migration: не только для птиц презентация на Drupalcon DC 2009, вероятно, несколько устарела, но также дает хорошее представление.

5 голосов
/ 14 января 2011
  • Ожидайте, что вам придется как обрабатывать, так и обрабатывать данные вручную, что бы ни случилось. С самого начала признайте, что ваши данные, вероятно, будут в худшем состоянии, чем вы думаете: поля будут использованы не по назначению; ссылки «запись-запись» (внешние ключи) могут быть реализованы неправильно или вообще не реализованы; контент может нуждаться в прополке и иногда быть просто плохим или неправильным.

  • Проверьте кодировку базы данных. Старые базы данных не будут в Unicode-кодировках и будут раздражительными, если вам придется экспортировать дампы данных и импортировать их в другое место. Даже тогда предположим, что в ваших данных будут какие-то дурацкие непечатаемые символы: программы вроде Word, кажется, каким-то образом внедряют их повсюду, и я видел ... кодовые точки ... вы, люди, не поверите. Рассмотрите возможность очистки ваших данных до того, как вы начнете (или даже очистите дамп базы данных) для этих символов. Решите, следует ли их отбрасывать или попытаться преобразовать в случае, например, Слово «умные» знаки препинания.

  • Очень сложно создать явные структуры данных из подразумеваемой. Если ваши входящие данные имеют отдельное поле даты, вы можете сопоставить это с полем даты; если она содержит часть большого фрагмента HTML, даже если эта дата находится в теге с атрибутом id, простой сценарий не будет работать. Вы можете использовать автономные сценарии с BeautifulSoup или (если ваш HTML немного лучше) для более быстрой lxml предварительной обработки набора данных, извлечения этих неявных полей и сохранения их в неявном формате. Подумайте о создании промежуточной базы данных, куда пойдут эти ревизии.

  • Модуль Migrate превосходен, но чтобы получить действительно хорошую достоверность данных и использовать более хитрые уловки, вам может понадобиться узнать о его системе хуков (терминология Drupal для функций, следующих определенной схеме именования) и основах написания модуль для установки этих хуков (в общем случае модуль - это просто файл PHP, в котором все функции начинаются с одного и того же текста, имени файла модуля.)

  • Весь импортируемый контент должен быть помечен как минимум для краткой проверки. Вы можете сделать это, импортировав его с status = 0, то есть неопубликованным, а затем создать представление с помощью модуля Views, чтобы просмотреть содержимое и открыть его на других вкладках для проверки. Операции массового просмотра позволяют вам иметь набор флажков рядом с вашими элементами просмотра, чтобы вы могли утверждать сразу несколько узлов.

  • Ожидайте запуска, повторного запуска и повторного запуска импорта, каждый раз исправляя новые вещи. Проверьте десять или двадцать пунктов как можно раньше. Если есть какие-либо проблемы, проверьте еще десять или двадцать. Исправьте и повторите импорт.

  • Определите, сколько времени может занять один запуск импорта. Будьте пессимистичны: у нас был импорт, который мы ожидали занять десять часов, столкнулись с экспоненциальным замедлением, когда мы представили полный набор данных; пока мы, наконец, не исправили некоторые медленные запросы, это, по прогнозам, заняло бы две недели.

  • Если вы сомневаетесь, или если вы думаете, что технические аспекты вышеупомянутого просто займут больше времени, чем сама работа, тогда просто наймите временных для обработки данных. Но вам все равно нужны достойные средства контроля качества, как можно раньше во время их работы. Разработчики Drupal также нанимаются: попробуйте соответствующий IRC-канал вашей страны или разместите заметку в соответствующей группе groups.drupal.org. Они дороже, чем временные, но обычно пишут лучше на PHP ...! Также подумайте о найме агентства: это бесстыдная вилка, так как я работаю на нее, но иногда лучше привлекать специалистов для этих конкретных работ.

  • Действительно хороший импорт всегда труден, сложнее, чем вы ожидаете. Не позволяйте этому сбить вас с толку!

2 голосов
/ 12 января 2011
  1. Вы захотите получить доступ к существующим данным из django. Это мне очень помогает с миграцией: http://docs.djangoproject.com/en/1.2/howto/legacy-databases/. С правильными определениями модели вы будете иметь полную силу django, включая администратора. На самом деле, я использую django как административный сервер для нескольких устаревших php-проектов - администратор django может легко получить множество пользовательских рукописных сценариев администратора.

  2. Авторизация должна оставаться прежней. Пользователи должны иметь возможность войти в систему со своими учетными данными, но написать сценарий миграции для аутентификационных данных сложно, поскольку схемы хэширования паролей могут отличаться, и невозможно выполнить преобразование между ними без знания простых паролей. Django предоставляет способ поддержки различных источников аутентификации, поэтому вы можете написать бэкэнд аутентификации Drupal: http://docs.djangoproject.com/en/1.2/topics/auth/#writing-an-authentication-backend

  3. Нет необходимости полностью переписывать. Если некоторые части работают нормально, они все еще могут работать на Drupal. Новый код может быть написан с использованием Django с тем же интерфейсом. Маршрутизация между старой и новой частями может быть выполнена путем перезаписи URL веб-сервера. Обе части django и drupal могут питаться от одной и той же базы данных.

2 голосов
/ 12 января 2011

Мастер миграции + таблицы (и схемы + представления) - это путь.С помощью мастера таблиц вы можете открыть любую таблицу для полей drupal и map соответственно, используя migrate.

Подробный обзор здесь: http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard

...