Загрузка данных (файловая, торрент, API, SPARQL) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Загрузка данных (файловая, торрент, API, SPARQL)



В общем случае загрузить открытые данные с сайта просто: кликаете на ссылку, ищете скачанный файл на диске. На государственных порталах для удобства даже названия файлов стандартизованы: data, тире, дата создания набора, может быть 2014 год, тире structure, тире дата обновления структуры. После скачивания лучше переименовать во что-то более понятное, чтобы не потерять.

Открытые данные скачивают многие и помногу. Например, на портале Москвы за месяц скачали наборы 16 тысяч раз: по одному каждые три минуты. С data.gov.ru, вероятно, загружают чаще. Но поскольку наборы там небольшие — десятки и сотни килобайт — то проблем это не вызывает.

Теперь посмотрим на другой набор открытых данных: слепок базы OpenStreetMap, крупнейшего набора геоданных под открытой лицензией. Его размер — 45 гигабайт, и его после очередного обновления скачивают несколько раз в секунду. Разумеется, это большая нагрузка на провайдера, и нагрузка на канал скачивающего: пока загружается длинный файл, ни ролик с ютуба не посмотреть, ни программу обновить. А если вы на работе, то перегружаете этим всю корпоративную сеть, и готовьтесь к звонку от администратора.

Есть два способа умнее распорядиться каналом и снизить нагрузку на сервер. Первый — поставить менеджер закачек, например, Download Master. Обычно в окне менеджера есть кнопки ограничения пропускной способности канала: например, можно под скачивание отдать не весь, а только треть. Ждать придётся чуть дольше, но в процессе можно заниматься другими делами.

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

Самые популярные клиенты для скачивания файлов по протоколу torrent — это мюторрент и трансмишн. У них простой интерфейс, скачивание не сильно отличается от загрузки через браузер или менеджеры закачек. Разумеется, во всех торрент-клиентах тоже есть ограничители канала.

Продолжим про данные OpenStreetMap. Разумеется, очень немногие копаются в этом 40-гигабайтном файле. Зачем, когда можно запросить либо произвольный регион, либо объекты по фильтру? Для этого сервер предоставляет API, интерфейс получения данных. Это набор веб-адресов и правил их построения. Например, в портале открытых данных Москвы есть очень простой интерфейс, которому можно передать диапазон строк в выдаваемой таблице, и порядок сортировки. В более сложных интерфейсах можно, например, указать диапазон дат, или фильтровать данные по организации или району.

Формат построения запросов обычно различается от сайта к сайту, хотя их объединяет протокол REST. Нет смысла расшифровывать, суть же в том, что запрос на получение данных пишется в строке запроса — то есть, можно получить данные, просто написав определённым образом адрес в поле браузера, без дополнительных программ.

Существует один стандарт на запросы к данным, Open Data Protocol (сокращённо OData). Он определяет, как получить записи базы данных, как получить метаинформацию, и как изменять эту базу (что, конечно, в порталах открытых данных не позволено). Там несложный формат запросов, который позволяет получить данные из нужных таблиц по нужным критериям. Он описан на сайте odata.org, с примерами и ссылками на интерфейсы к открытым данным, на которых можно потренироваться.

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

Наконец, есть ещё один язык запросов: SPARQL («sparkle»). Он нужен для запросов по связанным данным в формате RDF, и поэтому существенно отличается от предыдущих способов: этот язык не императивный (то есть, не «выдай записи с 6 по 8»), а декларативный: то есть, вы перечисляете некий набор утверждений, где встречаются неизвестные, а сервер пытается вычислить на основе запроса значения неизвестных.

Здесь стоит напомнить принцип построения формата RDF: это набор утверждений из трёх частей: объект, предикат, субъект. В основе SPARQL — такие же утверждения. Например, чтобы найти даты рождения президентов России, нужно к гипотетической базе сделать запрос из следующих утверждений: икс — президент России, игрик — имя икс, икс родился в день зет, выдай список всех игрик (имён) и зет (дат). Дополняя набор инструкций, можно строить запросы любой сложности: например, самые популярные страны-производители автомобилей дороже пяти миллионов рублей, которые покупают чиновники, служащие более 30 лет.

Поддерживает запросы SPARQL, например, портал открытых данных data.gov.ru, но ввиду малого числа наборов в формате RDF (на сегодня их примерно один), пользы от этого немного. Самые интересные базы связанных данных, к которым можно обратиться по SPARQL, — это WikiData, на данных которой частично работает википедия, и DBPedia, которая большую часть данных взяла со страниц википедии (но не только). Лучшая обучающая презентация по этому языку запросов, на сайте w3.org, «SPARQL By Example» использует именно эту базу (и ещё базу NASA) для примеров и самостоятельной работы. На русском языке учебников, к сожалению, мало: семантические технологии пока остаются будущим, а не настоящим.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-27; просмотров: 135; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.76.51 (0.004 с.)