LINUX.ORG.RU

Удаленный доступ к данным в самопальной БД

 , ,


0

1

Есть самопальная не-реляционная БД на питоне для хранения и обработки результатов численного моделирования.

Есть несколько машин, между которыми настроены ходы по ssh по открытому ключу. Скажем на одной из машин есть репозиторий (директория), содержащая несколько тысяч (десятков или даже сотен тысяч) расчетов (поддиректорий) с данными. В каждой поддиректории есть небольшой файл в формате pickle, содержащий какие то параметры + еще куча всяких файлов с результатами в совершенно разынх форматах.

Есть скрипт на питоне, который локально умеет ползать по репозиторию, выбирать из него согласно каким то хитрым критериям (на основе запикленных данных, и возможно всего остального) расчеты, чего то там высчитывать и выводить результат в виде выборки - списка записей, каждая запись содержит несколько вычисленных скриптом значений и экземпляр хитрого класса ассоциированного с расчетом (в частности по пути к директории расчета). Над выборкой могут производится всякие другие операции - выборки могут сливаться, сортироваться, могут досчитываться дополнительные столбцы и т.д.

Локально все это хозяйство работает прекрасно, удаленно работает меееедленно. Скажем я хочу с одной машины поработать с репозиторием на другой машине - я цепляю его по sshfs (причин может быть много, скажем я хочу совместно обрабатывать несколько репозиториев лежащих на разных машинах). При поиске поднимаются запикленные файлы всех расчетов. Хочется как то процесс ускорить, не очень понятно как...

Категорически НЕ хочется заводить сервер и связываться с клиент-серверной архитектурой. Оптимальным кажется вариант, когда при указании удаленного репозитория там запускается по ssh некоторый агент, который локально генерит выборку и сливает результат через пайп (самое простое). Но если с этой выборкой надо что то сделать дополнительно, возникают сложности - хочется скажем повозится с некоторыми файлами расчетов из выборки, а их нету... Видимо надо автоматом монтировать по sshfs удаленный репозиторий, и расчеты выборки привязывать уже к нему, но опять таки вопрос - а как его потом автоматом же отмонтировать - висящие по sshfs системы сильно портят кровь при засыпание/просыпании ноута, да и вообще надо ресурсы то отдавать... А деструкторы, и даже команды по atexit гарантий не дают;-(

М.б. есть какие то другие решения?

★★★★★

Ответ на: комментарий от pi11

машины не обязательно в одной локалке. Я вот сейчас с ноута вообще из дома сижу... Да и кроме секьюрности - чудес то не бывает, для ускорения надо кардинально снижать трафик, а для этого надо построение выборки делать локально (выборка как правило содержит лишь небольшую часть расчетов из репозитория).

AIv ★★★★★
() автор топика
Ответ на: комментарий от shty

А зря не читал;-)

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

Хотя тут подумал - зачастую скрипт отработал, вернул список путей, а дальше то данные по этим путям нужны... то есть автоматическое отмонтирование не подходит... ;-(

ЗЫ c пикла переходить никуда не хочу, он меня устраивает.

AIv ★★★★★
() автор топика
Ответ на: комментарий от drSchur

Ничего особо интересного, для хранения результатов моделирования/экспериментов народ сплошь и рядом чем то таким пользуется.

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Есть проблема - обеспечить удаленный произвольный доступ к большому объему данных на уровне файловой сист. (данные локализованы в одном каталоге), доступ должен автоматом подниматься и автоматом же прекращаться...

а что в данном случае означает «доступ» - перетянуть на локальную машину, натравить на них «числожорку»?

shty ★★★★★
()
Ответ на: комментарий от AIv

машины не обязательно в одной локалке. Я вот сейчас с ноута вообще из дома сижу...

А ты vpn подними.

anonymous
()
Ответ на: комментарий от shty

Типа того. Числорожку, рисовалку и ли еще чего нить... в общем надо что бы была директория, в которой оно все валяется.

Мне тут посоветовали autofs или даже afuse - вторая пожалуй решает все проблемы - у юзера в дом. директории заводится mnt/, куда цепляются корни ФС удаленных хостов. Правда я не пока не понял какие проблемы появятся взамен;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от shty

сериализация - yaml

У yaml 100500 мелких проблем типа такой: http://pyyaml.org/ticket/238 . И они не будут пофикшены потому что все на разработку py-yaml забили.

В итоге я огрёб очень много проблем и вернулся к pickle.

true_admin ★★★★★
()

Сделать FUSE, которая в довесок к директориям с результатами расчётов (цифровые) будет добавлять в каждую виртуальные директории типа mergewith, mean, calc и так далее. И получать результаты чтением файлов с этой ФС. Что-то вроде:

Взять эксперимент 40, слить его данные с 41 и 42, перегруппировать колонки, вычислив попутно Q, получить результат:
$ cat /data/40/mergewith/41/mergewith/42/calc/Q=(X^2+Y^2),X,Y/=

Получить список имён колонок для набора данных 40:
cat /data/40/columnnames/=

Найти строку из набора данных 40, для которой значение колонки X максимально:
cat /data/40/maxby/X/=

И экспортировать уже эту ФС. По сети будут передаваться только результаты.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Я пока остановился на afuse, но ход Ваших мыслей мне нравиться;-)

Боюсь только (если я правильно понял Вашу мысль) что функционал будет слишком маленьким, а какие то сложные вещи будут смотреться жутковато. У меня сейчас можно мешать код из питона и шелл, да еще и макросы юзать...

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

функционал будет слишком маленьким

Над выборкой могут производится всякие другие операции - выборки могут сливаться, сортироваться, могут досчитываться дополнительные столбцы и т.д.

Какой запросил, такой и спроектировал :)

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.