2013-07-16 3 views
1

У меня есть сайт на общем хосте, где я ожидаю много посетителей. Мне не нужна база данных для чтения (все, что представлено на страницах, жестко закодировано в PHP), но я хотел бы хранить данные, которые вводят мои пользователи, поэтому только для записи. Фактически, я сохраняю это только для статистического анализа на нем (на моем локальном компьютере после его загрузки).лучшая структура таблицы mysql только для INSERT?

Так мои два вопроса:

  1. Является ли MySQL жизнеспособным вариантом? Он предназначен для работы на общедоступном хостинге с использованием PHP/MySQL, поэтому я не могу использовать много других причудливых пакетов, но если, например, запись в файл будет лучше для этой цели, это тоже возможно. Насколько я понял, добавление строки в файл является относительно сложной операцией для огромных файлов. С другой стороны, более 100 пользователей, одновременно подключающихся к базе данных MySQL, вероятно, также представляют огромную нагрузку, даже если это всего лишь один дешевый запрос INSERT.

  2. Если MySQL является хорошим вариантом, как лучше всего настроить таблицу? В настоящее время у меня есть одна таблица InnoDB с первичным ключом id, который автоматически увеличивает (рядом, конечно, столбцы, хранящие данные). Это универсальная конфигурация, поэтому, возможно, есть более оптимизированные способы, которые мне нужно только написать в таблицу, а не читать из нее?

Edit: я в основном боюсь, что сайт будет идти вирусный как только она выйдет, так что я ожидаю, что пользователи, чтобы посетить в очень короткие сроки. И, конечно, я бы не хотел потерять данные, которые они ввели из-за перегруженной базы данных.

+1

** Лучшая структура данных ** для данных только для записи - это ничего. Следующим лучшим будет плоский файл ... то есть, если вы действительно беспокоитесь о том, что записи сохраняют обработку. Я предполагаю, что большую часть времени это не имело бы значения. – PaulProgrammer

+0

@PaulProgrammer - Разве это не то, для чего предназначен механизм хранения MySQL BLACKHOLE? :) –

+1

На самом деле это не для написания, вам нужно прочитать его для статистического анализа. – Barmar

ответ

3

MySQL - отличный выбор для этого. Вероятно, намного лучше, чем плоский файл, поскольку вы говорите, что хотите скопировать и проанализировать эти данные позже. Для этого с плоским файлом может потребоваться много времени, особенно если файл большой. Кроме того, СУБД предназначены для агрегирования и обработки данных. Идеально подходит для создания данных отчета.

Поместите любые столбцы данных в таблицу и какой-то идентификатор, чтобы отслеживать пользователя, в дополнение к существующему ключу строки. IP-адрес является логичным выбором для отслеживания пользователей, или потенциально может быть полезным значение файла cookie. Это всего лишь один стол, вам не нужно слишком много думать об этом. Вы можете добавить некластеризованные индексы в столбцы, которые вы часто фильтруете для отчетов, например. IP-адрес, дата доступа и т. Д.

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

RDBMS, такие как MySQL, явно предназначены для обработки тяжелых нагрузок при условии соответствующей аппаратной поддержки. Не потейте.

+0

Отчет составлен на моем локальном компьютере, так что это не проблема, но ОК, я буду придерживаться этого. Благодаря! :) – user1111929