Лучшие практики денормализации данных из реляционных БД в нереляционные

У меня есть веб-сайт, который начинает расширяться за рамки простой производительности и настройки. Это приложение PHP с MySQL в качестве бэкэнда. MySQL правильно настроен, а код оптимизирован.

Дело в том, что я вижу, что могу использовать некую денормализацию для ускорения работы.

Предположим, у вас есть сайт, похожий на ebay или Amazon. В вашей базе данных есть продукты с некоторой связанной с ними информацией (продавец, покупатели, купившие продукт, город, штат и т. Д.). Это будет несколько таблиц в реляционной базе данных, и неплохо было бы сохранить их таким образом, чтобы делать хорошие запросы. Но, например, для домашней страницы у вас может быть один денормализованный документ (например, в MongoDB). Это может быть коллекция с последними продуктами, денормализованная, наподобие этой:

products = {
   {
      id:13,
      name:"Some product",
      city:"aCity",
      state:"aState",
      price:"10"
   },
   {
      id:123,
      name:"another product",
      city:"aCity",
      state:"aState",
      price:"10"
   }
}

Таким образом, я мог бы запросить эту коллекцию вместо базы данных MySQL (со всеми задействованными соединениями), и все могло бы работать очень быстро.

Теперь, вот вопрос. Когда и как бы вы денормализовали эти данные? Например, я мог бы решить, что хочу денормализовать данные, когда они вставлены.

Итак, в моем "create-product.php" (проще говоря). Я мог бы выполнить всю «вставку в» для mysql, а после этого я мог бы сохранить коллекцию Mongo.

Или я мог бы просто запустить программу на сервере. Или заставьте cron искать самые свежие продукты.

Все это возможности. Чем ты занимаешься? Каков ваш опыт?

Большое спасибо.

5
задан santiagobasulto 28 July 2011 в 15:39
поделиться