Информационный портал
pocket versionPOCKET  wikiWIKI  FAQFAQ  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ПрофильПрофиль  Войти и проверить личные сообщенияВойти и проверить личные сообщения  ВходВход

Пиринг чем не новый вариант сетевой библиотеки?
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB
Предыдущая тема :: Следующая тема  
Автор Сообщение


Sergey Chernov
Новенький участник форума

Новенький участник форума

Зарегистрирован: 14.05.2007
Сообщения: 32

СообщениеДобавлено: Пт Июн 01, 2007 23:46    Заголовок сообщения: Ответить с цитатой

А откуда идея, что распределенная библиотека должна оптимизироваться на работу под управлением чего то типа палма? Это бред. Я такое проектировать не буду. Я проектирую узел сети, основное назначение которой - поддержка пиринговой глобальной библиотеки. И приоритет соответственно - снижение трафика, оптимизация хранения. Ибо и так будеи и заметный трафик и изрядное место на диске. Вариант для КПК - штука экзотическая, потребует достаточно сильного железа. На палм пилот точно не влезет. А на любом современном КПК 4М под словарь выделить не проблема.

Однако, проблемы, кроме тона, не вижу. Но это не мои проблемы Smile Расширим протокол, пусть точка выбирает способ сжатия, zip или bz2.

Если я пишу "кажется", это означает что это мне неизвестно и требуется уточнение Smile предполагается, что такое использование слова "кажется" также общеизвестно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Mike Sinkovsky
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 27.10.2005
Сообщения: 296
Откуда: Пермь

СообщениеДобавлено: Сб Июн 02, 2007 5:55    Заголовок сообщения: Ответить с цитатой

Ну по размеру библиотеки как раз проблем не вижу - пара десятков гигобайт по нынешним временам вообще не проблема, харды к терабайту подходят. Это же не видео. Для наладонника это пока много, но на нем можно всю библиотеку и не хранить. Вернее хранить базу, но не книги, а это гораздо меньше.

Компрессия - не думаю все же что тут bz2 так уж идеален. Даже если он в общем случае и лучший, то вряд ли он лучший именно для базы в xml формате, где очень много повторяющихся тэгов.
Наверно лучше у специалистов на compression.ru спросить. Хотелось бы все-таки чтоб по возможности было не такое требовательное к ресурсам ПРИ РАСПАКОВКЕ. Ну и опенсорсное естественно.
Вдруг все-таки нормальные аппаратные ебуки с сетевым интерфейсом пойдут в массы, надежда есть. В идеале оно и там должно работать прямо 'на борту', пусть только в режиме запросов.
А Алан всегда так общается, типа фидо-стиль, ничего личного Smile

Обмениваться случайной выборкой периодически мысль может и неплохая, но как-то логичнее в первую очередь обмениваться новыми и обновленными книгами, наверно? В базе ведь наверняка есть время последнего обновления.
И гонять по сети каждый раз весь description из fb2 как-то нелогично, раз он все равно в чем то избыточен, а в чем-то недостаточен. Лучше наверно что-то близкое к записям базы данных библиотеки, экспортированным в сжатый xml.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Kv
Новенький участник форума

Новенький участник форума

Зарегистрирован: 30.05.2007
Сообщения: 23

СообщениеДобавлено: Сб Июн 02, 2007 9:14    Заголовок сообщения: Ответить с цитатой

Sergey Chernov писал(а):

Формат обмена информацией.

<skip>
Полагаю, информационный пакет на книгу будет до килобайта. В случае передачи каталога индекса копирования существенно ниже, байт 12-18 на книгу (id + собственно индекс в двоичном формате).

насчет килобайта верится с трудом. Там одних тэгов будет больше. А вот в таблице - да, может и так. А примеры дескрипторов книг сколько у Вас занимают?
Sergey Chernov писал(а):
Использовать fb2 без расширения формата не получится, так как он не несет информации, необходимой для организации распределенной базы.

Тем не менее, для обмена собственно книгами с самого начала и предполагался fb2.zip. Речь шла о передаче каталогов и т.д.

ну дык если предполагается специальный обменный формат, пусть и на основе fb2, то тогда формат самого документа роли не играет. Он может быть любым. Иначе возможности этого специального обменного формата не будут использованы. Тогда проще просто вырезать кусок из файла фб2 и не заморачиваться.
Sergey Chernov писал(а):

Уровни
Сперва думаю надо реализовать 1, потом 2, потом 3. Вариант с сервером - если сервер содержит хранит _только_ библиографию, и не хранит собственно книг, то его накрыть непросто. Более того, в отличие от прикрытого сервера мп3 он даже не хранит никакую информацию об участниках сети. Но его можно убрать из системы в любой момент - она автоматом спустится на уровень 2 (если сервера-или серверов нет), и будет прекрасно пахать и без них.

безопасность - отдельная песня. Если уровни - только по этой причине, то не стоит. Да и вообще, ИМХО, множить сущности просто может сил не хватить.
Sergey Chernov писал(а):
Обмен

