Запуск сайта аналитики .... 1 тяжелая вставка против нескольких легких выборок и вставок - PullRequest
3 голосов
/ 21 июля 2011

В настоящее время дизайн моей базы данных не нормализован.

Когда пользователь посещает веб-сайт, все данные, такие как полное имя браузера, имя ОС и т. Д., Сохраняются. Это приводит к очень быстрому росту базы данных со скоростью около 10 ГБ в день, когда всего 2 миллиона человек в день (2 миллиона вставок в день). Однако это только означает, что для данных существует только одна вставка. Я использую mysql и php.

Теперь, что мне было интересно, было бы быстрее, если бы я нормализовал данные. Я имею в виду создание отдельных таблиц для имени ОС и идентификаторов ОС, имени браузера и идентификатора браузера. Затем используйте идентификаторы в таблице журнала трафика. В этой ситуации будет два поиска в таблице браузера и таблице os для идентификаторов, и если они не существуют, то две вставки, а затем еще одна вставка с идентификатором браузера и идентификатором ОС в таблице журнала трафика. Таким образом, 2 выбора и 2 потенциальных вставки и 1 набор вставок.

Какой из них, вероятно, будет быстрее. Также есть какие-то другие опции для файлового подхода для хранения операционной системы и т. Д., Или, может быть, сохранить все возможные браузеры, операционную систему в массивах, а затем вставлять только в том случае, если у посетителя есть один из этих браузеров, или операционная система просто вставляет их как нет.

1 Ответ

3 голосов
/ 21 июля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...