URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6821
[ Назад ]

Исходное сообщение
"что выбрать - shared memory / bdb / другая альтернатива"

Отправлено Nerian , 08-Окт-07 20:23 
Добрый день!

Есть задача чтобы несколько процессов одного и того же скрипта sample.script имели доступ
к одному массиву данных независимо когда они были запущены. Скрипты запускаются параллельно, достаточно часто. По имеи после выполнения каждого скрипта меняется значение, о котором должны знать все другие процессы.

Пока я вижу следующие решения:
1. Общая база данных MySQL (думаю накладно по расходам)
2. Скрипт который работает как демон и предоставляет общую память клиентским подключениям (shmget), которые в свою очередь оперируя семафорами решают
3. Локальная база данных SQLLite/BDB

Теперь собственно для чего это всё нужно:

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


Содержание

Сообщения в этом обсуждении
"что выбрать - shared memory / bdb / другая альтернатива"
Отправлено angra , 08-Окт-07 22:50 
Еще вариант - если данные имеют простую структуру, то можно использовать для этого файл. Для ускорения доступа использовать отображение файла в память.

"что выбрать - shared memory / bdb / другая альтернатива"
Отправлено Аноним , 09-Окт-07 14:05 
Я думаю лучше всего воспользоватся bdb

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


"что выбрать - shared memory / bdb / другая альтернатива"
Отправлено LM , 09-Окт-07 18:46 
Спасибо =)