Смысл случайности: <skip>

сорри - так и не понял. Вы сами выдвигаете предроложения и сами же доказываете их несостоятельность. Еще раз сорри за непонятливость.
Sergey Chernov писал(а):
Другие форматы

Парадигма такая: ежели кто то напишет внятный плагин для импорта-экспорта XXX <-> FB2, мы его включаем в общий пакет.

Это - голову в песок. Еще раз. Для пдф или джву - не напишет. Никто и никогда. Ну дык тогда может взять библиотекарь с соседнего топика, прикрутить туда плагин для загрузки\выгрузки куска базы для обмена. А для самого обмена наваять отдельную прогу. Она будет искать другие такие проги и синхронизировать выгруженные куски, что есть в этих точках. Ну или нечто такое.
А если так - сделать то же самое, но в обменный формат добавить нечто, нужное для описания файлов других форматов, тех же джву и пдф. И имя файла и где он лежит на локальном компьютере. В этом случае появляются возможности
1.сделать конвертилку из локальной либы в обменный формат, причем формат файлов локального архива уже не играет роли.
2.передавать файлы в любом формате, сам формат, остальные особенности будут содержаться в инфе по книге
3.полностью отойти от сутруктуры локального архива и заняться только средствами обмена. В конце концов для локальных либов прог сейчас немеряно.
4.появляется возможность передачи книг из одной либы в другую. Через обменный формат.
ну еще чего-то наверняка найдется.

Sergey Chernov писал(а):
Но только для импорта-экспорта, внутри системы формат один - fb2. Иначе будет худо. НО. Можно потом сделать расширение fb2: в ветке body ссылка на бинарник, который в хвосте, а в хвосте - картиночная книжка, типа djvu. Или еще как расширить формат для такой цели. Хотя мне он категорически не нравится - текст это текст. Я бы скорее предложил добавить туда формулы a la tex и т.д.

ограничения по формату мне на нравятся в силу личных причин - я собираю некоторую сканенную периодику- здесь джву ну и спец.литература, а здесь пдф в овновном. А навороты типа ссылки на бинарник - сорри, но в сад. Так что если сам архив только в фб2 - ну чтож, значит мне не повезло - я не нашел попутчиков Sad
Sergey Chernov писал(а):
Локальная и сетевая библиотека

здесь понятно.
<skip>
Sergey Chernov писал(а):
Новые термины:
<skip>
Наверное, пока достаточно для обусждения. Ваши комментарии?

для оценки алгоритма просто так сказать ничего нельзя, ИМХО. Нужны хоть какие-то количесвенные параметры - сколько точек, сколько они в сети, объемы книг и версий файлов ну и т.д.

Добавлено спустя 4 минуты 18 секунд:

Mike Sinkovsky писал(а):
И гонять по сети каждый раз весь description из fb2 как-то нелогично, раз он все равно в чем то избыточен, а в чем-то недостаточен. Лучше наверно что-то близкое к записям базы данных библиотеки, экспортированным в сжатый xml.

ну да. нечто такое.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Alan
Автор ридера Alreader и клона Haali


Зарегистрирован: 25.01.2005
Сообщения: 421

СообщениеДобавлено: Сб Июн 02, 2007 9:24    Заголовок сообщения: Ответить с цитатой

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


да не должна оптимизироваться, а желательно предусматривать как можно больше на этапе разработки, но нет - так нет... Как говориться - кроме тона проблем нету, бред так бред, не моя это проблема... оптимизация места на диске конечно же насущнее выбора не ресурсопожирающего распаковщика:)))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sergey Chernov
Новенький участник форума

Новенький участник форума

Зарегистрирован: 14.05.2007
Сообщения: 32

СообщениеДобавлено: Вс Июн 03, 2007 21:42    Заголовок сообщения: Ответить с цитатой

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

Насчет использовать для информационного пакета только то, что хранится в базе, а не всю ветку FB2/description - так и сделаем. Не могу понять, почему мне одно время хотелось рассылать всю ветку Smile

Идея разрешить произвольный формат объекта здравая, давайте так и поступим. То есть, есть файл с некоей публикацией, есть к ней описание - оно лежит в базе, оно и передается. Что за файл библиотекарю до некоторой степени все равно, если он его не знает (то есть, нет плагина для доступа к содержимому, как в google desktop), значит некоторые дополнительные функции типа поиска текста для него будут недоступны, и все. Но передавать и хранить он его будет.

description сжимать вопрос тонкий. Там должно быть все, чего клиент может захотеть найти. А это может быть и имя переводчика, и имя оригинала и т.д. К тому набору данных, что публиковался раньше, пока что добавляется версия документа и тип: NULL будет fb2.zip.

Насчет объема информационного пакета.

Я сделал тест на своем импорте (некая случайная выборка, 554 книги), брал целиком FB2/description в utf8 (!), а потом полный массив сжимал зипом и бз2. Результаты такие:

Desciption stats: zip: 392.25/book, bz2: 245.61/book.

Соответственно, так и так меньше кила на инфопакет. То есть совсем не так и плохо. Но это получается если сжимать все разом, если сжимать по одной будет существенно хуже, но мы будем сжимать именно весь пакет, подготовленный к передаче на линк, то есть, можно и оставить xml - не так все плохо.

Насчет случайной выборки при обновлении: стормозил. Во первых, конечно, по сети будут рассылаться новинки. Счас поправим.

Уровни

Уровень 1 слабый, отказываемся.

Уровень 2 модифицируем так:

Прем обновлений.

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

Превышение квоты.

Если надо освободить место для новых поступлений, то удаляются документы с максимальным индексом хранения. Если индекс мал, то перед удалением они раздаются линкам.

Рассылка обновлений.

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

Прием запросов.

Оставляем как есть. Место для хранения выбирается вышеописанным алгоритмом.

Рассылка каталога хранения.

Очень интересный вопрос - как рассчитать индекс хранения, если у нас нет сервера статистики. С сервером то все красиво...

Как вариант: циркуляраня рассылка. Каталог ходит непрерывно, и каждая точка инкрементирует индекс тех книг, которые хранит, и декрементирует для тех, которые отсутствуют.

Однако при этом эти каталоги будут размножаться. Пока не придумал изящного решения. Ваши идеи?


Уровень 3 - пока отложим.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Kv
Новенький участник форума

Новенький участник форума

Зарегистрирован: 30.05.2007
Сообщения: 23

СообщениеДобавлено: Пн Июн 04, 2007 0:24    Заголовок сообщения: Ответить с цитатой

Sergey Chernov писал(а):
Я бы вообще отказался от XML по этой причине, да как то устоялся он...

у XML куча преимуществ. ИМХО, отказываться от XML-подобного обменого формата пока рано, т.к. не решен один из главных вопросов - какими порциями идет обмен - по одной книжке или сразу пакетами по нескольку. Если по одной - то только XML, если пакетами - то здесь надо смотреть. Если пакет, то тот же кусок базы наверняка будет не во внутреннем формате, а чего-то типа csv. Или как?
Sergey Chernov писал(а):
Идея разрешить произвольный формат объекта здравая, давайте так и поступим. То есть, есть файл с некоей публикацией, есть к ней описание - оно лежит в базе, оно и передается. Что за файл библиотекарю до некоторой степени все равно, если он его не знает (то есть, нет плагина для доступа к содержимому, как в google desktop), значит некоторые дополнительные функции типа поиска текста для него будут недоступны, и все. Но передавать и хранить он его будет.

и это правильно! ИМХО, ессно. Особенно если идти до конца и разделить функции хранения - это отдать локальной либе и обмена - это будет делать новая прога. Тогда у нее файлы хранятся ограниченное время и какой-то дополнительный функционал по поиску чего-то внутри вовсе и не нужен, файл получен, передан на локальную либу - и там пусть с ним делают чего хотят.А эта прога работает только с базой.

Sergey Chernov писал(а):

description сжимать вопрос тонкий. Там должно быть все, чего клиент может захотеть найти. А это может быть и имя переводчика, и имя оригинала и т.д. К тому набору данных, что публиковался раньше, пока что добавляется версия документа и тип: NULL будет fb2.zip.

предлагаю еще какую-то доп. инфу, понятную только докальной либе, например. Или мало ли что еще потребуется. Каким-то тэгом обозначить эту инфу, ну и может быть ограничить объем, например строка не более 256 символов или еще сколько - не важно, сколько скажете, столько и будет.
Sergey Chernov писал(а):
Насчет объема информационного пакета.

Я сделал тест на своем импорте (некая случайная выборка, 554 книги), брал целиком FB2/description в utf8 (!), а потом полный массив сжимал зипом и бз2. Результаты такие:

Desciption stats: zip: 392.25/book, bz2: 245.61/book.

Соответственно, так и так меньше кила на инфопакет. То есть совсем не так и плохо. Но это получается если сжимать все разом, если сжимать по одной будет существенно хуже, но мы будем сжимать именно весь пакет, подготовленный к передаче на линк, то есть, можно и оставить xml - не так все плохо.

на одну книгу - очень даж неплохо. Но здесь интересный момент а сколько вообще будет книг в штуках. Вот мои соображения.
1.смотрел несколько сетевых хранилищ за ноябрь на предмет объема новинок. Почему ноябрь - а с потолка. Считал плюс\минус, чтобы быстро Smile
2.по разным либам
-альдебаран - около 300
-фикшен - нет инфы, думаю что порядок тот-же
-фензин, литпорта, олдмаг,мошков и т.д - около 50-100 каждый,
-ершов-около 300
в сумме, думаю, будет разного около 700 по либам и еще столько же по мелким и россыпью. Отсюда можно грубо оценить объем базы и архива. А вот трафик - здесь будет заисеть от числа точек...

Sergey Chernov писал(а):
Уровень 2 модифицируем так:Однако при этом эти каталоги будут размножаться. Пока не придумал изящного решения. Ваши идеи?
ИМХО - самое сложное. надо думать...

Добавлено спустя 9 часов 31 минуту 13 секунд:

Sergey Chernov писал(а):
Уровень 2 модифицируем так:

Прем обновлений.

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

если предположить, что мы говорим о проге обмена, тогда квоты под сами книги теряют смысл, т.к. все книги лежат у юзеров в локальных архивах и, отдавая их в обмен, юзер просто создает запись в обменной базе со ссылкой на сам файл книги. Дополнительное место расходуется только под базу. Под это квоты, конечно, тоже можно, хотя по сравнению с архивом, 10-100 Мб базы под обменный фонд - мелочи.

Sergey Chernov писал(а):

Превышение квоты.

Если надо освободить место для новых поступлений, то удаляются документы с максимальным индексом хранения. Если индекс мал, то перед удалением они раздаются линкам.

место для поступлений - личное дело каждого юзера. Нету его - нету поступлений Smile А вот задача удаления из обменной базы - очень важная. Причем удалять невостребованные книги, ИМХО, нельзя. Думаю, что отталкиваться надо от доступности, т.е. должен быть какой-то механизм проверки доступности выложенных книг. Делать это может прога юзера - автоматом и рассылать подтверждения. Там может быть просто ID книги и дата/время проверки. Все. Ну, еще число скачиваний, может быть.
Sergey Chernov писал(а):
Рассылка обновлений.

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

сорри, не понял. Если принимается принцип как в бук-либе, тогда понятно. Но мы ж говорим о пиринговой системе. А в этом случае инициатором обновления есть юзер. Надо ему чего-то обновить - он ищет в обменной базе, если есть - дает запрос на закачку. Или как?
Sergey Chernov писал(а):
Прием запросов.

Оставляем как есть. Место для хранения выбирается вышеописанным алгоритмом.

сорри, я чего-то пропустил. А как есть?
Sergey Chernov писал(а):
Рассылка каталога хранения.

Очень интересный вопрос - как рассчитать индекс хранения, если у нас нет сервера статистики. С сервером то все красиво...

Как вариант: циркуляраня рассылка. Каталог ходит непрерывно, и каждая точка инкрементирует индекс тех книг, которые хранит, и декрементирует для тех, которые отсутствуют.

Однако при этом эти каталоги будут размножаться. Пока не придумал изящного решения. Ваши идеи?

считаем, что каталог хранения - это тоже, что и обменная база. Если так, то ни о каких "циркулярных" рассылках не может быть и речи. Причина проста. Объем такой БД будет от 10 до 100 Мб. Так что можно говорить только о рассылке обновлений к базе. За основу можно взять какую-то известную процедуру из сетевых распределенных задач, например, той же маршрутизации. Ау, спецы, что посоветуете?
Sergey Chernov писал(а):
Уровень 3 - пока отложим.

ок.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Mike Sinkovsky
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 27.10.2005
Сообщения: 296
Откуда: Пермь

СообщениеДобавлено: Пн Июн 04, 2007 11:06    Заголовок сообщения: Ответить с цитатой

Так может все-таки не стоит увлекаться изобретением велосипедов, а взять готовое отлаженное P2P ядро, например JXTA. В нем все эти проблемы вроде решены... Только настроить.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Cd_spb
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 28.06.2006
Сообщения: 189

СообщениеДобавлено: Пн Июн 04, 2007 11:32    Заголовок сообщения: Ответить с цитатой

К сведению:
После обработки приблизительно 10000 книг, и занесения в текстовый файл вот такого типа информации:
Код:
01.06.2007 15:49:34 ; E:\Lib\Lib2\4pda_Коллектив_Форума\Журнал_4PDA-03_Журнал__4pda___3_2006_г_.fb2.zip ; e:\Lib\Lib4\Прочая_околокомпьтерная_литература\4pda_Коллектив_Форума\Журнал_4PDA-03_Журнал__4pda___3_2006_г_.fb2

Текстовый файл имел размер - 2,7 Мб.

Kv
Цитата:
Особенно если идти до конца и разделить функции хранения - это отдать локальной либе и обмена - это будет делать новая прога.

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


Kv
Новенький участник форума

Новенький участник форума

Зарегистрирован: 30.05.2007
Сообщения: 23

СообщениеДобавлено: Пн Июн 04, 2007 14:18    Заголовок сообщения: Ответить с цитатой

Mike Sinkovsky писал(а):
Так может все-таки не стоит увлекаться изобретением велосипедов, а взять готовое отлаженное P2P ядро, например JXTA. В нем все эти проблемы вроде решены... Только настроить.
дык не велосипед - нету его. Я не спец в п2п и не юзаю. Но общался со спецами. Говорят, что основной момент, почему напрямую к букам применить нельзя - другая направленность - там сравнительно мало файлов и файлы большого объема. А если будет 10-50 к файлов и они в среднем по 0,5 Мб (да, есть и большие - аж по 10-20Мб, но их мало), то п2п сети просто пошлют куда подальше и на этом велосипеду капец.

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

