Описание тега avro
Apache Avro - это система сериализации данных.
Функции:
- Богатые структуры данных.
- Компактный, быстрый двоичный формат данных.
- Файл-контейнер для хранения постоянных данных.
- Вызов удаленной процедуры (RPC).
- Простая интеграция с динамическими языками. Генерация кода не требуется для чтения или записи файлов данных, а также для использования или реализации протоколов RPC. Генерация кода как дополнительная оптимизация, которую стоит реализовать только для языков со статической типизацией.
Схемы:
Avro полагается на схемы. Когда данные Avro считываются, всегда присутствует схема, использованная при их записи. Это позволяет записывать каждую базу данных без дополнительных затрат на значение, что делает сериализацию быстрой и небольшой. Это также облегчает использование динамических языков сценариев, поскольку данные вместе со схемой полностью самоописываются.
Когда данные Avro хранятся в файле, вместе с ним сохраняется его схема, так что файлы могут быть обработаны позже любой программой. Если программа, читающая данные, ожидает другую схему, это может быть легко разрешено, поскольку присутствуют обе схемы.
Когда Avro используется в RPC, клиент и сервер обмениваются схемами в рукопожатии соединения. (Это можно оптимизировать, чтобы для большинства вызовов схемы фактически не передавались.) Поскольку и клиент, и сервер имеют полную схему друг друга, соответствие между полями с одинаковыми именами, отсутствующими полями, дополнительными полями и т. Д. Может быть легко разрешено..
Схемы Avro определяются с помощью JSON. Это облегчает реализацию на языках, в которых уже есть библиотеки JSON.
Сравнение с другими системами:
Avro обеспечивает функциональность, аналогичную таким системам, как Thrift, Protocol Buffers и т. Д. Avro отличается от этих систем следующими фундаментальными аспектами.
- Динамическая типизация: Avro не требует создания кода. Данные всегда сопровождаются схемой, которая разрешает полную обработку этих данных без генерации кода, статических типов данных и т. Д. Это облегчает создание общих систем обработки данных и языков.
- Нетегированные данные: поскольку схема присутствует при чтении данных, требуется кодировать значительно меньше информации о типе с данными, что приводит к меньшему размеру сериализации.
- Нет идентификаторов полей, назначаемых вручную: при изменении схемы при обработке данных всегда присутствуют как старая, так и новая схема, поэтому различия могут быть устранены символически с использованием имен полей.
Доступные языки: c - C++ - C# - java - javascript - php - python - ruby
Официальный сайт: http://avro.apache.org/
Полезные ссылки:
- Документация
- Начало работы (Java)
- Начало работы (Python)
- Спецификация
- Документация по API
- IDL язык