За последние 24 часа нас посетили 20260 программистов и 1695 роботов. Сейчас ищут 1746 программистов ...

База данных для сообщений в соцсети

Тема в разделе "PHP и базы данных", создана пользователем AlNick, 10 авг 2018.

  1. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Делаю движок соцсети и нужно решить как размещать в базе данных переписку пользователей. Если сделать одну таблицу для всех, то она получится большая и выборка будет нагружать сервер. А если для каждого пользователя свою таблицу делать, то таблиц будет много. На 10000 пользователей 10000 таблиц. Так вообще можно?)))) Какую структуру лучше сделать?
     
  2. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Наверное лучше будет одной таблицей для часа 1+1, второй 1+n пользователей, ну групповые чаты. Итого 2 таблицы. А выборки делать мелкими запросами и с limit и offset когда нужно посмотреть историю дальше Х сообщений.
     
  3. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Значительно ограничить выборку не получится. Дело не в том, что много сообщений нужно найти, а в том, что их нужно искать в огромной таблице. И искать придётся по всей таблице, ведь сообщения пользователя перемешаны с другими.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    одна таблица на все сообщения
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    прочти как работает бд как работают индексы ключи как оптимизировать поиск как кешировать результаты и т.д
     
  6. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Нет никакой логики в создании и использовании сотен и/или тысяч таблиц. Угробишь быстрее себя)
    Нужна единая точка входа и выхода, скажем так.
    Никакой оптимизации и выхлопа ты не получишь, создав кучу страниц. Подумай, что их тоже как то обработать надо на стороне сервера и понять, к какой обращаться .. Это нонсенс в общем.

    Снижают нагрузку, оптимизируя запросы, а также путем "наращивания" параметров железа и прч. прч. прч.

    К тому же можно хранить месседжи юзеров вообще на отдельном сервере.
    В наше время про это кучу информации написано. Грубо говоря тебе нужен чат.
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    дорости сначала до таких нагрузок, о которых говоришь.
    к тому времени, у тебя будет команда разрабов.
    у них и спросишь, как решить проблему большой нагрузки :)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сто таблиц или одна никак не влияет на то, влезают ли данные в оперативку, и простроен ли индекс по полям выборки