• C архитектурой/выборкой с таблицы?

    leutsky
    @leutsky
    с другой стороны, можно использовать и первоначальный запрос:

    SELECT * FROM timeline WHERE id > %s AND date_created <= %s ORDER BY date_created DESC, id ASC LIMIT 10
    


    но нужно обеспечить условие, чтобы каждое новое событие имело дату больше или равную дате предыдущего события и идентификатор, больший чем у предыдущего
  • C архитектурой/выборкой с таблицы?

    leutsky
    @leutsky
    да, понял в чем проблема. тут нужно уже подумать.

    Можно попробовать решить следующем образом.
    Создаем уникальный идентификатор для каждого события:
    uid = unix_datetime << 32 + event_id
    + создаем к нему индекс в бд.
    event_id — должен быть уникален, и тем самым он обеспечит уникальность этому идентификатору. А конструкция unix_datetime << 32 «размажет» события по временной шкале. 32 — это количество бит (=integer). Т.е получится своеобразный идентификатор, привязанный к времени, но при этом уникальный.
    Если вы ожидаете, что количество событий перевалит за пределы uinteger, то нужно подумать над тем, как хранить uid. Можно для него использовать тип Decimal или varchar. А так можно обойтись типом bigint.

    далее работаем с этим индексом, как с обычным числом. Т.е запрос будет следующим:
    SELECT * FROM timeline WHERE uid < %s ORDER BY uid DESC LIMIT 10
    


    Также почитайте это Разработка простого аналога Twitter'а с использованием Redis в качестве БД, т.к по сути то, что вы хотите сделать подобно твиттеру))
  • C архитектурой/выборкой с таблицы?

    leutsky
    @leutsky
    при малом количестве записей этот запрос прокатит, но для лучшей производительности лучше делать условие так, чтобы однозначно попадать на нужную позицию в таблице и затем выбирать всегда только первые 10 записей.

    ps в MySQL:
    LIMIT 0, 10 — выберет первые 10 записей — гуд
    LIMIT 10, 10 — будет выбрано 20 записей и в прогу будет передано только последние 10

    LIMIT 1000, 10 — будет выбрано 1010 записей и в прогу будет передано только последние 10
  • Как сделать плавающий CSS splitter (разделитель) блоков?

    leutsky
    @leutsky
    судя по тому, какой Вам макет нужно сделать, лучше всего сделать свою реализацию, т.к. Вам еще нужно будет менять высоту области ввода сообщения. Хотя, с другой стороны, изменение высоты области ввода сообщения можно реализовать за счет css.