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

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, и др.).

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


x

Ещё Hi-Tech Интересное!

[Перевод] Создатели ботнета Mirai теперь сражаются с преступностью на стороне ФБР

Три подзащитных студента, стоявшие за ботнетом Mirai – онлайн-инструментом, учинившим разрушения по всему интернету осенью 2016 при помощи мощнейших распределённых атак на отказ от обслуживания – в четверг предстанут перед судом на Аляске и попросят судью вынести новый приговор: они ...

[Из песочницы] RESS — Новая архитектура для мобильных приложений

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