The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Google открыл код FlatBuffers, библиотеки для эффективной сериализации данных

17.06.2014 10:52

Компания Google открыла под лицензией Apache 2 библиотеку FlatBuffers, предоставляющую средства для сериализации данных, отличающиеся высокой эффективностью работы с памятью. FlatBuffers позволяет напрямую обращаться к сериализированным данным, без их промежуточной распаковки и выделения дополнительных буферов. Код библиотеки написан на C++, но доступен и вариант для Java.

Бинарный формат сериализованных данных переносим между разными платформами и архитектурами и может быть использован как для записи в файлы, так и для передачи по сети. Формат близок к Protocol Buffers, но отличается возможностью прямого обращения к содержимому без отдельной стадии на парсинг и распаковку. Дополнительно предоставляются средства преобразования в бинарный формат из JSON-представления. В качестве областей применения библиотеки называются игры и ограниченные в потреблении памяти приложения. Поддерживается работа на широком спектре платформ, включая Android, Windows, OS X и Linux.

  1. Главная ссылка к новости (http://google-opensource.blogs...)
  2. OpenNews: Google опубликовал протокол обмена данными "Protocol Buffers"
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/40017-flatbuffers
Ключевые слова: flatbuffers, serialization
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Dcow (ok), 11:22, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что в сравнении с тем же Protocol Buffers от гугла?
     
     
  • 2.2, Аноним (-), 11:29, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Why not use Protocol Buffers, or .. ?

    Protocol Buffers is indeed relatively similar to FlatBuffers, with the primary difference being that FlatBuffers does not need a parsing/ unpacking step to a secondary representation before you can access data, often coupled with per-object memory allocation. The code is an order of magnitude bigger, too. Protocol Buffers has neither optional text import/export nor schema language features like unions.

     
     
  • 3.8, Аноним (-), 16:56, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Судя по всему, команда разработчиков FlatBuffers нашли в ProtocolBuffers фатальный недостаток: его написали не они :).
     
     
  • 4.14, Dcow (ok), 19:04, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Нуу, у нас проекте 70-80% времени это сериализация/десериализация....
    Так что может оно и быстрее.
    Надо глянуть какой код, сколько структуры занимают в сравнении, сколько время доступа к полям у класс....эх, где на все время то брать...
     
     
  • 5.21, Аноним (-), 00:02, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Нуу, у нас проекте 70-80% времени это сериализация/десериализация....

    Сурово. А что за проект такой? В смысле, чего можно делать для того чтобы тратить 70% на сериализацию?

     
     
  • 6.29, Dcow (ok), 14:46, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Просто пишем хороший код)
     
  • 4.15, dq0s4y71 (ok), 20:23, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    И то, и другое делал Гугль, вроде как...
     
     
  • 5.16, rob pike (?), 20:36, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Россиянин россиянину - друг, товарищ и брат.
     
  • 4.19, Аноним (-), 22:11, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    дерьмовее протобуфа трудно что-то придумать, там оверхед на каждом шагу. Единственный его плюс - оно есть и как-то работает.
     
     
  • 5.24, SprintSet (?), 01:05, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Пытались внедрить. Остались на JSON - у нас нет бинарей, а протобуф не удобен до жути. Пусть идет в гугль.
     
     
  • 6.26, Аноним (-), 02:10, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Пытались внедрить. Остались на JSON - у нас нет бинарей, а протобуф
    > не удобен до жути. Пусть идет в гугль.

    Парсинг и передача JSON оверхеднее даже протобуфа в разы. Так что видимо у вас не сильно много данных было.

     
  • 6.27, Аноним (-), 02:51, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Пытались внедрить. Остались на JSON - у нас нет бинарей, а протобуф
    > не удобен до жути. Пусть идет в гугль.

    Парсинг и передача JSON оверхеднее даже протобуфа в разы. Так что видимо у вас не сильно много данных было.

     
  • 6.30, жопка3 (?), 16:01, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А чем неудобен показался?
     
  • 6.32, Аноним (-), 19:56, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Аналог http://msgpack.org/
     
  • 5.31, жопка3 (?), 16:02, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > дерьмовее протобуфа трудно что-то придумать, там оверхед на каждом шагу. Единственный его
    > плюс - оно есть и как-то работает.

    А можно подробней об оверхеде по сравнению с JSON?

     

  • 1.3, vitalif (ok), 11:39, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гугл там что, сериализацией только и занимается? :-)
     
     
  • 2.18, Аноним (-), 21:42, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    сделали одно гогно, потом обнаружили что действительно сделали гогно. Пошли делать другое.
     
  • 2.25, SprintSet (?), 01:06, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Значит вы никогда не строили сервис-ориентированные системы под большой нагрузкой :))
     

  • 1.4, Ordu (ok), 11:57, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Гугл... Такой гугл:

    > For applications on Google Play that integrate this tool, usage is tracked. ... you are free to
    > remove the version string but we would appreciate if you would leave it in.

    Всё ему отследить надо.

     
     
  • 2.5, Аноним (-), 12:12, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Ну, а вы сомневались ? Гугл это практически АНБ, только АНБ денег не зарабатывает и работает по большей части на себя, но и немного на того дядю, но уже не из-за денег.
     
  • 2.9, Аноним (-), 16:58, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Всё ему отследить надо.

    Это еще что. Вы делаете в программе HTTP даунлоад. Приходит сервак гугли, забирает файл. И отдает вашей программе. Если захочет. Интересная платформа этот ваш ведроид - зонд на зонде и зондом погоняет. В смысле, гугл хочет знать что вы там качали. Даже если это посторонняя программа.

     
     
  • 3.10, Анон22 (?), 17:09, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пруфлинк пожалуйста
     
     
  • 4.11, Andrey Mitrofanov (?), 17:16, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Пруфлинк пожалуйста

    Он путает гугли то ли с сониевским, то ли с нокиевским "ускорителем мобильного интернета". Если я сам ничего не потаю, головка-то маленькая.

     
     
  • 5.13, Igel (??), 18:41, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    у гугля есть точно такой же мобильный "ускоритель".
    включается он правда в определенные фазы луны...
     
  • 5.23, Аноним (-), 00:13, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Он путает гугли

    Нет, не путает. К сожалению. Гугл таки обнаглел в зондостроении за пределами самых диких фантазий.

     
     
  • 6.28, Andrey Mitrofanov (?), 10:20, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, не путает. К сожалению. Гугл таки обнаглел в зондостроении за пределами
    > самых диких фантазий.

    Вы уже третий, кто не ответил на #10. Я подожду. ТОлько не про "ззонды вообще, а про ускорители интернетов от, да-а? Не стесняйтесь, оба трое.

     
  • 4.22, Аноним (-), 00:09, 18/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Пруфлинк пожалуйста

    Не получится: совершенно случайно обнаружено анализом логов. И логи я вам разумеется не дам.

    Могу сказать как сие выглядит: к user agent программы дописывается нечто типа "AppEngine-Google; (+http://code.google.com/appengine; appid: <идентификатор программы>)". Называется эта заподлянка как несложно догадаться AppEngine и используется чуть более чем половиной ведроидных программ при скачке файлов по HTTP. И гугл при этом *знает* что вы качали. Ибо приходит забирать файл именно гуглевый сервант, а вовсе и не ваша программа.

    Так что гугля имеет юзеров андроида в хвост и в гриву и делает это довольно фундаментально. Не знали? Вот, получите и распишитесь. Наверняка у них где-то есть описание как этот app engine работает.

     

  • 1.6, rob pike (?), 14:04, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Kenton Varda задолбался мейнтейнить протобуфы, ушёл (из Гугла) и запилил свой Cap-n-Proto.
    Wouter van Oortmerssen пришёл (в Гугл) и запилил свой Cap-n-Proto для быстрого обмена данных с игрушками потому что не нашёл в Cap-n-Proto опциональных полей, до юнионов не дочитал, а спросить - язык отсох, да и надо же как-то себя проявить на новом месте.
    А юнионы в протобуфы тоже потом добавили, но в опенсорс еще не выложили.
     
     
  • 2.17, rob pike (?), 21:11, 17/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Преимущества перед Cap-n-Proto, с точки зрения автора FlatBuffers:
    >We feel optionals have a lot of uses beyond just mere unions and forwards/backwards compatibility, however. Game objects can have a LOT of fields, many of which are often at their default value, and thus not stored on the wire. This gives significant compression. The zero-byte compression in Cap'n Proto is cool, but we prefer to not have to use additional buffers when reading. Optionals also give a lot of design freedom, i.e. you can add a field that you know is only needed for very few instances without fear of bloating your binaries, as an alternative to "subclassing", or indeed unions.
     

  • 1.12, Аноним (-), 17:17, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вот еще одна библиотека http://kentonv.github.io/capnproto/
     
  • 1.20, Аноним (-), 23:55, 17/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Код на джаве какой-то не очень... Мягко говоря. Наколеночное все.
     
     
  • 2.34, Аноним (-), 09:11, 22/06/2014 [^] [^^] [^^^] [ответить]  
  • +/
    По сравнению с кодом на С++, это еще по божески) А вообще руки нужно отбивать за такой код.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    A-Real
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру