可持续案例类序列化库

serium的Python项目详细描述


serium

固有地提供数据弹性的序列化库。 结构随时间演变。

这种弹性是通过提供 以保留版本信息的方式固有的可序列化,以及 在执行任务的同时动态无缝地迁移旧数据结构 反序列化。

这个库对数据结构演进采取的方法是 不同于许多其他序列化格式。而不是定义 协议级的演进(例如,添加新字段 空的、不推荐的字段、转换类型等),它定义了进化 在域级别。开发人员显式定义转换函数 在不同版本之间,基础结构按顺序使用这些功能 为应用程序代码提供每个对象的当前版本。 这种方法允许根据实际情况更改数据结构 业务/开发需求,不限于协议级别 变化:

与此方法相关的一个概念是,代码库本身充当 "模式存储库",保存所有"实时版本"的结构。 结合转换功能,可以管理 使用标准代码工具和实践来改进数据。

这个库的初始实现是在python中,它是 动态类型。这需要对 类型化的case类,在其他语言中可能是 由语言本身提供。

主要功能

  • 严格类型的、不可变的、嵌套的case类(包括递归的 定义)
  • 支持案例类版本管理和强大的模式 代码库内部的演进
  • 固有的序列化功能(目前仅限json)
  • 读取时动态数据迁移
  • 支持子类型-用于模拟 序列化数据。超类型可以包含"选择器字段",其中 表示另一个字段的实际类型,与 库的版本管理功能。

设计假设

  • CPU/内存比开发人员花费的时间和时间更便宜 功能
  • 从任何维护/迁移工作中分离特性发布是 好事
  • 在许多现实中,数据流的逻辑演化是必需的。 世界用例
  • 代码库和编程语言可以作为 "分布式模式存储库",利用标准代码 管理工具
  • 在许多情况下,迁移逻辑相对简单,而且成本 在读取期间应用它(CPU+延迟)如果它意味着更少的话是值得的 生产障碍

由于这些设计假设,库当前已优化 主要是为了便于开发和迭代,以及 开发人员的工作和devops的工作。显然,一旦这些概念 足够稳定,速度/空间优化将成为焦点。

未来计划

  • 至少一个严格类型的实现(例如scala)
  • 其他序列化格式
  • 较高级别的类型(如URL、电话号码等)
  • 作为类型定义的一部分,对数据进行更高级别的约束 (例如有效的URL、正值、非空、范围内等)
  • 子类型的动态搜索范围
  • 创建idl或重用现有idl,如protobuf
  • 类型化枚举(当前仅为常规字符串)
  • 键入的时间戳(当前仅为整数或长)
  • 不太冗长的语法

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java网络视图。loadData不适用于Android 9.0(API29)   安卓“ArrayAdapter要求资源ID为TextView”XML问题   Java压缩文件:有限制吗?   java如何在recyclerview中单击项时显示对话框   TextField中的if语句值抛出java。lang.NumberFormatException错误   java文件通过服务器ip上传,但不从域名上传   java HttpRequestBase如何打印请求及其所有数据   java如何实现JPanel的等宽等高   java为Struts 2动态填充jqGrid select   用于替换xml字符串中的字符串的正则表达式   如何防止Java代码中的整数溢出?   java如何在SpringBoot 2中禁用安全性?   java出现读入文件问题,并将其设置为变量