Добавлено спустя 17 минут 58 секунд:

Cd_spb писал(а):
К сведению:
После обработки приблизительно 10000 книг, и занесения в текстовый файл вот такого типа информации:
Код:
01.06.2007 15:49:34 ; E:\Lib\Lib2\4pda_Коллектив_Форума\Журнал_4PDA-03_Журнал__4pda___3_2006_г_.fb2.zip ; e:\Lib\Lib4\Прочая_околокомпьтерная_литература\4pda_Коллектив_Форума\Журнал_4PDA-03_Журнал__4pda___3_2006_г_.fb2

Текстовый файл имел размер - 2,7 Мб.

Спасибо. Конкретика - то, чего всегда не хватает Smile ИМХО, на самом деле будет больше, т.к. туда придется добавить полей. Но в любом случае порядок все равно будет тот.
Cd_spb писал(а):

Kv
Цитата:
Особенно если идти до конца и разделить функции хранения - это отдать локальной либе и обмена - это будет делать новая прога.

В этом случае будет проблема синхронизации двух программ. Если сторонняя либа хранит не в файлах, а в базе, то большие проблемы по связи между ними. Или дублирование оперций пользователя по поддержания обеих баз данных в актуальном состоянии; или договоренность разработчиков локальной библиотеки и обменной на стадии создании и модификации программ(что даже при наличии денежных отношений и жестких сроков не всегда получаеться :-\ ).

конечно, есть такая проблема. Только, как Вы правильно заметили, теперь это проблема конечного юзера. Т.е. с уровня разработчика обменной проги эта задача съехала на конечного юзера. Да, ему теперь придется чего-то делать, ну дык не факт, что новой работы будет больше, чем было раньше. Не забывайте, раньше он обменом занимался вручную, а теперь эта работа уйдет.

Ну и, с другой стороны, задачу синхронизации можно упростить, а не пытаться решить одним махом сразу все.

Самая большая проблема будет выгребать в локальную базу приехавшую по обмену литературу. Ну дык здесь может помочь
1. вот та самая специфическая для локальной либы инфа, вложенная в обменную базу
2. набор спец плагинов - для каждой локальной либы - по трансляции инфы из обменной базы в инфу для локальной базы. А если локальной базы нет вообще, а просто есть файловый архив - то просто плагин формирования имен файлов и переноса по локальному месту.

А обратная операция - проверка, доступно ли выложенное в локальной базе для обмена, это вообще делается на автомате. Если юзер чего-то убрал в локальной базе, то через время проверки оно автоматом снялось из доступа. Конечно, здесь надо подумать, нормально ли это когда юзер дергает туда-сюда и как-то попытаться заставить юзера отдавать себе отчет в своих действиях.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Cd_spb
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 28.06.2006
Сообщения: 189

СообщениеДобавлено: Пн Июн 04, 2007 18:42    Заголовок сообщения: Ответить с цитатой

Kv
Вы все правильно пишите, но чем больше телодвижений, тем меньше пользователей и соответственно меньше информации в общей базе и меньше резервируемость. Sad
И если из сети в локальную базу пользователь будет шевелиться делать, то на обратную операцию будут прикладывать усилия будет гораздо меньшее количество людей.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Kv
Новенький участник форума

Новенький участник форума

Зарегистрирован: 30.05.2007
Сообщения: 23

СообщениеДобавлено: Пн Июн 04, 2007 19:45    Заголовок сообщения: Ответить с цитатой

Cd_spb писал(а):
Kv
Вы все правильно пишите, но чем больше телодвижений, тем меньше пользователей и соответственно меньше информации в общей базе и меньше резервируемость. Sad

