Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Хранить только 225 записей в базе
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




Всем привет, имеется мини чат.

1) - Выводим сообщения
2) - Если пользователь пишет сообщение, естественно добавляем его

Нужно хранить только 225 записей, Не могу додумать как реализовать, я думаю тут какой то надо не простой sql запрос наверное или же какие то другие пути? Я вообще думал после добавления сообщения, смотреть сколько вообще есть записей в бд и удалять ненужные, и того получается 3 запроса, или так и должно быть?

В таком случае какой тип лучше дать таблице?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
icedfox  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 395
Пользователь №: 41702
На форуме: 1 год, 3 месяца, 20 дней
Карма: 13




Подумай в сторону разделения:
1. пока чат активен все записи пишутся в tmp табличку.
2. как только чат закончен, записи из tmp переносятся в архив.

Вот во время переноса уже можешь проводить все нужные манипуляции , т.к. это будет фактически разовая операция по сравнению с отправкой данных из активного чата.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




icedfox

Так он активен всегда. Или я что то не так понял под словом активен?

Мне вот что нужно при добавлении 256 сообщения в чат что бы 1-го не было в бд.

Может я зря переживаю, просто чат самое активное место, при 5-6к уников в сутки, не мало сообщений попадаем в чат, там стоит лимит на 255 записей ну 15 записей на страницу. Бывает такая ситуация что нужно у определенно id юзера поменять кое что во всем чате. Если будет 225 записей то проблем не будет, а если миллионы записей, ничего не захлебнется там?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




225 или 255 записей? Ты уж определись wink.gif 256 идет после 255, но вовсе не после 225.

В принципе, можно задействовать триггер. При вставке данных проверяешь (в триггере) количество записей. И если оно больше нужного, то просто "тупо" удаляешь одну запись.

Это сообщение отредактировал sergeiss - 31.03.2016 - 21:13


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




Цитата (sergeiss @ 31.03.2016 - 21:12)
225 или 255 записей? Ты уж определись


ну с кем не бывает, не ту клавишу нажал biggrin.gif Не суть в общем скок их там

Цитата (sergeiss @ 31.03.2016 - 21:12)
В принципе, можно задействовать триггер. При вставке данных проверяешь (в триггере) количество записей. И если оно больше нужного, то просто "тупо" удаляешь одну запись.


Спасибо, буду сейчас смотреть в эту сторону


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
asstral  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 108
Пользователь №: 38066
На форуме: 3 года, 3 месяца
Карма: 3




А тупо: SELECT zapis FROM table ORDER BY id DESC LIMIT 255
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DedMorozzz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Эникейщик
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 4053
Пользователь №: 19498
На форуме: 7 лет, 1 месяц, 6 дней
Карма: 89




делай 3 запроса. Система проще и надёжнее
Только с чем связано хранение только 225и записей ? Ещё и цифра такая странная...



Спустя 56 секунд DedMorozzz написал(а):
Цитата (sergeiss @ 31.03.2016 - 20:12)

В принципе, можно задействовать триггер

на самом деле не ок кастыль. Бизнеслогику выносить в мускул


--------------------
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




Цитата (DedMorozzz @ 1.04.2016 - 15:13)
на самом деле не ок кастыль. Бизнеслогику выносить в мускул

Не согласен. В данном случае это нормально как раз. Тут же нет завязки на содержание, т.е. оно не изменяется в триггере.
Да и при изменении данных внутри триггера также можно поспорить smile.gif Но это уже другая тема.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




Цитата (asstral @ 1.04.2016 - 14:50)
А тупо: SELECT zapis FROM table ORDER BY id DESC LIMIT 255


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


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DedMorozzz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Эникейщик
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 4053
Пользователь №: 19498
На форуме: 7 лет, 1 месяц, 6 дней
Карма: 89




Цитата (Wind @ 1.04.2016 - 16:02)
нужно будет изменить у какого то пользователя кое что в бд, причем во всех сообщениях чата, если записей будет много, то я и боюсь что долго будет обрабатывать

Много это сколько? И зачем ты данные юзера в чатах хранишь, а не юзер айди. Или я не верно понял?
Цитата (sergeiss @ 1.04.2016 - 15:33)
Не согласен. В данном случае это нормально как раз. Тут же нет завязки на содержание, т.е. оно не изменяется в триггере.

удаление в тригере. во 1х не очевидная логика при рефакторинге. Такой код поддерживать сущий ад. А 2е критерий при котором происходит удаление - это и есть бизнес логика)
Тригеры ок для реалтайм бекапов юзать, а не для выноса логики приложения


--------------------
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




Цитата (DedMorozzz @ 1.04.2016 - 17:33)
Или я не верно понял?


Не верно smile.gif Да храниться именно id пользователя, дело в том что сообщений много. В день 5-6к уников, а чат очень активный, я не отслеживал сколько за сутки поступает сообщений, но много.

Я вообще думал как вы и сказали реализовать в 3 запроса, но что то засомневался, что будет не правильно.

Спасибо, за то что развеяли сомнения smile.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DedMorozzz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Эникейщик
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 4053
Пользователь №: 19498
На форуме: 7 лет, 1 месяц, 6 дней
Карма: 89




Wind, я так понял переживаешь о месте и скорости поиска данных...
можешь сделать иначе. Поставить на крон удаление данных. Крон запускать раз в неделю
Скрипт который будет пинать крон, будет выбирать юзеров у которых больше лимита сообщений - и там подчищать последнии

Вариант 2 - намного сложнее, но лучше подходит при реально огромных объёмах данных(хотя бы от миллиона данных):
создаёшь партиции по месяцу (или какой интервал нужен). И каждый месяц запускаешь проверку, при которой очищаешь все партиции кроме текущей
truncate partition отрабатывает намного быстрее чем удаление по критериям
На выходе получишь данные за месяц-два (или необходимый интервал), а не лимит сообщений

В обоих вариантах, при каждом новом сообщении только 1 событие будет - запись. А удаление будет реализовано другой логикой


--------------------
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 3 дня
Карма: 9




DedMorozzz

На счет крона уже думал. Спасибо за ответы, буду что то решать smile.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса