Форум сайта python.su
Есть служба которая монопольно и постоянно пишет файл (точнее нечто файлоподобное но не файл). Хочется чтобы множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.
Расшаривание ресурса средствами os кажется не очень удобным в настройке и не очень переносимым.
Как посоветуете сделать? Может есть что-то подобное?
Офлайн
Тогда ваш вариант или писать свой сервер, что-то на подобии БД.
Офлайн
Да это небольшой сервер. Базы данных рассматривал - но транзакционная целостность уж очень сильно снижает производительность - данных много (десятки гигабайт).
Офлайн
> множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.
“на чтение” не вяжется с “write”.
запись клиентам нужна?
что за данные?
клиентам seek нужен в произвольные места или к блокам? например служба дописывает данные блоками (кусками), и клиентам читать тоже надо блоками.
Офлайн
ошибся
write только сервером только в конец.
остальные чтение с произвольных мест но последовательное - те велика вероятность последовательного чтения (как и во всех файлах)
Запросы не к блокам.
Данные - протоколы состояния физичекой установки. На сервер идет непрерывный поток данных, дальше он режется на блоки, чтобы создать solid архив, но по возможности с произвольным доступом. А запросы на получение данных - то запросы пользователей которые могут заинтересоваться некоторыми небольшими (по сравнению со всем архивом и может быть даже по сравнению с размером блока) кусочками архива.
Офлайн
Навскидку можно сделать так:
* Все данные хранятся в файлах по 1Гб: 1.dat, 2.dat
* Последний, записываемый “файл” хранится в оперативной памяти - для быстрой записи, чтения.
Для большей производительности файлы можно будет раскидать по разным разделам.
Обмен можно будет сделать через xmlRPC, если объем передаваемых данных будет не большим иначе можно на сокетах свой протокол потоковый сделать.
Ещё можно глянуть на MongoFS и подобные.
Офлайн
Спасибо за наводку MongoDB. Меня интересовали в основном реализации потокового протокола на Сокетах, Примеры вобщем есть, но хотелось побольше :)
Офлайн