дык понятно, что чем меньше телодвижений - тем лучше. Ну и что? я сколько не искал, а такой проги не нашел. Ну чтоб без телодвижений, книги сами приезжали и чтоб работать с локальной либой было хорошо и просто. То одного нету, то другого, а иногда всего вместе:(

Ну и, кроме того, - а сколько надо телодвижений, чтобы сделать такую прогу, чтобы было все сразу и хорошо? Может, пусть решает только одну задачу?

Cd_spb писал(а):
И если из сети в локальную базу пользователь будет шевелиться делать, то на обратную операцию будут прикладывать усилия будет гораздо меньшее количество людей.
ну дык это в тех же п2п сетях успешно решают и здесь можно применить - типа, коеффициент скачивания, например 0,2 - хочешь скачать 10 книжек - будь добр, отдай 2.

Тем более, что любая обменная система без ручного труда жить не может в принципе - то, чем обмениваются, как минимум, первый раз, положить можно только вручную. А как иначе?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sergey Chernov
Новенький участник форума

Новенький участник форума

Зарегистрирован: 14.05.2007
Сообщения: 32

СообщениеДобавлено: Вт Июн 05, 2007 0:14    Заголовок сообщения: Ответить с цитатой

Не, синхронизация не прокатит. На каждой точке должна быть прога - библиотекарь, котораядержит свою базу. Причем файловые объекты, которые составляют библиотеку, доступны и для других прог, но это не тупой трекер, это именно библиотекарь. Ибо он умеет лопатить библиотеку, делать выборки и по внешним запросам и т.д. А построение собственно пиринговой сети это самая примитивная из его задач, настолько простая, что я ее просто еще не касался. А сложная - это именно создать распределенный ФОНД, который старается себя не терять, я не просто тупую файлуху с рассылкой новинок. То есть, на каждой точке, уточняю, трудится программа-библиотекарь, и ее основная задача не вести локальную базу, а совместно с другими точками образовать глобальную распределенную библиотеку, фонд, в которой по возможности ничего не теряется.

Сеть пиринговая, но инициатором запроса может быть не только пользователь, но и собственно прога-библиотекарь. Все время, пока ее не закрыли (в том числе и как демон), она обрабатывает сетевые запросы и поддерживает фонд в рамках квот на трафик и диск, которые у нее есть.

Не понял каким это образом можно обойтись без квот. Имхо никак невозможно Smile Квота нужна библиотекарю (который мы проектируем), чтобы поддерживать некую часть общего фонда. Заметьте, этот общий фонд не имеет НИКАКОГО отношения к личной библиотеке пользователя. Ну кроме того, что из него быстрее всего импортировать в личную библиотеку. Естественно, файлы на диске при этом не размножаются, просто в записи в базе ставится флажок, что эта книга принадлежит и к личной библиотеке и в ротации не участвует.

Циркулярная рассылка передает только каталог хранения. В этом каталоге на одну единицу хранения (сиречь книгу) будет где то 16 байт. То есть, полтора метра на сто тысяч книг. Правда, оно не будет сжиматься Smile Однако, если довести до ума уровень 3, обмен будет на уровне апдейтов с неокторой линамической сеткой выделенных серверов a la POP3, которые собственно книги пересылать никогда не будут, а будут использоваться только для минимизации трафика и сбора совершенно абстрактной бинарной инфы. Думаю, я смогу это сформулировать так, что даже американцы не сумеют его прикрыть Smile Но неважно, сделаем и без этого.

Итак, у нас циркулирует только индекс хранения, который позволяет каждой точке правильно работать с той частью общего фонда, который на ней лежит. То есть, размножать то, что в этом нуждается, и тереть то, что и так хорошо растиражировано. Как сделать так, чтобы индекс не размножался и не зажирал трафик, я почти придумал, это дело техники.

При этом обмен новинками и распределение фонда по точкам будет происходить полностью автоматически. Полностью автоматически будут обрабатываться и запросы на поиск тех или иных единиц хранения - механизмы обсуждал.

Насчет отношения UL/DL, то здесь мы скорее сделаем так. Юзер указывает квоту на хранение и квоту на трафик. Это автоматически ограничивает размер его личной библиотеки и личного трафика (запросы на новинки или поиск) до такой же величины, как и указанные им квоты для общего пользования. Скажем, если квота на трафик позволяет лопатить до 100 книг в день, то по его запросу он будет получать до 100 книг в день. хакать клиента бесполезно - линки просто не отдадут Smile

И плз хватит скатываться к модели торрент+локальный библиотекарь. это не то, на что стоит тратить время Smile У нас уже получается нечто изящное и умное, чему аналогов я пока не вижу Smile Сорри за сумбурность, просто дискуссия вдруг резко свернула совсем не туда.

Добавлено спустя 23 минуты 9 секунд:

Еще о распределенном поиске.

Рассмотрим маргинальную ситуацию: пользователь ищет фрагмент текста по всем книгам, возможно с некоторым фильтром. Точка (обработав свою часть фонда) берет каталог хранения, чистит оттуда то, что просмотрела сама, и отправляет запрос и оставшуюся часть каталога по линкам. Каждый линк обрабатывает такой запрос по своей части фонда, удаляя соответственно часть каталога из запроса, и если каталог не пуст, а запрос не удовлетворен, отправляет дальше. Таким образом, можно учинить поиск по всей распределенной библиотеке. Отработает он небыстро, но отработает же Smile

Интересно, что такой подход позволяет решить проблему как с объемом хранения, так и с объемом вычислений. Если в мире найдется хотя бы 10к активных точек, с квотой хранения в 1Гб, то общий фонд такой библиотеки будет эффективно хранить не менее 1Тб данных, не слишком обременяя участников. И поиск в такой чудовищной базе тоже будет распределенным, что, согласитесь, приятно Smile Прям нечто из какой то фантастики, читал я что то такое...

Добавлено спустя 37 минут 21 секунду:

Индекс хранения

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

Состав циркуляра: (document_id, store_index) [,(document_id, store_index)...]

document_id: уникальный id единицы хранения. Скажем, 6 байтовый серийник, если есть сервер, раздающий серийники, или 16-байтовый гуид.

store_index: беззнаковое целое, 4 байта, означает обощенное число точек, где документ хранится.

Суммирование: store_index складывается для всех циркуляров.

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

Цель работы библиотекаря таким образом - получение как можно меньшей дисперсии параметра store_index Smile

Значительно эффективнее схема будет работать, если мы создадим Id-server, у которого будет ровно 4 команды:

CreateId
UpdateStorageIndex(Id, +-1)
GetMinStorageIndex(howManyToGet)
GetStorageIndexes()

Это резко уменьшит трафик в системе, улучшит равномерность коирования и позволит использовать короткие, 6 байтовые идентификаторы, вместо громоздких гуидов. И прикрыть легально такой сервер очень непросто.

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

Нагрузка на сервер крошечная, могу у себя захостить. Если потом раскрутимся, перенесем на какойнить более мощный хостинг.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Mike Sinkovsky
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 27.10.2005
Сообщения: 296
Откуда: Пермь

СообщениеДобавлено: Вт Июн 05, 2007 4:17    Заголовок сообщения: Ответить с цитатой

Хорошо, тогда тупой вопрос. Допустим задаю квоту хранения 50 гиг, и пожелание хранить книги таких-то жанров и не хранить таких-то. Образуется у меня через некоторое время локальная библиотека этих жанров с автопополнением раз в сутки-двое? Если все книги этих жанров укладываются в файловую квоту.
Понятно что оно и на внешние запросы будет отвечать, в пределах сетевой квоты, но интересующие меня книги хотелось бы по возможности брать сразу из локальной, без запросов в сеть. Просто локальные запросы все равно на несколько порядков быстрее будут обрабатываться. Да и мало ли, сеть отпала, америкосы новую подлянку придумали.. Так оно как-то спокойнее.

И второй вопрос - какая будет система разрешения коллизий. Допустим некую книгу одновременно добавили несколько человек в разных местах сети, не такая уж невероятная ситуация для горячих новинок. Сможет система отследить что они побайтово совпадают и свести к одной, или это дело модераторов?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Kv
Новенький участник форума

Новенький участник форума

Зарегистрирован: 30.05.2007
Сообщения: 23

СообщениеДобавлено: Вт Июн 05, 2007 9:54    Заголовок сообщения: Ответить с цитатой

Sergey Chernov писал(а):
это именно библиотекарь. Ибо он умеет лопатить библиотеку, делать выборки и по внешним запросам и т.д.

структуру БД уже разработали?
Sergey Chernov писал(а):
А построение собственно пиринговой сети это самая примитивная из его задач, настолько простая, что я ее просто еще не касался.

позвольте поинтересоваться, на основании каких соображений Вы утверждаете о примитивности задачи построения пиринговой сети? Вы сделали анализ? его результаты покажете?
Sergey Chernov писал(а):
А сложная - это именно создать распределенный ФОНД, который старается себя не терять, я не просто тупую файлуху с рассылкой новинок. То есть, на каждой точке, уточняю, трудится программа-библиотекарь, и ее основная задача не вести локальную базу, а совместно с другими точками образовать глобальную распределенную библиотеку, фонд, в которой по возможности ничего не теряется.

извините, я всегда считал, что трудятся люди, а программы исполняются кремниевыми мозгами. Ну, что ж, посмотрю на Ваше произведение, которое заменит человека Smile
Sergey Chernov писал(а):
Сеть пиринговая, но инициатором запроса может быть не только пользователь, но и собственно прога-библиотекарь. Все время, пока ее не закрыли (в том числе и как демон), она обрабатывает сетевые запросы и поддерживает фонд в рамках квот на трафик и диск, которые у нее есть.

Не понял каким это образом можно обойтись без квот. Имхо никак невозможно Smile Квота нужна библиотекарю (который мы проектируем), чтобы поддерживать некую часть общего фонда. Заметьте, этот общий фонд не имеет НИКАКОГО отношения к личной библиотеке пользователя. Ну кроме того, что из него быстрее всего импортировать в личную библиотеку. Естественно, файлы на диске при этом не размножаются, просто в записи в базе ставится флажок, что эта книга принадлежит и к личной библиотеке и в ротации не участвует.

Циркулярная рассылка передает только каталог хранения. В этом каталоге на одну единицу хранения (сиречь книгу) будет где то 16 байт. То есть, полтора метра на сто тысяч книг. Правда, оно не будет сжиматься Smile Однако, если довести до ума уровень 3, обмен будет на уровне апдейтов с неокторой линамической сеткой выделенных серверов a la POP3, которые собственно книги пересылать никогда не будут, а будут использоваться только для минимизации трафика и сбора совершенно абстрактной бинарной инфы. Думаю, я смогу это сформулировать так, что даже американцы не сумеют его прикрыть Smile Но неважно, сделаем и без этого.

Итак, у нас циркулирует только индекс хранения, который позволяет каждой точке правильно работать с той частью общего фонда, который на ней лежит. То есть, размножать то, что в этом нуждается, и тереть то, что и так хорошо растиражировано. Как сделать так, чтобы индекс не размножался и не зажирал трафик, я почти придумал, это дело техники.

При этом обмен новинками и распределение фонда по точкам будет происходить полностью автоматически. Полностью автоматически будут обрабатываться и запросы на поиск тех или иных единиц хранения - механизмы обсуждал.

Насчет отношения UL/DL, то здесь мы скорее сделаем так. Юзер указывает квоту на хранение и квоту на трафик. Это автоматически ограничивает размер его личной библиотеки и личного трафика (запросы на новинки или поиск) до такой же величины, как и указанные им квоты для общего пользования. Скажем, если квота на трафик позволяет лопатить до 100 книг в день, то по его запросу он будет получать до 100 книг в день. хакать клиента бесполезно - линки просто не отдадут Smile

такой подход тоже возможен - это фактически бук-либ, только распределенный и с одинаковыми правами на добавление обновлений, а уровень 3 - с выделенной сетью администраторов. Ессно, на новом уровне и т.д. Но идеологически - именно оттуда. Покрутившись полтора года рядом с бук-либом, могу сказать, что реализовать его в распределенном варианте - задача не детская. А с такими наворотами, как Вы хотите, тем более. Ну дык ничего невозможного нет и тем значимее будет результат.
Sergey Chernov писал(а):
И плз хватит скатываться к модели торрент+локальный библиотекарь. это не то, на что стоит тратить время Smile
Эта модель начала приходить мне в этой ветке по мере обсуждения с Вами.

Пока что она видится мне достаточно эфемерной - в смысле я пока сомневаюсь в ее способности поддерживать в актуальном состоянии ссылки на 100к книжек да еще в 10 экземплярах в среднем для одной книжки.

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

Надо думать...
Sergey Chernov писал(а):
У нас уже получается нечто изящное и умное, чему аналогов я пока не вижу Smile
сорри, а что получается? Я пока что не понял...
Sergey Chernov писал(а):
Еще о распределенном поиске.

Рассмотрим маргинальную ситуацию: пользователь ищет фрагмент текста по всем книгам, возможно с некоторым фильтром. Точка (обработав свою часть фонда) берет каталог хранения, чистит оттуда то, что просмотрела сама, и отправляет запрос и оставшуюся часть каталога по линкам. Каждый линк обрабатывает такой запрос по своей части фонда, удаляя соответственно часть каталога из запроса, и если каталог не пуст, а запрос не удовлетворен, отправляет дальше. Таким образом, можно учинить поиск по всей распределенной библиотеке. Отработает он небыстро, но отработает же Smile

сорри, я так и не понял, джву с пдф можно или нет. Если можно, тогда поиски фрагмента текста внутри файла теряют смысл. А если нельзя - ну дык так и напишите.
Sergey Chernov писал(а):
Интересно, что такой подход позволяет решить проблему как с объемом хранения, так и с объемом вычислений. Если в мире найдется хотя бы 10к активных точек, с квотой хранения в 1Гб, то общий фонд такой библиотеки будет эффективно хранить не менее 1Тб данных, не слишком обременяя участников. И поиск в такой чудовищной базе тоже будет распределенным, что, согласитесь, приятно Smile Прям нечто из какой то фантастики, читал я что то такое...
да, у неубитого медведя шкура однозначно больше и мохнатей, чем у того заморыша, что у соседа на стенке висит. А здесь еще и с рогами...

Вобчем, у меня сейчас книг порядка 120 гигов. Из них на винте гигов 60. Так вот, я 1Гиг под непонятную прогу, чтобы она чего-то у меня на компе хранила и рассылала с целью ""создания общего фонда", не выделю. И прогу такую не установлю. Сорри, вот такой я ретроград. Ессно, если не будет какой-то более осязаемой причины, кроме как "создания общего фонда". Пока что я ее не вижу. Ну дык расскажите.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Cd_spb
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 28.06.2006
Сообщения: 189

СообщениеДобавлено: Вт Июн 05, 2007 10:26    Заголовок сообщения: Ответить с цитатой

Kv
От Вас лично НИКТО и НИЧЕГО не требует. Устанавливать/не устанавливать - Ваше личное дело.
Цитата:
основная задача не вести локальную базу, а совместно с другими точками образовать глобальную распределенную библиотеку, фонд, в которой по возможности ничего не теряется.

Это была основная идея. Которая, кстати, следует из названия темы.

Добавлено спустя 3 минуты 38 секунд:

Mike Sinkovsky писал(а):

И второй вопрос - какая будет система разрешения коллизий. Допустим некую книгу одновременно добавили несколько человек в разных местах сети, не такая уж невероятная ситуация для горячих новинок. Сможет система отследить что они побайтово совпадают и свести к одной, или это дело модераторов?

Если это не просто одна книга, а один ДОКУМЕНТ, то у них должен Wink получиться одинаковый document_id. А если это разные документы, то и циркулировать будут все, как это будет с разными версиями и т.п.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Страница 4 из 8

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group