Ivan Begtin
8.07K subscribers
1.47K photos
3 videos
99 files
4.21K links
I write about Open Data, Data Engineering, Government, Privacy and Data Preservation and other gov and tech stuff
Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech

Contact @NMBabina for ads proposals
Download Telegram
Свежая картинка по продуктам с открытым кодом в области дата инженерии.

Подробнее о ней в блоге её автора на Substack [1].

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

Вот в этой картинке, например, нет SODA для data quality, в платформе метаданных зачем-то CKAN, хотя он про другое.

Я, кстати, несколько по другому систематизирую инструменты с открытым кодом. Когда-то просто стал делать закладки в Github по категориям [2] и там много их, больше 30 списков.

А заодно для тех кто интересуется разного рода экзотическим открытым кодом. Markdowndb [3] наглядная реализация принципов "всё таблица" и "всё SQL". Это фреймворк превращающий документы с разметкой Markdown в SQL базу данных к которой можно делать запросы к содержимому этих файлов с фильтрацией по тэгам, файлам и тд. Внутри используют Sqlite, в гайдах рассказывают как заменить статические файлы на эту базу в статических сайтах.

Ссылки:
[1] https://practicaldataengineering.substack.com/p/open-source-data-engineering-landscape
[2] https://github.com/ivbeg?tab=stars
[3] https://markdowndb.com

#opensource #data #dataengineering #datatools
Интересные open source проекты про данные и не только:
- pipelined query language [1] - Спецификация и реализация компилятора из языка PQL в диалекты SDQL. Идеологически вдохновлён Kusto Query Language [2] от Microsoft, выглядит любопытно, особенно если проект проживёт долго и будет применяться.
- FileQL [3] - очередная реализация принципа "всё SQL", обёртка для SQL запросов в отношении операций с файловой системой.
- Magika [4] - программный модуль для Python и утилита по определению типа файла на основе модели обученной с помощью ML. Обещают лучшую точность и всё такое. Фактически замена программы magic для аналогичных целей в Unix/Linux.
- Gatus [5] продвинутый монитор доступности и статуса серверов/сервисов, ориентирован на разработчиков, управляется через YAML файлы конфигурации
- SSH3 [6] эволюция протокола SSH2 для дистанционного подключения к терминалам на удалённых серверах. Обещают большую производительность и большую безопасность. Может быть полезно для проксирования трафика тем кому это нужно.

Ссылки:
[1] https://github.com/runreveal/pql
[2] https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/
[3] https://github.com/AmrDeveloper/FileQL
[4] https://github.com/google/magika
[5] https://github.com/google/magika
[6] https://github.com/francoismichel/ssh3

#opensource #datatools
К вопросу о современных дата продуктах, один из способов работы с данными сейчас - это комбинация DuckDB и Polars. Например, DuckDB так стремительно набирает популярность что я не удивлюсь что скоро данные начнут распространять и публиковать как базы DuckDB, примерно как много лет назад публиковали DBF файлы и файлы MS Access [1] и также как иногда сейчас публикуют sqlite файлы [2].

В общем и целом за этим хайпом есть реальные продукты которые стоит посмотреть своими глазами.


P.S. Картинка из блога Christophe Blefari

Ссылки:
[1] https://catalog.data.gov/dataset/municipal-fiscal-indicators-2014-2018-ms-access-database
[2] https://catalog.data.gov/dataset/x-ray-properties-database-in-sqlite-format

#opensource #datatools
Те кто видел мою презентацию про Dateno могли обратить внимание что я упоминал там про семантические типы данных, о которых неоднократно тут писал и о которых всегда полезно напомнить.

Семантические типы данных - это характеристики колонок в таблицах/полей в JSON и тд. которые определяют их смысловое наполнение. То есть если тип поля: строка, число и тд. определяют способ хранения и тип данных, то семантический тип определяет смысл. Например, строка может быть идентификатором организации или UUID, или датой или кодом продукта. Для всего это я когда-то написал утилиту metacrafter [1] и библиотеку для Python, которая умеет сканировать файл или таблицу в СУБД и выдавать отчёт по семантическим типам привязывая их к единому реестру. Реестр довольно обширный [2] по самым разным направлениям, а сама утилита включает набор простых правил описываемых в YAML нотации.

Эти правила бывают, как очень простые, так и довольно сложные, с разной вероятностью ложных срабатываний, но, в целом, довольно точно работающие.

Собственно не секрет что основным источником выявления правил были порталы открытых данных UK, USA, России, Франции и многих других стран.

А теперь осталось добавить их в фильтрацию в наш поисковик по данным. Это не так просто как кажется, потому что правила есть пока только для некоторых стран/языков, потому что много ошибок в первичных данных, потому что данных много, но, несомненно очень интересно.

