2010-09-25 2 views
0

Я делаю сайт для документирования ошибок браузера, где пользователи могут отправлять ошибки, и пользователи могут отправлять решения/обходные пути к этим ошибкам. Я буду иметь такие вещи, как:Будет ли какая-либо польза от использования redis/nosql над postgres для моего приложения отслеживания ошибок?

  • скриншоты ошибок
  • браузер рендеринга двигателей
  • браузеры
  • теги для каждой ошибки
  • категории ошибок (CSS, HTML, JS)
  • решения в ошибка, которая включает в себя фрагменты кода
  • обычная дата/время, автор, дата изменения

Поскольку я только начинаю этот сайт, мне действительно не нужно будет сбрасывать с места. Мне просто интересно, являются ли данные более идеальными для чего-то вроде redis, или я должен придерживаться rdbms (в моем случае Postgres)?

ответ

2

Информация об ошибках вращается вокруг продуктов и пользователей, и эти данные извлекают выгоду из реляционной структуры. (Для примера вы можете посмотреть множество существующих трекеров ошибок). Если вы обнаружите, что вам понадобятся иерархические структуры данных (например, redis наклоняется), в традиционном sql существует несколько различных реализаций древовидных структур, а postgres предлагает некоторые дополнительные конструкции, такие как массивы и структуры ltree. Кроме того, Postgres имеет довольно проверенные методы хранения двоичных данных (например, скриншоты) и больших текстовых данных, которые зависят от вашего движка nosql, возможно, не так стабильны, как вы могли бы надеяться. Я предполагаю, что может быть какая-то польза от изучения другой системы (otoh, другие считают, что лучше изучить ваши существующие инструменты лучше), но с технической точки зрения на самом деле нет преимущества.

+0

Интересно. Однако вы порекомендовали бы хранить фактические изображения в БД? Я слышал обе стороны истории. Я думаю, что было бы более эффективно хранить только путь отдельного CDN, не так ли? –

1

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

Вместо этого вы можете хранить изображения в каком-либо каталоге, а имя файла может быть либо идентификатором из базы данных, либо md5 (секретным ID +), если вы беспокоитесь, что люди могут «взломать» систему и увидеть изображения, которые они не должны видеть.

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

Я огромный поклонник Redis, но этот проект больше похож на RDBMS для меня.

+0

md5 (ID + secret): $ secret = "i love redis"; $ id = get_from_db(); $ image_path = "screenshots /"; $ image = $ image_path. md5 ($ id. $ secret). ".gif"; echo "screenshot"; – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^