SpaceLib

Новости Главная Введение Программы Загрузка Карта сайта

База идентификации.

База данных идентификации это простой текстовый файл, в котором хранится информация о ранее идентифицированных файлах. Формат данного текстового файла следующий:

 // CRC32-контрольная сумма файла документа длиной 11 символов ; размер  файла документа в байтах длиной 12 символов ; имя документа до конца строки.

  Пример:

  04227227224;000006445232;ИСКУССТВО ПРОГРАММИРОВАНИЯ.  КНУТ
  04235570299;000003018508;СИСТЕМНЫЙ АДМИНИСТРАТОР
  04273634548;000004054888;ADVANCED SIGNAL PROCESSING HANDBOOK

  CRC32 и длина файла хранятся в символьном виде и слева до своего размера заполняются символом 0.

     Расширение файла Базы идентификации  *.TXT . Как видно,   для нахождения названия файла мы используем связку: "контрольная сумма+длина файла". Это самый простой вариант идентификации, т.к. реализация функции вычисления контрольной суммы существует практически для всех сред программирования и  в некоторых операционных системах доступна через API. Если бы, разработчики популярных средств прослушивания спутникового потока  (Skynet, Skygraber, BetaSky, DataSky, Manna, MaCsKy и др.) захотели бы, они с легкостью могли бы добавить туда функцию идентификации файлов, которая использовала бы базу идентификации. Моя программа, которая использует данный формат базы идентификации называется FindNameDocs . Шло время, и с приобщением  к пиринговой  сети местного телекома, мне на глаза попались фрагменты "Коллекции технической литературы". Оказывается в МГУ при поддержке попечительского совета, идет очень важная работа по сбору и систематизации электронной библиотеки технической литературы. Однако, из-за проблем с копирайтом в настоящее время данная библиотека из Сети не доступна, что не мешает  найти ее  в пиринговых сетях.  Размер этой библиотеки примерно 100 ГБайт на 2006г. К этой библиотеке прилагается файл HTMLs.rar (размером около 8 МБайт), в котором мы можем найти файлы описывающие каждую из 16000 книг. Из этих файлов легко извлекаются:  название книги, ее автор(ы), размер файла книги и хэш файла книги. Хэш  в варианте  клиента "ОСЛА". Т. к. у меня нет полного варианта этой библиотеки, то и создать базу идентификации с использованием контрольной суммы я не могу. Однако, использовать для сортировки  информацию о 16000 книг, статей и журналов очень хочется. Пришлось написать вариант FindNameDocs где  в место контрольной суммы используется хэш Ослика. Этот вариант называется ED2K_FindDocs , файлы базы идентификации имеют расширение "*.hED2K". Для вычисления хеша по алгоритму клиента ED2K программа использует другую программу: ed2k_hash.exe . (Решение вынужденное и надеюсь временное). Рассмотрим фрагмент базы идентификации с хешами ослика:

df6fb217c94a96008ddc052af0d5ffcd;000004681823;Аронин Г.С. Практическая аэродинамика учебник для летного состава
3da24380ec8459df6a5a5b2c8358efb2;000003854447;Айсберг Е. Радио .. Это очень просто
bee00d2651f5eaffa45bd95a68be76b1;000004305935;Атлури С.Н. ред. Вычислительные методы в механике разрушения
 

   Очевидно что, отличие от прежней базы идентификации минимальны. Возможно в будущем я объединю эти базы в один файл и расширю поддержку типов хэшей. В общем случае, плодить варианты базы идентификации это очень, очень плохая практика. Сейчас я думаю над грамотным использованием той информации о файлах, которая хранится  в пиринговых сетях. Самый простой способ, это написать программу, которая в режиме реального времени обращается к серверу пиринговой сети (если такой есть) и запрашивает имя файла по его размеру и значению хэша. Но, как говорится: "просто не значит хорошо". Дело в том, что в пиринговых сетях имя файлам дают сами пользователи и зачастую не самое лучшее. Кроме того, один и тот же файл может иметь несколько вариантов имен и не факт, что сервер выдаст самое лучшее и полное имя. А в некоторых пиринговых сетях, вообще нет центрального сервера и информация о файлах, хранится у каждого пользователя локально. Чтобы найти что-то, надо запускать процедуру поиска, которая может занять сутки и более. Некоторые сервера вводят принудительный таймаут между запросами на поиск имени, приметно от 30 сек. и больше. В общем случае, лучше скачать сначала файлы с информацией о расшаренных файлах, у всех "жирных" пользователей, а потом уже из этих файлов создавать "черновую базу идентификации". Так база идентификации коллекции технической литературы на 16000 названий книг в упакованном виде занимает 744527 Байт., это значит, что на одну книгу в среднем приходится 47 байт. При размере библиотека в 100 Гбайт,  средний размер книги равен 6.25 Мбайт. Если мы захотим собрать библиотеку размером в 5 ТБайт (800000 книг) размер файла базы идентификации будет около 36 МБайт, что в общем-то по нынешним временам сущий пустяк. Ну а пока FindNameDocs и  ED2K_FindDocs не слились в единое целое советую их запускать по очереди.

Загрузить... варианты базы идентификации.

 

Новости Главная

Введение

Программы

Загрузка Карта сайта
Hosted by uCoz