Если, кстати, вы обогащаете внутренние каталоги данных дополнительными метаданными, то metacrafter может оказаться очень полезной штукой. Она создавалась изначально для этого и может помочь найти персональные данные в самых неожиданных местах.

Ссылки:
[1] https://github.com/apicrafter/metacrafter
[2] https://registry.apicrafter.io/

#opendata #opensource #data #datatools
Казалось бы небольшая, но весьма интересная новость о том что проект chDB присоединяется к Clickhouse [1].

chDB [2] - это внедряемая OLAP база на движке Clickhouse, фактически прямой конкурент DuckDb и, как и DuckDb, замена Sqlite.

Казалось бы, ну что тут такого, а вот DuckDb сейчас одно и наиболее заметных явлений в дата-мире и внедряемая база это очень удобная штука. Многие датасеты может оказаться что удобнее распространять в виде такой базы данных, благо что она с открытым кодом.

И вот chDB это такое же как DuckDb по логике, но движок Clickhouse может быть поинтереснее. В треде на ycombinator [3] есть интересные ссылки на эту тему, например, сравнение clickhouse-local и DuckDb [4] и clickhouse-local там был особенно крут на больших объёмах данных. Можно предположить что автор chDb переходит в clickhouse прокачать chDB также как сейчас прокачано DuckDb.

В общем и целом новость оптимистичная, больше embedded баз данных разных и полезных.

Ссылки:
[1] https://auxten.com/chdb-is-joining-clickhouse/
[2] https://www.chdb.io/
[3] https://news.ycombinator.com/item?id=37985005
[4] https://www.vantage.sh/blog/clickhouse-local-vs-duckdb

#data #opensource #databases #datatools
К вопросу о том почему я лично пишу про Polars, DuckDb, а теперь ещё и присматриваюсь к chDb, потому что в моей работе есть частые задачи с очисткой и обработкой данных. В принципе, чем бы я в жизни не занимался, читал лекции, делал презентации, программировал и тд., всегда есть задача чистки данных.

Есть много способов чистить данные с помощью кода, есть хороший инструмент OpenRefine [1] известный многим кто с открытыми данными работает. Но, честно скажу, в плане скорости, но не удобства, к примеру, DuckDB бьёт все рекорды. Главный недостаток - отсутствие удобного UI аналогичного OpenRefine или то что в OpenRefine нельзя, к примеру, заменить его движок на DuckDb.

В остальном это реально очень быстро. И работать с локально с многогигабайтными датасетами и в миллионы и десятки миллионов записей - вполне реально. Для сравнения, OpenRefine у меня едва-едва тянет базу в 100 тысяч записей в 680 MB.

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

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

Такие инструменты хорошо встраиваются как ядро более прикладных дата-продуктов.

Ссылки:
[1] https://openrefine.org

#data #datatools #thoughts #duckdb #openrefine
Полезные ссылки про данные, технологии и не только:
- Про автоматизированное видеонаблюдение на олимпиаде в Париже [1]. Под пэйволом, но в общем-то и так понятно что использует положение об экспериментах в законе об Олимпийских играх во Франции [2]
- Devin, the first AI software engineer [3] AI помощник для программистов от Cognition. Ключевая фишка - он лучше умеет самостоятельно решать Github Issues, успешно около 13.86%. Не учитесь дети на программистов, скоро они останутся без работы! Шутка, а не шутка то что джуниорам придётся нелегко.
- Grok от X.AI (Элон Маск) в открытом коде [4] пока оставлю без комментариев, пусть его потестят и расскажут те кто тестят GPT-подобные модели на регулярной основе
- Croissant: a metadata format for ML-ready datasets [5] стандарт метаданных для ML датасетов. Теперь поддерживается основными платформами Kaggle, HuggingFace и OpenML. Google обещают поддерживать его в Google Dataset Search. Подробнее в спецификации тут [6]


Ссылки:
[1] https://www.lemonde.fr/en/pixels/article/2024/03/03/paris-olympics-2024-testing-on-algorithmic-video-surveillance-of-the-games-begins_6580505_13.html
[2] https://www.lemonde.fr/en/sports/article/2023/04/13/paris-2024-french-parliament-approves-the-olympic-bill-and-its-video-surveillance-flagship-project_6022755_9.html
[3] https://twitter.com/cognition_labs/status/1767548763134964000
[4] https://github.com/xai-org/grok-1
[5] https://blog.research.google/2024/03/croissant-metadata-format-for-ml-ready.html
[6] https://mlcommons.org/working-groups/data/croissant/

