zoukankan      html  css  js  c++  java
  • Avro Schema Evolution (avro schema演化,avro schema兼容性) 介绍

    Avro Schema Evolution

    schema evolution不知道中文官方翻译是什么,schema演化?进化?不管了,懂意思就好。本篇文章主要介绍一下Avro Schema进化后的一些兼容性问题。

    Schema Evolution有4种:

    Backward: 向后兼容,用新schema可以读取旧数据,有些字段没有数据,就用default值

    Forward: 向前兼容,用旧schema可以读取新数据,avro将忽略新加的字段

    Full: 全兼容,支持向前兼容,向后兼容

    Breaking: 不兼容

    1. Backward Compatible change

    Backward: 向后兼容,用新schema可以读取旧数据,有些字段没有数据,就用default

    • 由于有了默认值,我们可以使用新schema读取旧数据。如果字段不存在,Avro将使用默认值
    • 如果要向后兼容,新schema的新增栏位必须要有默认值

    2. Forward Compatible change

    • Forward: 向前兼容,用旧schema可以读取新数据,avro将忽略新加的字段
    • 如果要向前兼容,删掉的栏位必须要有默认值

     

     

    3. Fully Compatible change

    Full: 全兼容,支持向前兼容,向后兼容

    想要全兼容要做到以下两点:

    • 只添加有默认值的字段
    • 只移除有默认值的字段

    4. Not Compatible change

    下面的一些改变会导致不兼容:

    • 从枚举中添加/删除元素
    • 更改字段数据类型(例如:string à int)
    • 重命名必需的字段(字段没有默认值)

    编写Avro schema时的一些建议:

    1.Make your primary key required

    2.Give default values to all the fields that could be removed in the future

    3.Be very careful when using Enums as they can’t evolve over time

    4.Don’t rename fields. You can add aliases instead (other names)

    5.When evolving a schema, ALWAYS give default values

    6.When evolving a schema, NEVER delete a required field

  • 相关阅读:
    网页色彩搭配
    jquery富文本在线编辑器UEditor
    编写、部署、应用JavaBean
    图片存储构架学习
    JVM内存管理(一)
    同步or异步
    分库分表策略的可实现架构
    百万数据查询优化技巧三十则
    匿名内部类
    MySQL limit分页查询优化写法
  • 原文地址:https://www.cnblogs.com/fangjb/p/13305694.html
Copyright © 2011-2022 走看看