Задать вопрос
Ответы пользователя по тегу PostgreSQL
  • Как быстро сортировать в большой таблице по часто изменяемому полю?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Надо посмотреть как часто игроки сморят на рейтинг и попробовать организационно решить. Например отвязать рейтинг от очков в игре и ввести "магический" прогресс-параметр (темп набора очков) . Тогда, по сути, точно ли ты посчитал место в рейтинге или нет -- пользователю проверить уже невозможно. Кроме того, можно предположить, что те кто с 1-го по 1000-ое место, интересуются своим рейтингом более серьезно, чем те что с 100000-го по 500000-е... И тогда простор и раздолье, как все можно реорганизовать. Например, раздели пользователей на группы -- Гуру, Профи, Салаги, Микроорганизмы (причем поделить можно по частоте обращений к рейтингу) -- для каждой группы своя таблица (можно даже в БД на отдельной ноде), а в таблицу пользователей добавь указатель к какой группе он принадлежит... Соответственно очки пиши в обе таблицы (это быстро), но индекс будет только на той таблице, что поменьше... При запросе рейтинга показывать пользователю, место в рейтинге только в его группе, а делать "большую сортировку" и раскидывать по группам -- раз в день во время низкой активности...

    Вариантов такой организационной переделки для снижения нагрузки может быть много. Возможно я не прав, но не всегда имеет смысл решать техническую задачу в лоб.
    Ответ написан
  • Можете посоветовать книжку по проектированию баз данных?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Не усложняйте себе жизнь. У вас есть данные. Вы знаете как вы с ними будете обращаться, как часто читать, как часто обновлять, по каким полям сортировать, как группировать... Вы знаете каких данных много, каких мало... Все что остается -- разбросать по разным таблицам и наладить связи.

    Из того, что реально стоит забот: решить в каком месте стоит уступать стройности данных и выбрать дублирование в ущерб производительности. Но это лучше понять когда начнете реально нагружать свое творение и увидите, что, например, рекурсивные вопросы не так уж красивы и ради них стоит ввести еще одно поле. А какое -- с уровнем вложенности или обозначения корня вложений -- решите по ходу дела.
    Ответ написан
    Комментировать