#data #datatools #privacy #ml #opendata #ai
One Trillion Row Challenge - совершенно замечательный по задумке конкурс по работе с датасетом в триллион строк [1] для тех кто работает большими, очень большими и очень-очень большими (шутка) данными на обычном железе или во временно арендуемом облаке, а не на мейнфреймах. Конкурс в том чтобы подсчитать минимальную, среднюю и максимальную температуру по погодным станциям отсортированным по алфавиту. Данные хранятся в 100 тысячах Parquet файлах, по 10 миллионов строк в каждом, а заявки отправляются через открытие issue в репозитории конкурса [2].

Сам конкурс - это продолжение другого конкурса, One Billion Row Challenge [3], где данных было только 1 миллиард, и принимались решения только в виде Java кода.

Решения можно отправлять в дискуссиях на Github в репозитории [4].

Конкурс интересный тем что по многим продуктам не-неожиданно, но подтверждённо очень высокая производительность. Например, в Clickhouse SQL задача с 1 миллиардом строк решается за менее чем 7.5 секунд [5] и у них же 3 минуты на конкурс в 1 триллион строк [6] и пишут что за $0.56, это совсем мало если что.

А в оригинальном посте Dask в облаке Coiled отрабатывает за 8.5 минут или $3.26 в стоимости Amazon Cloud, что тоже очень мало.

Хороший бенчмарк, в ситуации интенсивной конкуренции между высокопроизводительными продуктами по обработке данных, он весьма полезен.

Ссылки:
[1] https://docs.coiled.io/blog/1trc.html
[2] https://github.com/coiled/1trc
[3] https://www.morling.dev/blog/one-billion-row-challenge/
[4] https://github.com/gunnarmorling/1brc/discussions
[5] https://github.com/gunnarmorling/1brc/discussions/80
[6] https://clickhouse.com/blog/clickhouse-1-trillion-row-challenge

#data #datasets #opensource #datatools
Я регулярно пишу про такое явление как датацентричное мышление "что угодно как таблица" и в более узком звучании "что-угодно как SQL". Причём последнее попадается всё чаще и всё чаще всё то ранее было доступно каким-то другим образом через API или в иной специфической форме доступно как таблицы.

Из последнего, sqlelf, это программная библиотека и утилита превращающая метаданные из исполняемых Linux файлов в базу Sqlite и позволяют проделывать все дальнейшие операции по чтению этих метаданных из SQL таблиц. Удобно для всех кто занимается форенсикой под Unix-like системы.

Из похожего, несколько лет назад я делал утилиту metawarc, индексирует содержание веб-архивов в формате WARC и создаёт локальную Sqlite базу с результатами. Что позволяет сильно ускорить задачи по подсчёту статистики, экспорту файлов из архива (архивы бывают большие и это важна задача) и многое другое. Единственное что я не сделал - это там нет SQL интерфейса, хотя добавить такую команду и примеры это дело пары часов.

Похожий код у меня есть для HTML страниц, он превращает дерево HTML в плоскую таблицу с дополнительным обсчётом ряда параметров. Я его всё подумывал опубликовать и возможно что база в памяти это решение. Возможно, потому сколько я не пытался не удаётся сильно уменьшить размеры таблицы тэгов. Она выходит больше оригинального файла от 7 до 21 раза, это без использования СУБД внутри, только размер pandas Dataframe.

Возвращаясь к "что угодно как SQL", я в феврале прошлого года приводил много примеров такого подхода, когда SQL синтаксис и интерфейс создаются для работы с текстовыми файлами, репозиториями Git, базой контейнеров для Docker и тд.

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

Аналогично для многих других сервисов и продуктов которые сейчас интегрируются через ETL и ELT костыли.

А сама идея "что-угодно как SQL" может развиваться ещё применительно много к чему. К файловой системе, к реестру Windows, к работе с Excel/ODS файлами, к работе с онлайн таблицами (типа Google Sheets), к вебсайтам и ещё много к чему.

#thoughts #data #datatools #sql #everythingisdata
В рубрике как это устроено у них каталог научных данных SPARC [1] посвящённый исследованиям тела и мозга. Является результатом совместного проекта нескольких исследовательских центров в США.

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

Отличается тем что данные, в основном, большого объёма и файлы до 5GB можно скачать бесплатно, а файлы большего размера только через Amazon AWS или через сервис Osparc [2] по запросу.

На портале есть уникальная фича, визуализация датасетов [3] с помощью утилиты SDS Viewer, вот, пример [4]

Ссылки:
[1] https://sparc.science
[2] https://osparc.io/
[3] https://metacell.github.io/sds-viewer/
[4] https://metacell.github.io/sds-viewer/?doi=10.26275%2Fodx3-c5cv

#opendata #datacatalogs #datatools #data #brain #body #datasets