Как хранить данные пользовательского агента? - PullRequest
3 голосов
/ 20 декабря 2010

Когда мы обнаруживаем эти предметы для посетителей:

  • Имя браузера
  • Версия браузера
  • Название ОС
  • версия ОС
  • Разрешение экрана
  • Глубина экрана
  • Вспышка включена
  • ...

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

И должен ли я использовать varchar(255) для того, чтобы это было безопасно, или есть ли четко определенные типы данных для этих предметов? Я использую MySQL и PHP

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

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

Разбор при вставке стоит дешево. Разбор каждого запроса очень дорогой.

2 голосов
/ 20 декабря 2010

Это действительно зависит от того, что вы хотите делать с информацией. Если вы планируете использовать данные для очень подробной статистики, используйте отдельные столбцы, чтобы вы могли запускать подробные запросы, такие как «показать все разрешения экрана для пользователей с Internet Explorer 6» и тому подобное.

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

1 голос
/ 20 декабря 2010

Для этих элементов нет определенных типов данных, поэтому вы можете использовать varchar(255) или даже меньше.Лучше добавлять эти значения в базу данных в отдельных полях, потому что это не оказывает заметного влияния на производительность: вставки выполняются один раз, чтение - большее количество раз, так почему бы не разделить один раз при записи, а не при каждом чтении?:)

...