суббота, 16 марта 2013 г.

Пост 17. Сериализатор AVRO.

Доброго времени суток!

Сейчас я хочу рассказать Вам об AVRO сериализации.
Для начала предлагаю договориться о том, что такое сериализация. Вот выдержка из википедии:

Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации(структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Сериализация это процесс перевода структуры с поток битов. Где же может применяться сериализация/десериализация в NoSQL базах? Если Вы предположили, что при хранении value - вы совершенно правы! Иногда хочется положить в value какую то запись, которая хранила бы в себе более "осознанный" набор байт. Ну например, личная инормация человека. Можно хранить в виде XML или JSON и разбирать их на уровне приложения, тогда мы будем иметь что то вроде: {name:Ivan, surname: Petrov, age:33}... А если записей будет много? Тогда я буду хранить большое колличетво "лишней" информации:

/key1/ : {name: Ivan, surname: Petrov, age:33}
/key2/ : {name:Vasiliy, surname: Smirnov, age:32}
/key3/ : {name: Sergey, surname: Sidorov, age:40}
/key4/ : {name: Alexey, surname: Kuznethov, age:25}

Здорово было бы описать один раз какую то схему, а внутри хранить только указатели или разделители! Ну например вот так:

/key1/ : Ivan, : Petrov, :33
/key2/ : Vasiliy, Smirnov, 32
/key3/ : Sergey, Sidorov, 40
/key4/ : Alexey, Kuznethov,25

Так вот нечто подобное делает AVRO - это очень компактный протокол сериализации. На самом деле есть еще ряд причин использовать AVRO:

1) Возможность изменять схему. Ну тут как говорится ни отнять ни прибавить. Вы можете эволюционировать уже созданную схему данных
2) Быстрая десериализация (доступ к отдельным полям в данных) и компактное хранение (не хранятся теги - что значительно сокращает занимаемое пространство). Это как раз таки в копилку компактности
3) Динамическая типизация.

Итак, небольшой блок теории закончился, давайте посмотрим как это будет на практике в Oracle NoSQL Database!

+ напоминание - кто хочет получить виртуалку c примерами: пишите на oracle.nosql@gmail.com

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

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