Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Добрый день.

Каким образом можно организовать очередь задач, не используя SQL базу?

Есть вполне конкретная задача, учет показов, т.е. надо сложить показ куда-то в легкое временное хранилище на первом сервере, а потом постфактум по крону перенести и посчитать в MySQL на втором сервере.

Сейчас сервер 1 кладет показ в сервер 2 в MySQL в таблицу типа MEMORY, но этот вариант нас не устраивает, необходимо полностью изолировать первый и второй сервер.

Пробовали Memcached приспособить для этих целей, но во-первых есть лимит по размеру одного ключа, а если хранить по схеме 1 ключ = 1 показ, то надо где-то хранить карту индексов, а эта карта может разрастаться в пиковые часы и опять же не влезть в key-value БД по лимиту, плюс карта из-за мгновенно доступа может вымываться.

В общем, интересует какое-нибудь легкое хранилище или модуль к мемкэшу, в общем простое решение без экзотики.

Кто что посоветует?
10 сен 13, 14:39    [14820283]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4919
Блог
Очередь сообщений - JMS.
10 сен 13, 14:47    [14820353]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Потестили сегодня RabbitMQ и как-то не очень обнадежило:

1. Громоздко.
2. Медленно.
3. Кушает CPU и память.
4. При вставке от 1 млн строк начинаются проблемы.

Может быть есть какие-то решения полегче?
11 сен 13, 04:21    [14823577]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5825
itstrue
Добрый день.

Каким образом можно организовать очередь задач, не используя SQL базу?

Кто что посоветует?


Написать самому ;-)

Например:
Java + HasMap<Ваш объект>+servlet+JSON
11 сен 13, 11:40    [14824976]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Нужен вариант проще. Неужели это настолько уникальный вопрос, чтобы начать изобретать велосипед?
По сути нужна быстрая легкая база, куда можно быстро вставлять/извлекать большое количество мелких данных.

Сегодня протестировали редис:

100k строк с данными:

редис:

Вставка = 22.3 s
Чтение = 7.3 s
Чтение + удаление = 47.5 s
мускул:

Вставка = 67.439 s.
Чтение = 8s
Чтение + удаление = 43s

У редиса очень быстрая вставка, но все остальное такое как у MySQL. Этот момент очень огорчил.

Порекомендуйте как поступить.
12 сен 13, 22:34    [14833871]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Если ставить тип MEMORY у таблицы MySQL, то рекурсивное удаление выполняется за 37с.
Получается, что у редиса, кроме как быстрой вставки больше плюсов нет?
12 сен 13, 23:07    [14833988]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54799

itstrue
По сути нужна быстрая легкая база, куда можно быстро вставлять/извлекать
большое количество мелких данных.

Для этого не нужна база, достаточно любым способом организовать очередь в ОЗУ. От списков
до кольцевого буфера. Первый курс программирования.

Posted via ActualForum NNTP Server 1.5

12 сен 13, 23:23    [14834039]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Заменили клиент для редиса с редиски на phpredis и ужаснулись, запись и чтение выросло в 7-8 раз!
Теперь понятно, почему были такие ужасные показатели.
Но с удалением скорость не изменилась. Как можно ускорить его процесс?
14 сен 13, 22:16    [14840388]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
DPH3
Member

Откуда:
Сообщений: 456
itstrue,

А чем файловая система не устраивает? Писать пачками по сколько-нибудь записей в один файл, заполненные файлы копировать на вторую машину и удалять.
Куда уж быстрее )
15 сен 13, 12:42    [14841137]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
itstrue
Member

Откуда:
Сообщений: 93
Интересный вариант, а копировать с помощью чего?
15 сен 13, 14:02    [14841286]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
DPH3
Member

Откуда:
Сообщений: 456
itstrue
Интересный вариант, а копировать с помощью чего?

Да хоть rsync ;)
Уж способов копирования файлов на удаленную машину - дофига.

Главное - не копировать те, что еще пишутся, но это можно сделать фильтрацией по размеру или дате или названию или чему-нибудь еще.
Т.е. вообще все реализуется внутри шелла )

Ну а писать - хорошим логгером, например, если он есть в выбранном языке.
Основная проблема - как писать из кучи потоков с минимальными задержками. Но это все не безумно сложно )
16 сен 13, 00:24    [14842324]     Ответить | Цитировать Сообщить модератору
 Re: БД для очереди задач  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54799

DPH3
Главное - не копировать те, что еще пишутся, но это можно сделать фильтрацией
по размеру или дате или названию или чему-нибудь еще.

Название рулит. Нормальные люди создают файл с расширением .tmp, а после завершения записи
- переименовывают. Переименование в ОСи - более-менее атомарная операция, так что кусок
ACID-а обеспечен.

Posted via ActualForum NNTP Server 1.5

16 сен 13, 01:49    [14842362]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить