2013-06-28 2 views
1

Представьте себе компанию, которая позволяет людям использовать их веб-программное обеспечение для создания веб-сайтов. Каждый клиент имеет один или несколько сайтов, которые они создали, и каждый из этих сайтов будет содержать, пожалуй, сотню «ячеек», которые содержат HTML для различных частей сайта. Мы точно знаем, что каждая ячейка будет использоваться только на одном сайте. Итак, мы имеем:База данных для разработчика веб-сайта

enter image description here

Теперь нам нужно описать клетки в каждом месте.

Один из способов - иметь огромную (и я имею в виду огромную) таблицу ячеек, которая содержит все ячейки, созданные миллионом клиентов. Затем каждая запись ячейки будет указывать обратно на siteId, где она была использована.

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

Спасибо за ваш вклад.

+0

Вы можете хранить таблицы конкретных компаний в отдельной базе данных. У этого есть преимущества, чтобы легко удалить его, если они отправятся в другое место, и это добавляет больше безопасности, чтобы остановить компанию, видя информацию компании B. Тогда у вас может быть служба резервного копирования премиум-класса – KeepCalmAndCarryOn

+0

Да, это была моя оригинальная мысль, но теперь у нас миллион баз данных! Это разумно? – Steve

+0

Кажется, много. В зависимости от вашей базы данных вы можете добавить кластерный индекс и добавить все строки в одну таблицу. Вам также потребуется некоторое планирование на случай непредвиденных обстоятельств, поскольку сбой базы данных повлияет на всех клиентов, хотя – KeepCalmAndCarryOn

ответ

1

Один из способов состоит в том, чтобы иметь огромный (и я имею в виду огромный) сотовый стол, который содержит все ячейки, созданные миллионами клиентов. Затем в каждой строке ячеек ячейки мы укажем на сайт, где он был использован.

Это, вероятно, маршрут, по которому я поеду. Большинство современных баз данных могут обрабатывать таблицы с сотнями миллионов строк, когда вы используете надлежащие методы настройки производительности.

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

Я бы сосредоточился на создании хорошо спроектированной нормализованной базы данных в этой точке, и если у вас возникнут проблемы с производительностью, я вернусь сюда с конкретной проблемой производительности.

+0

Да, это то, что я пытался сделать. Учтите, что когда кто-то обращается к странице, БД либо получит запрос «Дайте мне все ячейки из списка 100 миллионов, у которых есть siteID = 5», либо «Дайте мне все ячейки в таблице« SiteId_5_cell ». параметр, более важный, чем время загрузки. (Amazon обнаружил, что их доход вырос на 1% за каждые 100 мс, которые они сбрили со времени загрузки страницы.) Поэтому я и параноик. Если я смогу сэкономить сотни мс с готовой таблицей, я бы как бы это сделать. Если мы говорим о нас, я не буду беспокоиться. – Steve