Ответы пользователя по тегу Веб-разработка
  • На какой связке лучше сделать проект с высокой нагрузкой на базу данных?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Грамотная архитектура бд - ваше все.
    Ответ написан
    Комментировать
  • Как защитить API сервиса платного контента?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Запомните пожалуйста: клиент в руках врага. Всегда. Исключений нет. Любая защита может быть только на сервере, на клиенте - только видимость.
    Ответ написан
    4 комментария
  • Какие вопросы задавать потенциальным подрядчикам по созданию сайта?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Попросите показать их лучший проект и оцените его удобство. По остальным вопросам согласен с предыдущим оратором
    Ответ написан
    Комментировать
  • Как работает функционал удаления сообщения в больших социальных сетях?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Вариант 2 и тому две причины:
    - фрагментация есть зло
    - необратимых действий быть не должно в принципе

    Что касаемо сообщений в двух ящиках то примерно так (в ваших терминах):
    message_id, is_deleted, keeper_id, sender_id, receiver_id, message

    Индекс по message строить беcполезно если у вас MySQL, у это СУБД нет FTS. Тут вам поможет elasticsearch или sphinx. Если же вы юзаете PostgreSQL то гуглите FTS и вперед)

    Если сервис маленький то преждевременная оптимизация вам ни к чему. Однако помните что при создании внешних ключей должны быть индексы по полям на которые ссылаетесь и с которых ссылаетесь.
    Я в таблице личных сообщений на достаточно крупном сервисе (более 500 млн сообщений) внешние ключи не ставил в принципе: сохранение консистентности данных не так важно. Если пользователей очень много можно пойти в сторону денормализации: отказаться от join и хранить имя отправителя/получателя в таблице сообщений.
    На определенном этапе так же возникнет вопрос кластеризации и шардинга таблицы, но это уже при количестве записей ближе к 1 млрд

    Если у вас будут объемы >1 млрд сообщений то я думаю тут уже будет разумен найм DBA, а пока YAGNI
    Ответ написан
  • Зачем нужны Solr, Sphinx, и прочие системы поиска?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Они нужны затем чтобы выполнять быстрый морфологический поиск по вашим данным.
    Однако при наличии нормальной СУБД, как например PostgreSQL их полезность уже не так очевидна, поскольку у последнего есть FTS и n-грамм-индексы.
    Ответ написан
    Комментировать
  • Как правильнее организовать архитектуру сервиса?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    По первому: наиболее секурно все же отдельные виртуальные машины.
    Однако если вопрос только в БД, при условии нормальной архитектуры самого приложения и бд скажем PostgreSQL/Oracle То я бы остановился на схемах. Причем каждый поддомен работает от своего пользователя/схемы с четко разграниченными грантами.
    С управляющей схемой контактируют только системы полностью изолированные от пользователя.
    Начальное копирование баз для posgre, скажем: от простого дампа основной схемы/create table like до create table of type / inherits

    По второму пункту: при грамотной реализации ничего тормозить не будет, во всяком случае у меня 250млн сообщений при 2тысячах активных пользователей не тормозили абсолютно. Тут больше думать нужно над реализаций самих сообщений. Если скажем мы можем удалять свое сообщение из переписки то его копия не нужна, если не можем то табличка вида
    -message_id
    -message_text
    -message_theme (если нужно)
    -parent_id (для иерархии ответов, если нужно),
    -folder_id (если нужны папочки)
    -author_id
    -author_name
    -recipient_id
    -recipient_name
    -keeper_id
    Решает все проблемы. На каждое сообщение создается два экземпляра и соответственно если keeper_id==author_id то это исходящее, если keeper_id==recipient_id - входящее. Имена отправителя/получателя кешируем в соответствующих полях дабы не выполнять на каждый чих лишний джоин а так же дабы не потерять адресата если вам захочется потереть пользователя из бд (что само по себе плохая идея). Определяемся нужны ли темы,папки итд и составляем индексы под наши запросы - все: радость и счастье, бабочки летают.
    Ответ написан
    2 комментария
  • Как отправить два Post запроса подряд с задержкой | PHP?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    man cron
    Ответ написан
    Комментировать