...

понедельник, 5 марта 2018 г.

MyDataSpace — сервис публикации данных

image

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

Очевидно, что ждать, когда государственные органы начнут публиковать данные в готовом для использования виде, не имеет смысла. К тому же открытые данные не ограничиваются только государственными данными.

Поэтому представляю вашему вниманию проект MyDataSpace, который призван сделать открытые данные более доступными всем желающим.

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

Вот основные возможности сервиса:


  • Любой желающий может опубликовать данные бесплатно
  • Опубликованные данные доступны всем
  • Лайки и комментарии
  • Поиск по репозиториям данных: полнотекстовый поиск, хештеги, категории, сортировка по популярности, фильтрация по источникам
  • Визуализация данных: карты, графики, таблицы, интеграция с Codepen
  • Импорт данных из файлов различных форматов (CSV, XLS, XML, ODT, JSON и др.)
  • API, который позволяет сделать с данными практически всё что угодно
  • Доступ к данным через WebSocket, уведомления об изменении данных в реальном времени
  • Выполнение пользовательского JavaScript на сервере по расписанию
  • Хранение файлов (автоматическое создание превьюшек разных размеров для картинок)
  • Возможность создать веб-сайт с адресом имя-набора-данных.myda.space
  • Древовидная структура данных
  • Версионирование данных
  • Авторизация через социальные сети

Теперь подробнее по некоторым пунктам.


Импорт данных

Веб-интерфейс для импорта реализован на базе OpenRefine. Это инструмент для очистки наборов данных и для выполнения сложных операций с данными. У него есть свой язык GREL похожий на формумы Exel и OpenOffice.

OpenRefine сложен в освоении, зато имеет открытый исходный код и безграничные возможности по обработке данных разных форматов – JSON, JSONL, XML. Также от позволяет импортировать данные из ODT, XLS, XLSX и даже из Google Docs.

Из недостатков можно отметить то, что OpenRefine загружает все данные в память единовременно и это ограничивает размер импортируемого через него файла. Но для импорта больших файлов (> 500мб) есть API.


Древовидная структура данных

В отличие от аналогов таких как data.word или Firebase, данные хранятся в древовидном виде. К каждому элементу данных можно обратиться по абсолютному пути, как к файлу в файловой системе. Например, так можно узнать стоимость биткойна на бирже WEX 5 марта 2018 года в 14:45 (по UTC):

https://api.mydataspace.net/v1/entities?root=exchange_rates&path=btc_usd/wex/2018-03-05_14-45

Все дополнительные сервисы являются частью этого дерева. Благодаря этому у нас есть единый API для чтения/изменения данных, добавления задач, загрузки файлов и создания визуализаций.


API

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


  • Полнотекстовый поиск
  • Сортировка и фильтрация по любым полям
  • Группировка по геокординатам, временным интервалам и др.
  • Фасеты (фасет – это список значений указанного поля с указанием количества документов с этим значением поля, пример – панель фильтров на сайте МВидео или DNS).

Данные хранятся в множестве шардов MySQL и индексируются в ElasticSearch. Так-как Elastic используется только как индекс, мы можем легко мигрировать на новые версии, менять маппинги не боясь потерять данные и не останавливая работу сервиса.

API доступен в 2 вариантах:


  • RESTful API
  • WebSocket API

По возможностям они одинаковые, за исключением того, что для WebSocket есть SDK и он позволяет получать уведомления об изменении интересующих вас данных в реальном времени. Благодаря чему возможно сделать, например, такое:


Версионирование данных

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


Выполнение пользовательского JavaScript на сервере

Пользователи могут писать небольшие программы на JavaScript, которые будут выполняться по расписанию (раз в час, сутки, неделю, месяц) на сервере. Такие программы полезны для обновления данных из удаленного источника.

Программа на сервере выполняется в песочнице как в браузере (можно, например, подключить jQuery), это позволяет отлаживать программу непосредственно в вашем браузере перед тем как отправить её на выполнение на сервер.

Так как на сервере используется nodejs 8+, пользователю доступны последние фичи JavaScript (классы, async/await, и др.).

Пост уже получится достаточно большой, так что продолжение следует.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий